第一范文网 - 专业文章范例文档资料分享平台

MATLAB实现Dijkstra和Floyd算法

来源:用户分享 时间:2025/11/23 0:10:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

function [mydistance,mypath]=mydijkstra(a,sb,db);

% 从起点sb到终点db通用的Dijskstra标号算法程序如下: %输入:a——邻接矩阵,a(i,j) (可以是有向值) %sb——起点的标号 db——终点的标号

%输出:mydistance——最短路的距离 mypath——最短路的路径 n=size(a,1); visited(1:n)=0;

distance(1:n)=inf; distance(sb)=0; %起点到终点的距离的初始化 visited(sb)=1; u=sb %u为最新的p标号的顶点 parent(1:n)=0; %前 驱顶点的初始化 for i=1:n-1

id=find(visited==0); %查找未被标号的顶点 for v=id

if a(u,v)+distance(u)

distance(v)=distance(u)+a(u,v); % 修改标号值 parent(v)=u; end end

temp=distance;

temp(visited==1)=inf; %已标号点的距离换成无穷

[t,u]=min(temp); %找标号值最小的顶点,返回每一列的最小值u(i)及其对应的列标t(i) visited(u)=1; %标记已经标号的顶点 end

mypath=[];

if parent(db)~=0 %如果存在路 t=db;mypath=[db]; while t~=sb

p=parent(t);

mypath=[p mypath]; t=p; end end

mydistance=distance(db);

function h=Floyd(w,MAX) %w为此图的距离矩阵

%MAX是数据输入时的∞的实际值 len=length(w);

%Floyd算法具体实现过程 for i=1:len for j=1:len

if j==i || w(j,i)==MAX continue; end

for k=1:len

if k==i || w(j,i)==MAX continue; end

if w(j,i)+w(i,k)

搜索更多关于: MATLAB实现Dijkstra和Floyd算法 的文档
MATLAB实现Dijkstra和Floyd算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9ibkq0vtda3gzju6vsv034ka295j7z00cud_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top