數模(05)---圖論模型(Floyd算法)

Floyd算法思想

在這裏插入圖片描述

Floyd算法matlab源碼

        根據算法思想,可以編寫Floyd算法的matlab程序如下:

tulun2.m

a = [0,50,inf,40,25,10;
    50,0,15,20,inf,25;
    inf,15,0,10,20,inf;
    40,20,10,0,10,25;
    25,inf,20,10,0,55;
    10,25,inf,25,55,0];
[D,path]=floyd(a)

floyd.m

function [D,path,min1,path1]=floyd(a,start,terminal)
D=a;n=size(D,1);path=zeros(n,n);
for i=1:n
    for j=1:n
        if D(i,j)~=inf
            path(i,j)=j;
        end,
    end,
end
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
if nargin==3
    min1=D(start,terminal);
    m(1)=start;
    i=1;
    path1=[ ]; 
    while path(m(i),terminal)~=terminal
        k=i+1;
        m(k)=path(m(i),terminal);
        i=i+1;
    end
    m(i+1)=terminal;
    path1=m;
end

        注意:修改程序,就只要把tulun2.m程序的鄰接矩陣換一下即可。

Floyd算法應用舉例

在這裏插入圖片描述

  • 求解一點到另一點的最短距離和路徑,根據Floyd算法的matlab代碼。只需要將帶權鄰接矩陣作爲代碼的輸入,就可以求得一點到另一點的最短距離和路徑,結果如下:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章