离散数学课件-第6章-1.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
离散数学课件-第6章-1

Chapter 6 Graph Algorithms §1 最短路径问题 若干城市被铁路网连通,任意指定其中甲、乙两座城市,试求从甲到乙最近的铁路路线。 把上述转换为图论模型如下: 城市设为顶点,当两城间有铁路相通且中途无其他城市,在两点间连一边,如此构成一个图G;对每条边e∈E赋以权值w(e)表示铁路长度,如此得到带权图。 设P(u,v)是图中以u,v为两端点的路径,用W(P(u,v))表示路径P(u,v)上边权之和,即: W(P(u,v))= 目标是求一条P(u,v),使得W(P(u,v))最小。 单点到各点的最佳路径算法有两个: Bellman-Ford算法 Dijkstra算法 一、Bellman-Ford算法 算法描述如下: (1)任取一棵以v0为根的生成树,在每个顶点标出v0到该点的长度li; (2)设树枝之外的边vij的长度为dij,依次检查每条树外的边,若对其中一对邻接点vi, vj出现:lj>li+ dij,则去掉以vj为终点的树枝,用vij代替; (3)重复(2),直到所有树外的边都比较过为止。 求下图v0到其余各点的最短路径: 任取图以v0为根的一棵外向树如下: 最后得到的解如下: 二、Dijkstra算法 Dijkstra算法是1959年荷兰的计算机科学家Dijkstra给出的解决最短问题的方法。 基本思想: 按照最短路径长度不减的次序求解各点的解。 即按由近到远的次序求解各顶点的解 Dijkstra算法描述(起点为v0): (1)初始化:若(v0,vi)存在,则li=w (v0,vi),否则li=∞; (2)从未解的顶点中选择一个l值最小的顶点vk,则vk是已解顶点; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (4)重复(2)、(3),直到所有顶点求解完毕。 (1)初始化: (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 (2)从未解的顶点中选择一个l值最小的顶点vk; (3)修改vk的直接后继顶点的l值 ——如果经过vk路径长度可以更近 最终结果如下: §2 任意两点间最短距离及其算法 求解方法很多: 对每个顶点都执行Dijkstra算法; 动态规划算法: Floyd-Warshall算法 一、动态规划算法: 设A=(aij)m×l, B=(bij)l×n。 定义: C=A⊙B= (cij)m×n, 其中cij=min{ai1+b1j,ai2+b2j,…, ail+blj} 定义: D=A B= (dij)m×n 其中cij=min{aij,bij} 利用刚才定义的运算求任意两点间的最短距离。 设D=(dij)n×n是图G的距离矩阵,即dij表示边vi,vj边的长度。若vi,vj间无边,则dij=∞。 这样,D(2)=D⊙D=(d(2)ij)n×n 其中d(2)ij=min{di1+d1j,di2+d2j,…,din+dnj} ∴d(2)ij表示从vi出发两步可以到达vi的道路中距离最短者。 同理D(k)=D(k-1)⊙D=(d(k)ij)n×n ∴d(k)ij表示从vi出发k步可以到达vj的道路中距离最短者。 于是矩阵S=D D(2) …… D(n)=(sij)n×n 其中sij代表为vi到vj的所有道路中距离最短者。 求下图各点间的最

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档