Johnsonsalgorithm.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Johnsonsalgorithm.ppt

Johnson’s algorithm Johnson’s演算法可用於計算All pairs shortest path問題。 在邊的數量不多的時候,如|E|=O(|V|log|V|)時,能有比Warshall-Floyd演算法較佳的效能。 其輸入需求是利用Adjacency list表示的圖。 Graph reweighting Producing Nonnegative Weights Johnson’s algorithm Johnson’s algorithm Johnson’s 演算法利用reweighing來除去負邊,使得該圖可以套用Dijkstra演算法,來達到較高的效能。 Reweighing是將每個點v設定一個高度h(v),並且調整邊的weight function w(u,v)成為w’(u,v)=w(u,v)+h(u)-h(v)。 令δ‘(u,v)如此調整之後的最短距離,則原先的最短距離δ(u,v)=δ‘(u,v)-h(u)+h(v)。 Johnson’s algorithm Johnson(G) { compute G’, where V[G’]=V[G]?{s} and E[G’]=E[G]?{(s,v):v?V[G] if Bellman-Ford(G’,w,s)=False then print “? a neg-weight cycle” else for each vertex v ?V[G’] set h(v)=?(s,v) computed by Bellman-Ford algo. for each edge (u,v)?E[G’] w’(u,v)=w(u,v)+h(u)-h(v) for each vertex u ?V[G] run Dijkstra(G,w’,u) to compute ?’(u,v) for each v ?V[G] duv=?’(u,v)-h(u)+h(v) return D } Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm範例 Johnson’s algorithm複雜度分析 執行一次Bellman-Ford。O(|V||E|)。 執行|V|次Dijkstra。 使用Fibonacci heap,總計O(|V|2log|V|+|V||E|) 。 使用Binary heap,總計O(|V||E|log|V|)。 當|E|足夠小,比Warshall-Floyd快。 * Theorem. Given a label h(v) for each v ? V, reweight each edge (u, v) ? E by ?(u, v) = w(u, v) + h(u) – h(v). Then, all paths between the same two vertices are reweighted by the same amount. Proof. Let p = v1 → v2 → ? → vk be a path in the grah Then, we have Find a vertex labeling h such that ?(u, v) ≥ 0 for all (u, v) ? E by using Bellman-Ford to solve the difference constraints h(v) – h(u) ≤ w(u, v), or determine that a negative-weight cycle exists. Time = O(VE). Run Dijkstra’s algorithm from each vertex using ?. Time = O(VE + V2 lg V). Reweight each shortest-path length ?(p) to produce the shortest-path lengths w(p) of the original graph. Time = O(V2). To

文档评论(0)

381697660 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档