2012-01-07 5 views
0

모든 정점을 유지하면서 정점의 내용을 변경하는 방법이 있습니까? 나는 하나를 찾을 수 없지만 그것이 제공 될 무언가처럼 보입니다.JGraphT로 정점의 내용을 변경

답변

0

정점의 내용을 변경한다는 것은 무엇을 의미합니까? 정점은 제네릭으로 만들어 지므로 모든 객체를 거기에 넣을 수 있다는 것을 의미합니다. 즉,이 객체의 내용을 바꿀 수있는 방법을 제공하는 것은 개발자가 결정할 수 없습니다. 아니면 완전히 새로운 정점 (완전히 새로운 정점)을 넣고 이전의 모든 관계를 저장하고 싶습니까? 그런 다음이 꼭지점 (java.util.Set<E> edgesOf(V vertex))을 사용하여 모서리를 찾아 제거 (boolean removeEdge(E e))하고 새 버텍스 (E addEdge(V sourceVertex, V targetVertex))가 포함 된 새 것으로 교체해야합니다.

0

JGraphT에는 정점 교체 방법이 없습니다. 이를 사용하여 원하는 것을 할 수 있습니다.

public static <V, E> void replaceVertex(Graph<V, E> graph, V vertex, V replace) { 
    graph.addVertex(replace); 
    for (E edge : graph.outgoingEdgesOf(vertex)) graph.addEdge(replace, graph.getEdgeTarget(edge), edge); 
    for (E edge : graph.incomingEdgesOf(vertex)) graph.addEdge(graph.getEdgeSource(edge), replace, edge); 
    graph.removeVertex(vertex); 
} 
관련 문제