演算法(第4版) Chapter 4 4 最短路徑

2021-09-17 19:57:00 字數 3909 閱讀 3869

algorithms fourth edition

written by robert sedgewick & kevin wayne

translated by 謝路雲

chapter 4 section 4 最短路徑

兩條路徑

s --> w

s --> v , v -> w

比較哪一條路徑更短,記錄更短的那個邊。

若 路徑1 > 路徑2,新路徑 s --> v , v -> w 更短,更新,放鬆成功

放鬆g中的任意邊,直到不存在有效邊為止

非負權重

distto[s]=0, distto[v]=infinity(v≠s)

將distto中 離頂點s最近的非樹頂點放鬆, 並加入到樹中

重複2,直到所有頂點都在樹中或者 所有的非樹頂點的distto值均為無窮大

public class dijkstrasp 

private void relax(edgeweighteddigraph g, int v) }}

public double distto(int v)

public boolean haspathto(int v)

public iterablepathto(int v)

}

不需要陣列marked,!marked[v] 等價於 distto[v]無窮大

dijkstrasp演算法忽略relax()方法中的distto[v]部分的**,即可得到prim演算法的即時版本

任意頂點對的最短路徑怎麼求?

public class dijkstraallpairssp 

iterablepath(int s, int t)

double dist(int s, int t)

}

更快更簡單更好的演算法

distto[s]=0, distto[v]=infinity(v≠s)

按照拓撲順序放鬆所有頂點

複雜度空間: v

public class acyclicsp 

private void relax(edgeweighteddigraph g, int v) }}

public double distto(int v)

public boolean haspathto(int v)

public iterablepathto(int v)

return path;}}

做乙個副本,將無環加權有向圖的權重取反即可。(相關操作就是判斷的不等號符號改反,初始值設為負無窮)

副本的最短路徑即為原圖的最長路徑。

輸入文字格式(解讀,共10個任務,任務0耗時41秒,需在1,7,9之前完成...)

10

41.0 1 7 9

51.0 2

50.0

36.0

38.0

45.0

21.0 3 8

32.0 3 8

32.0 2

29.0 4 6

public class cpm 

}acycliclp lp = new acycliclp(g, s); //最長路徑

}if (cost++ % g.v() == 0) //居然在這裡判斷是否迴圈了v輪。。。

findnegativecycle();}}

public double distto(int v) // standard client query methods

public boolean haspathto(int v) // for spt implementatations

public iterablepathto(int v) // (see page 649.)

private void findnegativecycle()

public boolean hasnegativecycle()

public iterablenegativecycle()

}

演算法(第4版) Chapter 1

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 public static int indexof int key,int a return 1 exe 1.1.14 編寫乙個靜態...

演算法(第4版) Chapter 2 4 優先佇列

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 chapter 2 section 4 優先佇列 定義 當一棵二叉樹的每個結點都大於等於它的兩個子節點時,它稱為堆有序 相應地,在堆...

演算法(第4版) Chapter 4 3 最小生成樹

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 chapter 4 section 3 最小生成樹 定義約定 初始狀態下所有邊均為灰色,找到一種切分,它產生的橫切邊均不為黑色。將它...