- 1、本文档共122页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章(图与网络分析)2
8 图与网络分析(2) 背景与发现 图的基本概念 树 最短路问题 网络最大流问题 最小费用最大流问题 中国邮递员问题 8.4 最短路问题 最短路问题是重要的最优化问题之一, 本节以赋权有向图为例,介绍最短路问题。 8.4.1 有向图 设 D = ( V , A )是一个有向图,对于 D 中的一条弧 a = (u , v ),称 u为 a 的始点、v为 a 的终点,称弧 a 是从 u 指向 v 的。若从 D 中去掉所有弧上的箭头,就得到一个无向图,称之为 D 的基础图,记为 G( D )。 类似于无向图,可以定义简单有向图、多重有向图。 有向图及其基础图 路与回路 给出 D 中的一个点、弧交替序列 如果这个序列在基础图 G( D ) 中所对应的点、边序列是一条链,则称这个点、弧交替序列是 D 的一条链。类似定义圈和初等链(圈)。 如果 是D 的一条链,并且对 t =1 , 2 , … , k-1,均存在 ,称之为从 的一条路。若路的起点和终点相同,则称之为回路。类似定义初等路(回路)。 8.4.2 最短路问题 给定一个赋权有向图, 即给了一个有向图 D = ( V , A ),对每一条弧 a = (vi , vj ),相应地有权w ( a ) = wij。又给定 D 中的两个顶点vs , vt ,设 P 是D 中从 vs 到 vt 的一条路,定义路 P 的权是 P 中所有弧的权之和,记为 w(P)。 最短路问题就是要在所有从 vs 到 vt 的路中求一条权最小的路P0,路P0 的权称为从 vs 到 vt 的距离,记为 d = (vs , vt )。 引例 已知如下图所示的单行线交通网, 最短路性质 设有向图 D = ( V , A ),若D中的一条路 是一条从 的最短路,则其中任一条子路 是从 的最短路(最短路的子路必是最短路)。 8.4.3 最短路算法 Dijkstra 算法 适用条件:弧 a = (vi , vj )的权wij≥ 0的赋权有向图,边 e = [vi , vj ]的权wij≥ 0的赋权无向图。在这种情况下,图中任一条路的权不小于其子路的权。 求解特点:可以求得某点到其他各点的最短路。 引例 算法的要点 路径上溯 Dijkstra 算法的程序 ( i ) 令 k = 0, Sk=? , T( vs )= 0 , ?( vs )= 0 , 对每一个 vj = vs ,令 T( vj ) = +¥ , ?( vj )=M,转入( ii ) 。 ( ii ) 令T( ) = min{ T( vj ) | vj ? Sk }。 若T( ) +¥ ,则把 的 T 标号变为 P 标号 P( ) = T( ) ,令 Sk+1= Sk? { }。 若 Sk= V,计算终止,d(vs , vj ) = P( vj ) , vj ? Sk。 若 Sk?V,令 l = ik ,把 k 换成 k+1,转入( iii )。 若T( ) = +¥ ,计算终止。d (vs , vj ) = P( vj ) , vj ? Sk ; d (vs , vj ) = T( vj ) = +¥ , vj ? Sk 。 ( iii ) 考查每个使( vl , vj )?A 并且 vj ? Sk 的点 vj ,若T( vj ) P( vl ) +wlj,则把 T( vj ) 修改为 P( vl ) +wlj,把 ?( vj ) 修改为 l,转入( ii ) 。 最小树与最短路 最小树与最短路 应用举例 例8. 网络模型的要素设置 用点 vi 代表第 i 年年初 i = 1 ~ 6 ; 用弧( vi , vi ) 表示第 i 年年初购买一台新设备用到第 j 年年初报废 j = (i+1) ~ n ; 用弧的权 wij 作为设备的购置费与维修费之和 如 w13= c1+ ( d1 + d2 ) =11 + ( 5 + 6 ) = 22 设备更新问题的网络模型 设备更新问题的网络模型 迭代算法 d (vs , vj ) = min{ d (vs
文档评论(0)