gfloyd.m

来自「本源程序为matlab文件」· M 代码 · 共 62 行

M
62
字号
function [result,path,b,d]=gfloyd(a)
%a=[8 3 3 6 8 9 8 5 8 8 3 7 5 10 7 8]; 
c=[  0    a(1)  a(1)  a(1)  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100;
    -100    0   -100  -100  a(2)  a(2)  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100;
    -100  -100    0   -100  -100  -100  -100  -100  -100  a(3)  a(3)  -100  -100  -100  -100  -100;
    -100  -100  -100    0   -100  -100  a(4)  a(4)  -100  -100  -100  -100  -100  -100  -100  -100;
    -100  -100  -100  -100    0   -100  -100  -100  a(5)  -100  -100  a(5)  a(5)  -100  -100  -100;
    -100  -100  -100  -100  -100    0   -100  -100  -100  a(6)  a(6)  -100  -100  -100  -100  -100;
    -100  -100  -100  -100  -100  -100    0   -100  -100  a(7)  a(7)  -100  -100  -100  -100  -100;
    -100  -100  -100  -100  -100  -100  -100    0   -100  -100  -100  -100  -100  -100  a(8)  -100;
    -100  -100  -100  -100  -100  -100  -100  -100    0   a(9)  a(9)  -100  -100  -100  -100  -100;
    -100  -100  -100  -100  -100  -100  -100  -100  -100    0   -100  -100  -100  a(10) -100  -100;
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0   -100  -100  -100  a(11) -100;
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0   -100  -100  -100  a(12);
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0   a(13) -100  -100;
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0   -100  a(14);
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0   a(15);
    -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100  -100    0  ;];
d=[ 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;
    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16;];
for i=1:16
    for j=1:16
        for k=1:16
            if c(i,j)+c(j,k)>0
                if c(i,j)+c(j,k)>c(i,k)
                    c(i,k)=c(i,j)+c(j,k);
                    d(i,k)=j;
                end
            end
        end
    end
end
b=c;
l=1;
r=16;
path=zeros(1,16);
path(l)=l;
path(r)=r;
while d(l,r)~=r
    m=d(l,r);
    path(m)=m;
    if d(l,m)~=m
        r=m;
    else
        l=m;
    end
end
result=c(1,16)+a(16);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?