数学建模社区-数学中国

标题: Floryd算法求解惑 [打印本页]

作者: shuidishenyu    时间: 2012-8-2 21:05
标题: Floryd算法求解惑
    在学习建模的过程中遇到一个关于floryd算法的问题,就是floryd所解出的结果并不一定能得出所有的结果。但自己无法求证,求正解。下面是一个例子:
! h% z9 I; m% T- @' H6 j) g* d    例13.2.某公司在六个城市 中有分公司,从 到 的直接航程票价记在下述矩阵的 位置上。( 表示无直接航路),请帮助该公司设计一张城市 到其它城市间的票价最便宜的路线图。1 m8 i: m8 c7 r) @+ l' C6 A' W
                         0    50    inf    40    25    10
5 L3 ^: ]7 f# H1 C                         50    0    15    20    inf    25 3 z% z: w7 S, X/ j: D$ T1 f7 c1 k
                         inf    15    0    10    20    inf
- f+ I. `! P% H0 M4 C1 e# B                         40    20    10    0    10    25
% M! ^; @3 r7 f* j& g  q' [                         25    inf    20    10    0    55
8 r* e: _+ e; u7 ^7 g9 d* o$ e                        10    25    inf    25    55    0
; A3 [0 A- H, k& c: w1 t! U+ s
* z. k, p/ b& y. L& X/ Z    弗洛伊德算法:
( C* F6 H4 D, g& O" G$ j4 w% l程序如下:1 a1 @% }) n) a) n
clear;
5 H% u" {6 d( Y( J; ~clc;
: K  Z5 ]. H" r9 o3 yM=10000;7 w6 P$ H' ]( y& {/ P2 H! S; _
a(1,:)=[0,50,M,40,25,10];. p1 N5 @, O/ m2 B' D+ w: M9 B
a(2,:)=[zeros(1,2),15,20,M,25];/ s* H9 `- I* X: u
a(3,:)=[zeros(1,3),10,20,M];
3 s- I8 O) u$ g- h( |a(4,:)=[zeros(1,4),10,25];
" S" c- M3 [" Ta(5,:)=[zeros(1,5),55];0 I. R) P* P. B* \6 Y9 m
a(6,:)=zeros(1,6);8 _" I5 k% `+ O9 ^
b=a+a';path=zeros(length(b));2 }6 u  `7 s8 \" _  c7 J
for k=1:6
8 |! e* q$ K) v/ i: O# e" }  T( o   for i=1:6! ]3 R6 V" S. L' F5 v- G
      for j=1:6# d* B1 k& f7 z3 E' \! ~# i; g
         if b(i,j)>b(i,k)+b(k,j)( o0 Q5 F/ u  A& y( c' z
            b(i,j)=b(i,k)+b(k,j);
7 S4 D; }* X$ h8 ~- M8 L1 l            path(i,j)=k;
/ z/ F: h6 ]/ M; s+ q9 N6 q: ^5 m         end
' l. C# ?# }# P5 J: O6 l* f6 [      end
  y3 b" T% U3 B: u( f, t, B   end
' A) ]4 z. U4 J3 A* kend8 R4 ^2 O2 Z( s3 y4 \& ^+ C
b, path                  
( a* c, P* v  @7 g/ u" j3 G运行结果:7 T, F+ k9 Z- }. l0 u0 s& |/ S3 j
b =" Z6 E+ f, |$ {  F- w
6 i4 E" S3 Y9 U2 o& u5 d
     0    35    45    35    25    10# v- n1 u1 A5 W, W! s9 r$ B" l7 l
    35     0    15    20    30    25
+ A# Z, X8 o  `+ F  }; [0 x9 s/ S& ], V    45    15     0    10    20    356 f/ P2 k5 g6 s
    35    20    10     0    10    25# }3 S2 P1 p2 {4 n/ \8 O$ ?
    25    30    20    10     0    35
3 {# ~  |6 C% s+ i* }, v    10    25    35    25    35     0
& @) L* c3 d: r* _, ^" V5 V4 ~
4 f1 c) n3 z( }. x* ^  k
path =4 n" Y+ u. |) R. V5 U9 N( b$ q
5 }* G) d* o# \
     0     6     5     5     0     0/ H. F# v, O, V$ Q
     6     0     0     0     4     0
( Y. S' \8 o$ L! u3 |     5     0     0     0     0     4
4 a% o, O- z1 g% L5 b     5     0     0     0     0     0
3 O$ J" y$ A( J( p     0     4     0     0     0     1
2 K* A! \, y8 p9 W5 r& l1 K- ]; F     0     0     4     0     1     0
% D3 w% S9 u3 i  v/ K对于从5到6,票价最少的路径有两条5--4--6和5--1--6,票价都为35元,但算法所得结果中这体现了5--1--6。3 B# q& N/ f- E! _& g
; X& z; }3 e1 R3 S2 E' l
            




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5