【最短路】求最大期望容量路的算法及其matlab实现
内容来源:《图论算法及其matlab实现》(北京航空航天出版社)
P36
代码:
1 %最大期望容量路的算法 2 function [pw,f]=efpathf(P,C) 3 4 f1=0; 5 f=0; 6 k=1; 7 while f1==0&k<100 8 [pw1 pt f1]=p_pathf(P);%计算一条最大可靠路 9 if f1==0 10 c1=inf; 11 %计算路的容量 12 for i=1:(length(pw1)-1) 13 c2=C(pw1(i),pw1(i+1)); 14 if c1>c2 15 c1=c2; 16 end 17 end 18 ft=c1*pt;%计算路的期望容量 19 20 %步骤2 21 C(C<c1)=0; 22 P(C<c1)=0; 23 %步骤3 24 if ft>f 25 f=ft; 26 pw=pw1; 27 end 28 k=k+1; %在一定循环次数内进行计算,防止发生死循环 29 end 30 end
检验一下:
P=[1 0.8 0 0 0.2; 0.4 1 0.7 0 0; 0 0.8 1 0.5 0; 0.6 0 0 1 0.4; 0.3 0 0.7 0.5 1]; C=[inf 2 0 0 10; 3 inf 4 0 0; 0 6 inf 3 0; 8 0 0 inf 5; 2 inf 8 5 inf]; [pw,f]=efpathf(P,C)
运行结果:
pw = 1 5 f = 2