有向重み付きグラフのエッジを、反転:これにこのことから、私は私のグラフ小さな例では、エッジを逆にしようとしています
(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
ない以前
これは宿題の問題のように見えるので、これは(もDirectedEdge
私は 'adj [v] .add(e);行に問題があると思います。' adj [v] 'がどこから来ているのか分かりません。コードを更新してください。 – entpnerd
'EdgeWeightedDigraph'の実装を追加してもよろしいですか?また、そのクラスを変更することができますか、ソリューションはそのクラスの外になければなりませんか? – entpnerd
元のグラフを変更するのではなく、エッジを逆にして新しいグラフを作成するのが目的だと推測しますか?あなたが提供したソースコードと 'Edge'クラスの実装に基づいて、インプレースの解決策が尋ねられました。 – entpnerd