数学建模社区-数学中国
标题:
求大神解答,关于floyd算法
[打印本页]
作者:
Araneider
时间:
2012-8-24 16:54
标题:
求大神解答,关于floyd算法
这是2000年b题的一个floyd算法matlab程序。。。。。但是有些看不懂啊~~~那个大神指教一下~~~~
; O8 X7 X1 q; O7 Q! p$ L
! i. i" z& X& ]" D# B* F; P0 Y& {4 `
Floyd算法函数在matlab下的M函数文件如下:
& W* ^; Y3 y' D4 u
function [D,path]=floyd(a)
7 x" `7 Q5 x8 _' N0 K
n=size(a,1);
( z, U. ~, V2 f
D=a;path=zeros(n,n);
$ P r% p# \" ~$ A6 l$ A
for i=1:n
1 _& l0 k6 H+ M, |' A
for j=1:n
2 ^& y6 m& F& C8 t
if D(i,j)~=inf
! _/ y& j1 `8 N6 F* D1 u
path(i,j)=j;
* X! b7 c9 C$ v1 U8 Z- Y) Q/ K5 H
end
, M, G4 u7 }3 m& ^2 F; i
end
" v6 `( T! Q* {- J! X. x, I
end
. u0 C$ j' E A" e# _
for k=1:n
4 J- U) e) `1 c
for i=1:n
% |; @2 k. w- O8 X$ }
for j=1:n
& ~/ L, B7 L9 C2 u$ }# Q$ z$ V) S
if D(i,k)+D(k,j)<D(i,j)
. M1 \( U+ o7 a2 Z: f- c
D(i,j)=D(i,k)+D(k,j);
' H7 d% ?2 |; B, i; T$ j8 n
path(i,j)=path(i,k);
! l$ Q7 a O8 K7 ` A# j- O. u
end
+ E- Y3 u. ~# T$ `; n
end
+ P+ P& l0 c" s) u. V* W
end
' E: p5 D8 |, Q1 O6 z" i& }
end
6 z* d/ Z5 E. v# C
上面是一个函数,这一部分可以看懂,但是下面这个求最小费的问题就看不懂了。。。。
2 D+ v+ @5 Q B9 z& `9 l1 I
ab=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 20 22 23];
4 g! l3 V! P# C. G& I" Q- l
bb=[ 14 15 15 16 19 18 23 24 10 10 11 15 13 14 16 17 19 19 20 21 22 23 24];
A, Y0 m& a6 z) z5 c: e9 R+ i
w=[20 202 1200 690 690 462 70 30 450 80 1150 1100 306 195 720 520 170 88 160 70 320 160 290];
; Q% h0 Y# N* I2 J% `, G+ I
ab1=[1 2 4 5 6 7 8 9 10 11 14 15 16 17 18 33 34 35];
& a; Z* ]1 y* m; I# Z
bb1=[19 20 21 22 23 24 25 26 27 28 29 30 31 31 19 24 31 32];
. i" b; p$ A1 h9 N1 R
w1=[3 2 600 10 5 10 12 42 70 10 10 62 30 20 104 31 110 20];
, J! O; J* `7 b. g1 ?& V
a=sparse(ab,bb,w);
) F( j8 y0 G. c7 P* \6 e. b$ t" u
a(24,24)=0;
* b' U$ n+ _6 m$ L
a=a+a’;
5 f/ i# e$ u# G0 A
a=full(a);
6 l2 L% A( F% n p/ z+ R
for i=1:24
, {5 M* K7 v, u
for j=1:24
7 w5 v/ l) Z, T
if(a(i,j)==0&i~=j)
i l" n4 i. d) j
a(i,j)=inf;
/ ~; O% i" h& q& |
end
9 ~' ?! b3 x' u! x& ]; P
end
S' p3 \' `0 u( V s
end
/ {# o5 Q0 d' u: F2 F- z" U. m2 r8 t
[D,path]=floyd(a);
z- g1 y' k' W- J" Y. ]
a1=sparse(ab1,bb1,w1);
' [0 K) b8 G# ]9 k* y" P9 N9 T0 {
a1(35,35)=0;
: `/ B) v+ T* l! s) u: e9 T. H4 E. u
a1=a1+(a1)';
/ X+ d9 Z) g- `0 n" l- n4 [
a1=full(a1);
/ C( ]- y4 [; a- ?9 V
for i=1:35
3 _. e6 g+ e* [4 J9 I; |# I4 I+ C) j' J
for j=1:35
% e1 I# v8 M4 p- f
if(a1(i,j)==0&i~=j)
' } R" b" R- j4 L$ U
a1(i,j)=inf;
# h# q0 ^3 K: E l4 }/ z
end
8 N# H. c: e3 H- K3 T" S/ U( }1 q8 e
end
! R* _4 a& K2 y' P/ ^* s- f, A
end
9 M$ K8 b' U% L2 p
[D1,path1]=floyd(a1);
. ~8 Z# M) _/ G* I* b, C& R' f. S- O
上面这一段应该是赋值求最短路了吧,,,但是这赋值是赋得什么值额????有大神的话可以在后面注释一下。。。万分感谢。。。
作者:
Araneider
时间:
2012-8-24 17:00
管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)
7 T b1 |* Z/ |+ O: b& V
要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
/ q3 e6 `; z) y: o
每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
* i5 {% ?' t" T+ ~& b) P7 e2 X' M
为方便计,1km主管道钢管称为1单位钢管。
- U D/ l% {9 i8 \, r
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
- a* ?, A3 w2 p7 [3 X9 Y
I 1 2 3 4 5 6 7
1 \- F; J! I- {/ A6 Q
800 800 1000 2000 2000 2000 3000
/ G$ c1 M& L4 J; [& O
160 155 155 160 155 150 160
* }5 B1 P# s2 q% U: L3 d9 g) a
一单位钢管的铁路运价如下表:
N5 i9 }) F% u
里程(km) ≤300 301~350 351~400 401~450 451~500
% a* f0 x. l: N7 e4 O. z1 O J
运价(万元) 20 23 26 29 32
- _! _) @7 Y& |: s* g# ]0 d9 Q
里程(km) 501~600 601~700 701~800 801~900 901~1000
0 g9 g8 A& ?3 M: y
运价(万元) 37 44 50 55 60
. D8 D& y- R3 u- o ~: v
1000km以上每增加1至100km运价增加5万元。
9 c; k4 L! ~2 k
公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
% M# f# w. h- J% z
钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
" r. C. w$ N; u6 ~1 N' l7 |) p
请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
* ~, o3 w. P, o" d* K
请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
p* T# g5 ~# q' j: M7 J
如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
4 m* R) N# ?& W0 v b4 m
; O2 O0 m, k3 h X% H! l
C:\Documents and Settings\Administrator\桌面
作者:
Araneider
时间:
2012-8-24 17:03
C:\Documents and Settings\Administrator\桌面
作者:
Araneider
时间:
2012-8-24 17:05
钢管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)
( f) B- v( {5 D; W5 b% d6 k+ x/ _
要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
7 R. t5 o/ ^5 U- {6 q3 q- }$ \4 S5 l2 K
每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
~$ f9 j" f8 V6 @) ^6 G- ~# @
为方便计,1km主管道钢管称为1单位钢管。
! t9 V/ a8 e, g
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
# Z* t) ]9 I9 S9 M, z; d/ z
I 1 2 3 4 5 6 7
& ]# M5 G. S7 q7 Q ?
Si 800 800 1000 2000 2000 2000 3000
* i# _; ~7 O* w" {, w
Pi 160 155 155 160 155 150 160
" M/ {) ^0 a" ^. m: [# D( K% j y
一单位钢管的铁路运价如下表:
1 ?$ W6 P8 U ~: ^
里程(km) ≤300 301~350 351~400 401~450 451~500
& J% K i/ u# E$ f
运价(万元) 20 23 26 29 32
, A5 T0 b U* ~, I. x! Z" }
里程(km) 501~600 601~700 701~800 801~900 901~1000
1 W3 L: @4 S9 k7 I; t7 O5 y' c
运价(万元) 37 44 50 55 60
+ i4 X+ j" p9 c8 B- S
1000km以上每增加1至100km运价增加5万元。
$ y) b1 p1 t Q* B( h
公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
2 J9 t. q! h6 u. G1 W+ K
钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
e/ ^& h/ D+ H( |, e
1.请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
( a+ P7 l9 p* P6 b& N
2.请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
$ U) H* w2 Q# e' a
3.如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
作者:
Araneider
时间:
2012-8-24 17:12
上面那就是题目,,下面是给出的图
. F! Z8 P0 j/ X
作者:
Araneider
时间:
2012-8-24 17:15
快来大神啊,快来大神啊
作者:
467857726de
时间:
2012-8-25 18:18
不错哦 谢谢楼主
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5