动态规划求最短路

运行例子为清华大学运筹学第四版本科版P155例7-1

clc;clear all
M=100
A{1}=[5,3]
A{2}=[1 3 6 M;M 8 7 6]
A{3}=[6 8 M;3 5 M;M 3 3;M 8 4]
A{4}=[2 2 M;M 1 2;M 3 3]
A{5}=[3 5;5 2;6 6]
A{6}=[4,3]'
B{6}=A{6}
for i=5:-1:1
    [B{i},index]=min(A{i}+B{i+1}',[],2)
    p{i}=index
end
path(1)=p{1}
for i=2:5
     path(i)=p{i}(path(i-1))
end
disp("最短路长")
disp(B{1})
disp("最短路")
disp(path)

运行结果

最短路长
    18

最短路
     1     2     1     2     2

注:能够看出最短路为A-B1-C2-D1-E2-F2-Gspa

运行例子为清华大学运筹学第四版本科版P197做业7.2

clc;clear all
M=100
A{1}=[20 40 30]
A{2}=[70 40 60;30 20 40;40 10 50]
A{3}=[10 40;60 30;30 30]
A{4}=[30 40]'
B{4}=A{4}
for i=3:-1:1
    [B{i},index]=min(A{i}+B{i+1}',[],2)
    p{i}=index
end
path(1)=p{1}
for i=2:3
     path(i)=p{i}(path(i-1))
end
disp("最短路长")
disp(B{1})
disp("最短路")
disp(path)

运行结果

最短路长
   110

最短路
     2     1     1

注:能够看出最短路为A-B2-C1-D1-Eblog

相关文章
相关标签/搜索