- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12讲 加权图.ppt
Dijkstra Algorithm * * E B F C D A 8 18 2 30 15 10 7 4 5 Dijkstra算法实现 * TestShortestPath TestShortestPath Dijkstra算法实现 * Dijkstra算法实现 * Dijkstra算法实现 * Dijkstra算法实现 * Dijkstra算法实现 * Dijkstra算法实现 * 每对结点之间的最短路径 弗洛伊德算法是:设矩阵cost用来存放带权有向图G的权值,即矩阵元素cost[i][j]中存放着下标为i的结点到下标为j的结点之间的权值,可以通过递推构造一个矩阵序列A0, A1, A2, …, AN来求每对结点之间的最短路径。初始时有,A0[i][j] = cost[i][j]。当已经求出Ak,要递推求解Ak+1时,可分两种情况来考虑:一种情况是该路径不经过下标为k+1的结点,此时该路径长度与从结点vi到结点vj的路径上所经过的结点下标不大于k的最短路径长度相同;另一种情况是该路径经过下标为k+1的结点,此时该路径可分为两段,一段是从结点vi到结点vk+1的最短路径,另一段是从结点vk+1到结点vj的最短路径,此时的最短路径长度等于这两段最短路径长度之和。这两种情况中的路径长度较小者,就是要求的从结点vi到结点vj的路径上所经过的结点下标不大于k+1的最短路径长度。 弗洛伊德算法的算法思想可用如下递推公式描述: A0[i][j]=cost[i][j] Ak+1[i][j]=min{Ak[i][j], Ak[i][k+1]+Ak[k+1][j]}(0≤k≤n-1) 也就是说,初始时,A0[i][j]=cost[i][j],然后进行递推,每递推一次,从结点vi到结点vj的最短路径上就多考虑了一个经过的中间结点,这样,经过n次递推后得到的An[i][j]就是考虑了经过图中所有结点情况下的从结点vi到结点vj的最短路径长度。 有向图的最短路径及其路径长度 带权有向图 (a)有向图 (b)邻接矩阵 The Weighted Nine Tail Problem The nine tail problem is to find the minimum number of the moves that lead to all coins face down. Each move flips a head coin and its neighbors. The weighted nine tail problem assigns the number of the flips as a weight on each move. For example, you can move from the coins in Figure 28(a) to Figure 28(b) by flipping the three coins. So the weight for this move is 3. * WeightedNineTailModel 学习要点 1.熟悉图的各种存储结构及其构造算法,了解实际问题的求解效率与采用何种存储结构和算法有密切联系。 2. 熟练掌握图的两种搜索路径的遍历:遍历的逻辑定义、深度优先搜索的两种形式(递归和非递归)和广度优先搜索的算法。 3. 应用图的遍历算法求解各种简单路径问题。 4. 理解教科书中讨论的各种图的应用算法。 第12讲 加权图及其应用 * 内容提要 使用连接矩阵和优先队列来表示加权边 设计加权图 设计实现最小生成树Prim算法 设计实现最小生成树Kruskal算法 设计实现单源最短路径Dijkstra算法 设计实现单源最短路径Floyd算法 * 加权图的表示 * 加权边的表示:边数组 加权邻接矩阵 优先邻接链表 加权边的表示:边数组 * int[][] edges = {{0, 1, 2}, {0, 3, 8}, {1, 0, 2}, {1, 2, 7}, {1, 3, 3}, {2, 1, 7}, {2, 3, 4}, {2, 4, 5}, {3, 0, 8}, {3, 1, 3}, {3, 2, 4}, {3, 4, 6}, {4, 2, 5}, {4, 3, 6} }; 带权图及其邻接矩阵 加权邻接矩阵 * 优先邻接链表 * * Graph TestWeightedGraph AbstractGraph WeightedGraph TestWeightedGraph 最小生成树 最小生成树的基本概念 一个有n个结点的连通图的生成树是原图的极小连通子图,它包含原图中的所有n个
文档评论(0)