我試圖扭轉邊在我的圖小例子的邊緣,從這個:扭轉向加權圖
(1)---1--->(8)
\ /
2 1
\ /
v v
(4)
此。
(1)<---1---(8)
^ ^
\ /
2 1
\ /
(4)
我想:
private static void Transpose(EdgeWeightedDigraph G) {
for (int v = 0; v < G.V(); v++) {
// reverse so that adjacency list is in same order as original
Stack<DirectedEdge> reverse = new Stack<DirectedEdge>();
for (DirectedEdge e : G.adj(v)) {
reverse.push(e);
}
for (DirectedEdge e : reverse) {
adj[v].add(e);
}
}
}
任何想法嗎?
更新1:
private static Bag<DirectedEdge>[] adj; // adj[v] = adjacency list for vertex v
adj = (Bag<DirectedEdge>[]) new Bag[G.V()];
for (int v = 0; v < G.V(); v++)
adj[v] = new Bag<DirectedEdge>();
爲我的代碼的輸出是相同的曲線圖中,我的代碼不會反轉邊緣
更新2: EdgeWeightedGraph
更新3:
這是正確的鏈接:EdgeWeightedDigraph
不是以前
我認爲行'adj [v] .add(e);'不知道'adj [v]'是從哪裏來的。請更新代碼。 – entpnerd
你介意添加'EdgeWeightedDigraph'的實現嗎?此外,該課程是否可以改變,或者解決方案是否必須在該課程之外? – entpnerd
我正確地猜測目標不是改變原始圖形,而是創建一個邊緣反轉的新圖形?根據您提供的源代碼和'Edge'類的實現,我懷疑就地解決方案是什麼問題。 – entpnerd