QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2856|回复: 1
打印 上一主题 下一主题

[课件资源] 最短路问题

[复制链接]
字体大小: 正常 放大

2

主题

1

听众

14

积分

升级  9.47%

  • TA的每日心情
    慵懒
    2018-6-6 10:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2018-6-6 10:52 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    最短路问题及其算法
    3 D/ J4 p6 F. |- k/ n一.实验目的:
    : `0 m/ K  J7 N, s2 @% g2 Z1 e. [1、了解与掌握图论的基本概念、相关MATLAB知识和最短路径算法;5 w( a: S' u0 D- A: }' n2 q* Q9 V
    2、学会使用MATLAB编写Dijkstra算法和Floyd算法程序求最短路径.
    4 r. I3 W% c3 [9 G6 N二.实验内容:
    , q( c2 |7 c  m- l, d& q要铺设一条A1→A2→…→A15的输送天然气的主管道,如图所示.经筛选后可以生产这种主管道的钢厂有S1,S2,…,S7.图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位:km).6 G) Y( R  g7 S& s8 x( _  U" n
    为方便计,1km主管道钢管称为1单位钢管., g/ {; |3 E4 m3 B6 u$ Z0 P$ x
    一个钢厂如果承担制造这种钢管,至少需要生产500单位钢厂 在指定期限内能生产刚钢管的最大数量为 个单位.钢管出厂销价1单位钢管为 万元,如下表:
    3 F$ A9 r, z/ T9 G* {) m+ A8 |
    " ?: D& K, u5 {/ Q; `$ n  j7 w- X$ y2 Y1        2        3        4        5        6        7
    - t8 }6 Q: N. F6 L% [; ~ + W( r( D3 w/ k. x- V" [3 ]
    800        800        1000        2000        2000        2000        3000- i6 g; n- V1 u( f# j
    0 d$ J! x$ {8 n- |/ `
    160        155        155        160        155        150        1600 P* `" P; L5 I* ^' d, V

    9 |7 A) W' ^- U0 J; |1单位钢管的铁路运价如下表:
    # j6 S$ I0 ~' e# N  K  e' z里程(km)          300: w- X# o, ]3 J# d3 I2 z. j. D
    301-350        351-400        401-450        451-500
    2 W# ^$ z5 w8 R运价(万元)        20          23          26          29          32
    9 n, b  O! s# n  O# R) ?& `/ A里程(km)        501-600        601-700        701-800        801-900        901-1000
    4 ]  ^( @+ U8 @" h# D  k- e. @运价(万元)          37          44          50          55          60
    ! V) I; Z' {5 V! M0 k! o1000km以上每增加1至100km运价增加5万元.
    + C- b  V2 G* o  N+ R! C- ]  Q公路运输费用为1单位钢管0.1万元每千米(不足整千米部分按整千米计算).! o; L' ~% I; m5 e
    假设从钢厂 订购钢管运输到铺设地点 和 .钢厂 在指定期间内能生产该钢管的最大数量为 个单位,钢管出厂销价1单位钢管为155万元.6 g- j+ Y1 |; g! A, j! a* y

    ; B1 m/ T/ f$ F0 f试制定一个从钢厂 到铺设地点 和 的钢管的订购与运输计划,使总费用最小.
    3 S' v, B* b5 U, p3 ]+ C三. 模型建立
    $ a0 J7 F1 A4 i5 W/ l8 l0 f6 S设 为 ,将上图按从上到下,从右到左的顺序依次命名如下.将上图改为如下赋权图形 :2 j) V; x  ^5 @! R4 B: H/ z; r

    - U- ^% M6 l- P( a. _6 R7 z利用Dijkstra算法和Floyd算法:求 中从顶点 到其余顶点的最短路.而求钢厂 到铺设地点 和 的最短距离,即为 到 和 的最短距离) N# o: r$ a) S3 W
    : {& v9 d& t8 A
    解:先写出带权邻接矩阵:
    & g. s) f- S% E' N' |) Q7 L0 J . _2 C' r: J6 M
    后分别用Dijkstra算法和Floyd算法步骤,求出 到 和 的最短路的权 以及 的父亲点标记 .
    / @2 W2 z5 }% R' k: s" q4 Y% `, }四. 模型求解(含经调试后正确的源程序)$ S% e6 o( k" a! @
    (1) Dijkstra算法4 E" E& K: l8 f; h  s! C; R
    road1.m文件源程序:
    $ a9 U. r# e/ k, z$ h3 _- fw=[0 1200 inf inf inf inf inf inf inf inf;
    & t/ y3 @( |: ^7 w: f& O2 @1200 0 12 202 inf inf inf inf inf inf;$ w# i; g; I! R, Y4 h6 n
    inf 12 0 inf 201 inf inf inf inf inf;: I$ e8 V7 E4 p, C! m0 c
    inf 202 inf 0 31 20 inf inf inf inf;) a3 J8 U0 _# I- G/ a0 m
    inf inf 201 31 0 10 inf 205 inf inf;
    4 {- Z4 s  F1 w- ^. a* Jinf inf inf 20 10 0 195 inf inf inf;
    : }+ J% w8 H0 L; V1 l! L: rinf inf inf inf inf 195 0 5 306 inf;
    ) ?7 \; n, `: D) qinf inf inf inf 205 inf 5 0 inf 194;
    ) R, Z6 L8 x6 P5 r! p' R1 Q9 D2 minf inf inf inf inf inf 306 inf 0 10;
    8 u  ^9 }. N2 d( W  E4 T; s  W! v( j6 uinf inf inf inf inf inf inf 194 10 0];
    . ~3 V# p$ w" t# r  x) |& xn=size(w,1);& y8 w6 |2 O, t/ G& Q! u0 _) z/ W
    w1=w(1,;
    + ?5 L9 p/ v9 }+ t5 c1 `2 M5 T- lfor i=1:n& E& J% A$ N& ]/ S, J
        l(i)=w1(i);1 O/ L0 v, |1 }) z2 |3 w& _6 S
        z(i)=1;4 `3 J# h% ?0 B+ S6 b- J
    end/ a- V% I" o& o: V8 ?" V, B
    s=[];
    6 @, {( n6 E' o$ c! P. l, is(1)=1;
    1 n  J; f% }! a  eu=s(1);
    + T4 z0 ?7 ]  G+ s  R7 C6 Z5 l- w$ A0 N7 gk=1;
    9 W4 S: G8 _( j. z1 k$ }4 |l;: I- }' u) s7 K* c9 _
    z;
    7 R  g2 I# c5 l, ]while k<n) Q$ A% a: X5 Z  o; N
        for i=1:n6 V! z% }, a" }, ~
        for j=1:k% D7 }, H1 e2 T$ ~* f/ Q
           if i~=s(j)/ F' _! \) a# m) o2 ]1 u+ }7 f& X0 Y
              if l(i)>l(u)+w(u,i);
    : I0 J; z  x, E( c             l(i)=l(u)+w(u,i);* J& W2 h7 x9 R
                 z(i)=u;
    + K) t$ |* Y; R0 ~% g  _3 a3 F7 W         end
    ( t7 W( S. |0 |     end
    9 X( c$ t9 D, ~. l end
    " E9 G0 f7 `8 oend
    ! T5 m- B8 [/ A; s& ~  U0 \& s l;( Q  h1 k$ Y( y8 a. N. w5 F
    z;
    5 h9 L9 e9 \9 ^+ m8 E4 `6 S2 Wll=l;
    , d+ d. W$ }5 E% D for i=1:n
    , R& Y$ {& R6 p. D for j=1:k
      {- e+ v# w( o) Q0 `9 B# n/ V    if i~=s(j)
    3 i# ?8 X. O- H5 y* T6 q7 C       ll(i)=ll(i);
    # U7 A. G, K: a" e: Y: ?  D0 K   else
    7 J; K7 C+ o- U8 e. {- ?+ v$ G. u       ll(i)=inf;: s& I$ P( L3 Z% g" c
       end
    4 i" Q( s' `# \end
    6 W6 Z* n& _# r" f7 u' Nend% s0 J; ?/ y' Z3 e  [
    lv=inf;
    & w9 z2 f0 M" B9 c9 nfor i=1:n
    / J- m  r* u5 k- X    if ll(i)<lv9 x3 _+ k) M7 D7 h8 L
           lv=ll(i);
    ! p9 @9 s! t' g% B3 `( ]       v=i;
    1 Y4 C! o7 ~; z* f5 j9 _   end
    : W0 m" x6 u4 |- w* |0 |end
    9 ~: `3 d6 _8 R" Z4 [1 Zlv;: b5 k" h- n2 _- h1 k. O5 k
    v;
    3 x' c- @' S0 ^" bs(k+1)=v;
      m5 v4 k5 U. D8 u! D# _4 \' bk=k+1;  E  n7 r8 ?- t! z5 Q
    u=s(k);- [5 d1 n- P: v2 C+ y4 S
    end
    3 y' D+ H" D' _% z/ yl
    0 `1 O7 E2 M3 r3 Y: w; u# y9 Pz
    / u4 s+ s* c3 G# @) }' S8 Z6 n0 v* ]4 r
    (2) Floyd算法& Y9 F; C% {# A/ q0 H
    road2.m文件源程序:6 o8 S7 E3 D- v* U, e7 a. {. A
    a=[0 1200 inf inf inf inf inf inf inf inf;
    * v$ g6 H  X3 l" {! e0 A' g+ s1200 0 12 202 inf inf inf inf inf inf;9 A' v7 |& `' d- i$ i- K5 t
    inf 12 0 inf 201 inf inf inf inf inf;, ]( k" v$ ]$ t; o& S. A0 [' u
    inf 202 inf 0 31 20 inf inf inf inf;
    ) z; R! _- a. x2 J" D5 Dinf inf 201 31 0 10 inf 205 inf inf;
    " m: x2 j8 S; t0 E4 i  {( g2 [inf inf inf 20 10 0 195 inf inf inf;, u3 s, l" M& c
    inf inf inf inf inf 195 0 5 306 inf;
    ( H4 ~: e# L( p, N- rinf inf inf inf 205 inf 5 0 inf 194;! J/ N8 N( S; {3 F# `6 g
    inf inf inf inf inf inf 306 inf 0 10;, _, P/ a" [" k  y5 w! t
    inf inf inf inf inf inf inf 194 10 0];* |% Y$ C/ d$ p( q  c
    [D,R]=floyd(a)
      S6 w; [3 @" w! cfloyd.m文件源程序:; [+ h; _' I; @1 F& C# o
    function[D,R]=floyd(a)0 ], W0 |+ T; O7 l
    n=size(a,1);9 X2 }& x: a" y' i, \/ y% i
    D=a2 e7 `" S9 r4 g
    for i=1:n
    - y5 a4 \0 J8 j' B# E( Y    for j=1:n
    % L1 `3 e% f6 P- l9 c/ N' H        R(i,j)=j;
    " K, h; O# Z) G    end
    / p  F+ b/ {6 _  P) n& Nend- U" \- b$ F5 t6 ?  C
    R
    4 O3 j0 W& t* T5 d% B1 P8 Jfor k=1:n  k, w, n/ \5 R9 R9 C; R1 Q
        for i=1:n0 Y# v) Y. B5 _6 O, g' i. ?
            for j=1:n
    ; \$ C! F* Q6 X+ l+ O& t5 e            if D(i,k)+D(k,j)<D(i,j)+ S! B" U( @8 b% a: i4 \6 y8 P
                   D(i,j)=D(i,k)+D(k,j);& U9 q! a( H/ N- ]5 `8 w
                   R(i,j)=R(i,k);
    1 }( k  C+ L( t& ?           end
    . m; y+ j% }) `* B) g$ n9 {& D* h7 n       end
    . K2 W( h, W7 f. c8 U   end4 q" s( o& J, u2 L! k  q
       k
    1 K/ Q4 x6 S4 a+ S% q   D
    ( @% }( C, {. Z3 i5 \8 E6 l   R/ E. F1 R! m1 R
    end1 l6 T6 R% s7 L
    五.结果分析
    % o3 Z4 U5 d7 l  s4 s# W(1)Dijkstra算法3 U& y  t7 ?; o! L
    运行结果:
    : Q: l6 Q, x: b/ L6 e) v. gl = 0   1200   1212   1402   1413   1422   1617   1618   1822   1812) ~2 \/ y/ [& f$ p/ }& N7 G
    z =1     1     2       2     3       4     6      5      10      8
    : ]$ E! y% ]9 T5 k" z, J! b9 F/ w
    $ J+ M# z0 J* k  x/ Q结果分析:
    9 A( y& n* E& y; w/ |5 W) o通过运行结果: 到其他顶点的最短路的权 ,可看出,6 I& c  Q. j' \& n; l3 o
    到 (即 到 )的最短距离为1812(km);
    $ q) D9 u. U3 l 到 (即 到 )的最短距离为1618(km);0 |7 ?/ E$ a0 O) Z# u0 s# L
    $ _$ n% W: W/ r& w! B1 ~
    到 的最短路径为:V1→V2→V3→V5→V8→V10;
    ( k  i& L% J7 e) @2 O: {7 C 到 的最短路径为:V1→V2→V3→V5→V8。
    / T  N+ ^. J, d3 l/ i/ X7 o7 u* P  R0 z8 x1 U% D
    (2) Floyd算法% h0 k% f9 l3 H; v$ S0 g# {
    运行结果:  L2 y- O1 u' W5 U
    D =
    6 x0 O! d, ]* z% f# ^8 o     0  1200  1212  1402  1413  1422  1617  1618  1822  1812
    # R0 Q. B+ C2 [( ?' Q% g  1200     0    12   202   213   222   417   418   622   612* h! P. z* l8 k% P& h: u3 t
      1212    12     0   214   201   211   406   406   610   600
    6 g& q1 g& J1 d; z% v+ O# K* {  1402   202   214     0    30    20   215   220   424   414* p, W1 G, G+ H- Z4 |6 L. }
      1413   213   201    30     0    10   205   205   409   3994 E( u; s& T9 C; [, K" ^
      1422   222   211    20    10     0   195   200   404   394" e1 J0 f; p; ]: d/ S+ {- v
      1617   417   406   215   205   195     0     5   209   199
    / P( V  s9 N3 Y8 [7 Z4 W$ m  G  1618   418   406   220   205   200     5     0   204   194$ H  c" O% W5 s( Y" y& ^+ r9 Z) ]! j
      1822   622   610   424   409   404   209   204     0    10
    ) l! Z* |% K( t$ ~2 [. a* Q. n' ?$ d  1812   612   600   414   399   394   199   194    10     07 r( j  I! i  L2 _/ P9 F0 V, P4 \

    0 Q: Q: v' \# IR =6 I8 @- N# h% g# K1 n2 f* `
       1   2   2   2   2   2   2   2   2   2
    % {$ y: q* P2 h; M   1   2   3   4   3   4   4   3   3   3
    + x/ C  P9 T$ X  R1 @   2   2   3   2   5   5   5   5   5   52 ]4 ~7 f) ?9 s+ s, H
       2   2   2   4   6   6   6   6   6   6. ?6 `& j: k4 A% F& g
       3   3   3   6   5   6   6   8   8   84 @* i9 p2 {% Q: S0 c0 y
       4   4   5   4   5   6   7   7   7   78 n3 [  v9 p8 ^! n7 m
       6   6   6   6   6   6   7   8   8   8
    ) S. _6 A% a% B$ ?. w   5   5   5   7   5   7   7   8  10  10
    ) g% B& s. Q$ i- M  ]$ s- z5 ]# `  10  10  10  10  10  10  10  10   9  10. Q2 V6 e2 U* Y8 X1 n: Y
       8   8   8   8   8   8   8   8   9  10
    ! x) ~" {( B9 e. m4 S+ Y结果分析:/ [; A2 D2 @$ ^6 r4 D6 E1 I
    通过运行结果:可看出,( V# ^1 v  @2 b4 J7 c
    到 (即 到 )的最短距离为1812(km);* ?0 n+ m9 }' [" j) o
    到 的最短路径为:V1→V2→V3→V5→V8→V10;
    " s! Y  P# C. r 到 (即 到 )的最短距离为1618(km);
    4 A; s- V7 i8 N6 I/ L" e  S. C1 x 到 的最短路径为:V1→V2→V3→V5→V8。
    1 h2 O+ a- f3 o+ p8 N9 n7 p
    3 @7 U  P3 t( X
    $ Q# u6 i0 k1 A! j6 ?# H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    1

    主题

    2

    听众

    8

    积分

    升级  3.16%

  • TA的每日心情
    郁闷
    2019-5-18 08:39
  • 签到天数: 1 天

    [LV.1]初来乍到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-13 09:03 , Processed in 0.780630 second(s), 55 queries .

    回顶部