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 最小生成樹 定義約定 初始狀態下所有邊均為灰色,找到一種切分,它產生的橫切邊均不為黑色。將它...