2015-08-09 8 views
1

Я, кажется, столкнулся с неинтуитивным расхождением между тем, как вершины хранятся в графиках jgrapht (в данном случае SimpleDirectedGraph) в vertexSet, а также как они хранятся в качестве цели края (см. Ниже для моего использования getEdgeTarget). Я думал, что они идентичны - то есть они указывают на один и тот же объект (например, SteveVertex) и имеют один и тот же хэш-код - но они, кажется, расположены в разных местах, как-то, за один признак ниже.Jgrapht: Является ли целевая вершина ребра, хранящегося иначе, чем одна и та же вершина в наборе вершин граф?

Когда мой код ниже встречает цикл, в котором он встречает исходную начальную вершину как цель ребра, она не показывает эту вершину как посещенную, хотя hashCode (SteveVertex @ vertex1) идентичен к первой записи вершинного набора, которая показывает, что вершина была посещена.

Любая помощь будет принята с благодарностью при диагностике этого.

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); 

    ... 

} 

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^