Jgrapht:边缘的目标顶点是否与图形顶点集中的相同顶点存储的不同?

时间:2015-08-09 18:52:25

标签: java edge vertex jgrapht

我似乎在顶点集中的jgrapht图(在本例中为SimpleDirectedGraph)中如何存储顶点之间存在非直观的差异,以及它们如何存储为边的目标(请参阅下面的我的内容)使用getEdgeTarget)。我以为它们是相同的 - 即它们指向相同的对象(在这种情况下是一个SteveVertex)并且具有相同的哈希码 - 但是它们似乎位于不同的地方,每个症状如下所示。

当下面的代码遇到一个循环时,它遇到原始起始顶点作为边的目标,它不会将此顶点显示为已访问过,即使hashCode(SteveVertex @ vertex1)与vertexSet的第一个条目,它将顶点显示为已访问过。

在诊断时会非常感谢任何帮助。

private static SimpleDirectedGraph<SteveVertex, DefaultEdge> graph;

private static void SteveDepthFirstSearch(SteveVertex startVertex)
 {
     if (!startVertex.visited()) {
         startVertex.visit();
         for (DefaultEdge e : graph.outgoingEdgesOf(startVertex))   
             SteveDepthFirstSearch(graph.getEdgeTarget(e));

         startVertex.setFinishOrder(counter);
         counter++;
     }

 }


public static void main(String[] args) {  

    ...

    for (SteveVertex v: graph.vertexSet())
        SteveDepthFirstSearch(v);

    ...

}

1 个答案:

答案 0 :(得分:0)

我能够很好地回答这个问题,如果有兴趣请点击这里:

http://sourceforge.net/p/jgrapht/mailman/message/34361595/