2012-05-06 1 views

답변

0

모든 정점과 모든 가장자리를 반복하여 그래프를 복사하고 새 그래프에 추가하여 그래프를 수동으로 복사 할 수 있습니다. 당신이 당신의 Graph<String, String>에 대한 StringVE를 교체해야하므로, 제네릭

+0

나는이 그래프는 <문자열, 문자열> 함수 getVertices()을 정점으로 수집 를 반환해야합니다. getEdges() 함수는 가장자리 ID가있는 콜렉션을 반환하지만이 가장자리로 연결된 꼭지점을 얻지 못합니다 ... 특정 가장자리로 연결된 꼭지점을 확인하는 유일한 방법은 graph.toString() method ... – user1377963

7

코드 아래 API에 getVertices()를 참조하십시오.

Graph<V, E> src; 
    Graph<V, E> dest; 

    for (V v : src.getVertices()) 
     dest.addVertex(v); 

    for (E e : src.getEdges()) 
     dest.addEdge(e, src.getIncidentVertices(e)); 
+0

이것은 기본적으로 정확 합니다만, 하나의 질의와 하나의 향상 : (1) V, E를 String으로 대체하지 말고 그래프의 유형으로 바꾸십시오 (그리고 자신 만의 정적 방법도 필요하지 않거나 그것을하고 싶지 않습니다). (2) 모든 정점에 인시던트 엣지가있는 선험적 지식이 있고 정이 제공하는 그래프 클래스를 사용하는 경우 첫 번째 루프를 생략 할 수 있습니다. addEdge가 없으면 인시던트 가장자리를 추가합니다. –

0

당신은 정점의 간단한 복사를 할 수있는 새로운 그래프를 만들 것입니다,하지만 내부 참조에 의해 전달 될 객체가이 복제 라이브러리를 https://code.google.com/p/cloning/

을 사용하고을 할 수 있도록 & 가장자리, 전체 복사 :

Cloner cloner = new Cloner(); 
Graph<V, E> clonedGraph = cloner.deepClone(graph);