数学建模社区-数学中国
标题:
求大神解答,关于floyd算法
[打印本页]
作者:
Araneider
时间:
2012-8-24 16:54
标题:
求大神解答,关于floyd算法
这是2000年b题的一个floyd算法matlab程序。。。。。但是有些看不懂啊~~~那个大神指教一下~~~~
# ]+ u& d; y$ O! k7 d
$ o: v) X1 ]% y3 M! o# B" P
Floyd算法函数在matlab下的M函数文件如下:
9 o! @& n0 E$ }
function [D,path]=floyd(a)
0 }+ G% ~/ H7 W# v, G1 E' Z
n=size(a,1);
& }$ w5 c2 g1 X) M7 h m
D=a;path=zeros(n,n);
& H0 f/ o: d ~) {
for i=1:n
( w3 B& \% Q+ d
for j=1:n
# ]& i6 q; h" A. J; y% `
if D(i,j)~=inf
7 j! N- H P( m* I4 V( G. G
path(i,j)=j;
$ K$ N2 U2 J% S8 Z: b
end
8 w- u* [2 \3 N8 Z; F' N( ^
end
+ g# S( i$ t$ L1 c8 A7 H
end
6 s4 t# @- C- b8 s* e+ n. W& v
for k=1:n
. C2 |! ~& v# L* K5 k! T3 h1 h
for i=1:n
4 m, I6 @5 b& r1 v3 ^7 U" A
for j=1:n
r, I1 `" _) w$ [3 @4 J! Z
if D(i,k)+D(k,j)<D(i,j)
5 n( N$ k* r7 `3 n0 X
D(i,j)=D(i,k)+D(k,j);
' X- ? J5 i" v; C4 k* T' {7 F
path(i,j)=path(i,k);
& T) ^2 S# o& u( A( T
end
: Q; G. L' b: P! g
end
& G, O) {4 }- n! }" u( I
end
& V( X6 Z: W) a. B5 d1 d
end
. ^( p# @9 E3 e- @$ g
上面是一个函数,这一部分可以看懂,但是下面这个求最小费的问题就看不懂了。。。。
3 [* N: I. y6 L3 ? Y
ab=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 20 22 23];
2 W9 B2 B8 B. ~+ |" e1 t
bb=[ 14 15 15 16 19 18 23 24 10 10 11 15 13 14 16 17 19 19 20 21 22 23 24];
) u! I* c8 c/ R3 n/ I$ [& x5 b
w=[20 202 1200 690 690 462 70 30 450 80 1150 1100 306 195 720 520 170 88 160 70 320 160 290];
# M5 I8 E7 ?. {1 ]; m
ab1=[1 2 4 5 6 7 8 9 10 11 14 15 16 17 18 33 34 35];
' Q/ m! n2 Z/ M: o' I4 H& c
bb1=[19 20 21 22 23 24 25 26 27 28 29 30 31 31 19 24 31 32];
7 _7 n* D2 f2 \- s1 _5 V( D' a" U
w1=[3 2 600 10 5 10 12 42 70 10 10 62 30 20 104 31 110 20];
4 Y5 b7 ^& F; y
a=sparse(ab,bb,w);
% a7 c, k8 M$ A$ [" q( y: Q1 q
a(24,24)=0;
% k9 Y- d2 e. N7 _/ p1 f6 H
a=a+a’;
* w& u( P0 @2 Z( ?* j4 y! g
a=full(a);
1 t {/ V' ^! O0 O
for i=1:24
# A# s% e. f2 E; d8 A: h
for j=1:24
- U0 w9 F# F9 `( B, [( @& ^" Q
if(a(i,j)==0&i~=j)
8 G, h2 y' E+ c X2 Y
a(i,j)=inf;
0 z( {$ _% U) b4 P1 ~
end
6 l% }. }' t+ B n' n
end
; X1 ?. q- O; F: g4 f6 X9 Q
end
& J" i8 i" u0 q: g. w; Y3 O r
[D,path]=floyd(a);
! _2 o* \$ `$ z& x T3 E
a1=sparse(ab1,bb1,w1);
4 U' |) b2 R; W, V, E5 t$ i: ?, D. \
a1(35,35)=0;
W- R& ^& \: n7 v" Y% H
a1=a1+(a1)';
/ y6 V5 f+ b9 i9 X' X8 J
a1=full(a1);
3 f; S6 Q( t6 W7 b7 P
for i=1:35
) ]$ y2 a! O. i7 v6 q
for j=1:35
- t* G! A" D* b, {, v& M
if(a1(i,j)==0&i~=j)
8 l3 F' {8 ]7 x0 x
a1(i,j)=inf;
* N; H% g* |' X6 ]* p
end
: Z+ O+ h! X/ k
end
! s& r4 ]8 J/ v, R4 x# d
end
, e" k+ _2 b) c4 J. k) d
[D1,path1]=floyd(a1);
4 p' S! F5 m1 R8 R
上面这一段应该是赋值求最短路了吧,,,但是这赋值是赋得什么值额????有大神的话可以在后面注释一下。。。万分感谢。。。
作者:
Araneider
时间:
2012-8-24 17:00
管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)
! y F- Z6 w6 {4 U+ }* a _3 o% F+ v" e
要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
1 ?3 ~* u" x/ l u8 [" h: @7 ~
每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
) U, G: s( W# G, W$ _7 N2 A
为方便计,1km主管道钢管称为1单位钢管。
4 [) r6 K! T* _1 z
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
& ]9 U1 ^6 a3 c" {
I 1 2 3 4 5 6 7
& V0 y/ W m9 b- H
800 800 1000 2000 2000 2000 3000
% J* Y. i: Z6 v; y
160 155 155 160 155 150 160
4 F% }( _! _6 v
一单位钢管的铁路运价如下表:
0 I: S" o7 z1 U/ N3 _5 z6 L4 T
里程(km) ≤300 301~350 351~400 401~450 451~500
2 j& W. {& }6 s% |( ?
运价(万元) 20 23 26 29 32
; Y! d! s& ]: n
里程(km) 501~600 601~700 701~800 801~900 901~1000
( Y9 k& B6 a" B' f
运价(万元) 37 44 50 55 60
( S" f/ X3 `& o$ b! A
1000km以上每增加1至100km运价增加5万元。
7 e/ M# \& P! K. \5 F
公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
' _( n, k" H# W; M# \
钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
& i+ m$ P0 e' w9 |( l
请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
$ F# _8 Z! k5 f- ?4 O; a$ n
请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
, o" o1 c; }4 g+ F- ] ~( b/ }! S
如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
. S. C8 [& ^, N; ^% { W/ y
( Q0 {- U! x% P% z
C:\Documents and Settings\Administrator\桌面
作者:
Araneider
时间:
2012-8-24 17:03
C:\Documents and Settings\Administrator\桌面
作者:
Araneider
时间:
2012-8-24 17:05
钢管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)
- l3 t9 L0 b( b
要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
0 o& v% y8 g4 N
每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
v. Z1 A; h( N/ Y. ~. X
为方便计,1km主管道钢管称为1单位钢管。
0 O3 V# g3 ~) y6 g0 N( O
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
( c' D! k! l, i" J2 j, N4 ]
I 1 2 3 4 5 6 7
. f3 L- K6 I5 X- j
Si 800 800 1000 2000 2000 2000 3000
* N4 U8 z8 O) c Q+ {
Pi 160 155 155 160 155 150 160
" e7 t8 S( @# Y T
一单位钢管的铁路运价如下表:
5 p' ~# C: g8 B* `" l
里程(km) ≤300 301~350 351~400 401~450 451~500
4 }; s( c. s! K+ y4 G! z P
运价(万元) 20 23 26 29 32
. V! O+ B, [$ T+ ?% w& ?; x
里程(km) 501~600 601~700 701~800 801~900 901~1000
' G) P1 q2 ?) ^- e1 F- j
运价(万元) 37 44 50 55 60
$ V: Y: u$ b- n% w
1000km以上每增加1至100km运价增加5万元。
. l6 y, B2 X* {
公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
) p2 s8 x' c! X
钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
* y- k3 E9 c. e7 g- a$ h: ^
1.请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
/ e6 t. s' Q" r5 c6 f
2.请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
2 n! D( `8 P. C
3.如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
作者:
Araneider
时间:
2012-8-24 17:12
上面那就是题目,,下面是给出的图
8 u F4 H- F6 I+ N9 K' F
作者:
Araneider
时间:
2012-8-24 17:15
快来大神啊,快来大神啊
作者:
467857726de
时间:
2012-8-25 18:18
不错哦 谢谢楼主
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5