나는 (표시가없는 가장자리) JGraphT 0.8.3에서 그래프 A<->B
을 간단한 방향성 비 표지를 만들고 싶어 :JGraphT의 간단한 undirected unlabelled graph가 작동하지 않습니까? edgeClass 매개 변수 란 무엇입니까?
$ java -cp 'jgrapht-jdk1.6.jar:.' A
edges of A: []
edges of B: []
왜 가장자리의 집합입니다 :
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
class A {
public static void main(String[] args) {
SimpleGraph<String, String> sg =
new SimpleGraph<String, String>(String.class);
sg.addVertex("A");
sg.addVertex("B");
sg.addEdge("A", "B");
System.out.println("edges of A: " + sg.edgesOf("A"));
System.out.println("edges of B: " + sg.edgesOf("B"));
}
}
내가이 출력을 얻을 버텍스 A
및 B
이 비어 있습니까? 또한 SimpleGraph
의 클래스 매개 변수는 무엇입니까? 그것은 가장자리의 유형 인 것 같습니다. 그러나 여기 내 가장자리는 레이블이 지정되지 않았으므로 분명히 중요하지 않습니다. 모든 그래프 클래스는 모서리 클래스 (edgeClass
)를 매개 변수로 사용합니다. 문서 edgeClass
의 어디에 설명되어 있는지 찾을 수 없습니다.
나는 가장자리에 레이블을 경우 ...
$ java -cp 'jgrapht-jdk1.6.jar:.' A
edges of A: [an_edge]
edges of B: [an_edge]
하지만 가장자리 클래스도 무엇입니까? 왜 그것은'String'으로 깨지는가? 나는 또한 가장자리 클래스를'Object'로 만들 수 있다는 것을 알아 냈고, 또한 동작 할 것이다. 나는 인터넷과 문서를 꽤 많이 조사했고 그것이 놀랍다는 것을 발견했다. – Dog
a) Edge 클래스는 가장자리에 가중치를 설정하려는 경우 (예 : 여행 컨텍스트에서) 또는 가장자리에 유형을 지정하려는 경우 (예 : 온톨로지) 이러한 업적이 필요하지 않은 경우 DefaultEdge가 적절합니다 대답. b) 문자열을 식별 할 수없는 레이블없이 문자열로 중단되지 않았습니다. graph.toString()은 String 가장자리가있는 경우에도 edge를 보여줍니다 : graph : ([A, B, C], [= {A, B}]). 빈 문자열은 가장자리 식별자입니다. 레이블없이 다른 가장자리를 삽입하면 빈 문자열이 이미 있고 equals 및 hashcode 메소드로 삽입이 작동하므로 설정되지 않습니다. –
오. 그래서 리플렉션을 사용하여'String'의 기본 생성자를 호출합니까? – Dog