Я хочу сделать простой неориентированный немаркированный (ребра не помечены) граф A<->B
в JGraphT 0.8.3:
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"));
}
}
Я получаю этот вывод:
$ java -cp 'jgrapht-jdk1.6.jar:.' A
edges of A: []
edges of B: []
Почему множества ребер вершин A
и B
пусты? Также для чего нужен параметр класса SimpleGraph
? Вроде бы тип ребер, но так как мои ребра здесь не помечены, то неужели это не имеет значения? Кажется, что все классы графов принимают класс ребра (edgeClass
) в качестве параметра. Не могу найти где в документации описано edgeClass
.
Я обнаружил, что если пометить ребро (изменить строку addEdge
на sg.addEdge("A", "B", "an_edge");
), то это сработает... но я не хочу помечать ребра...
$ java -cp 'jgrapht-jdk1.6.jar:.' A
edges of A: [an_edge]
edges of B: [an_edge]