matlab floyd 算法注释

matlab floyd 算法注释,第1张

A矩阵是邻接矩阵,对角线上为o,其余位置数字表示的是两点之间距离,比如A(1,2)=2,表示从第一个点到第二个点的距离为2.inf是无穷谨禅并大的意思,这里表示没有直接沟通这两点的路。

n=length(D)设定n为D矩阵的长度。

接下来的两重循环,得到的R矩阵是n*n的矩阵,它每个数据表示的是路径,比如:R(1,3)=1表示路径为:1-1-3.这里是初始化路径了。

后面的三重循环是floyd算法的关键所在,就是更新路线了。里面的那个判断指的是:

假设有祥迹3个点袭斗,1

2

3;如果我从1-2-3之间总距离小于1-3的距离,那么我R(1,3)=2;这就是选取更近的路线了。

最后的两个判断是为了不让曾经走过的点再次被遍历。就是不回头的意思了,这个一般都可以忽略了,你照打上去就是了。

不知道这样的解释你是否满意。

这是顷败带一个我写的Floyd算法的程序。w是图的邻接矩阵需要事先输入并保存在工作空间中,调用方法为:[D,path]=floyd(w)。给出的结果D为路径的邻接矩阵,path为路径所经过的端点顺序。

程序为:

function [D,path]=floyd(w)

%D R a

n=size(w,1)

%设初值

D=w

path=zeros(n)

for i=1:n

  for j=1:n

      if D(i,j)~=inf

          path(i,j)=j

      end

  end

end

%迭代,更新D path

for k=1:n

  for i=1:n

     for j=1:n

        if D(i,k)+D(k,j)<D(i,j)

        枯闷   D(i,j)=D(i,k)+D(k,j)

           path(i,j)=path(i,k)

        end

  雀芦   end

  end

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12450750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存