감독 가중 그래프의 가장자리를, 반전이에이에서 내 그래프 작은 예에 가장자리를 반전하려고
(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