[jgrapht-users] Non-determinstic getSpanningTreeEdge call
Brought to you by:
barak_naveh,
perfecthash
From: Idan M. <ida...@gm...> - 2009-02-15 08:11:39
|
Hi everyone, I'm using the ClosestFirst iterator to calculate a weighted BFS. The problem is, I get non-deterministic results with calling getSpanningTreeEdge for the same graph. Any idea how I can make it deterministic? It's not mentioned in the documentation. Here's the code snippet: private static synchronized NavigationGraph findSpanningTree(NavigationGraph graph) { // Run BFS starting from the root node and create a result graph DirectedGraph<NavigationGraphNode, NavigationGraphEdge> tree = new DefaultDirectedGraph<NavigationGraphNode, NavigationGraphEdge>(NavigationGraphEdge.class); tree.addVertex(graph.getRoot()); ClosestFirstIterator<NavigationGraphNode, NavigationGraphEdge> iterator = new ClosestFirstIterator<NavigationGraphNode, NavigationGraphEdge>(graph.getGraph(), graph.getRoot()); while (iterator.hasNext()) { NavigationGraphNode currVertex = iterator.next(); // Add target vertex and edge to tree tree.addVertex(currVertex); NavigationGraphEdge edge = iterator.getSpanningTreeEdge(currVertex); if (edge != null) { tree.addEdge(graph.getGraph().getEdgeSource(edge), currVertex, edge); } } return (new NavigationGraph(tree, graph.getRoot())); } |