public class ClosestFirstIterator extends CrossComponentIterator
The metric for closest here is the path length from a start vertex. Edge.getWeight() is summed to calculate path length. Negative edge weights will result in an IllegalArgumentException. Optionally, path length may be bounded by a finite radius.
| Constructor and Description |
|---|
ClosestFirstIterator(Graph g)
Creates a new closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph g,
java.lang.Object startVertex)
Creates a new closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph g,
java.lang.Object startVertex,
double radius)
Creates a new radius-bounded closest-first iterator for the specified
graph.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
encounterVertex(java.lang.Object vertex,
Edge edge)
Update data structures the first time we see a vertex.
|
protected void |
encounterVertexAgain(java.lang.Object vertex,
Edge edge)
Override superclass.
|
double |
getShortestPathLength(java.lang.Object vertex)
Get the length of the shortest path known to the given vertex.
|
Edge |
getSpanningTreeEdge(java.lang.Object vertex)
Get the spanning tree edge reaching a vertex which has been seen already
in this traversal.
|
protected boolean |
isConnectedComponentExhausted()
Returns true if there are no more uniterated vertices in the
currently iterated connected component; false otherwise.
|
protected java.lang.Object |
provideNextVertex()
Returns the vertex to be returned in the following call to the iterator
next method. |
void |
setCrossComponentTraversal(boolean crossComponentTraversal)
Sets the cross component traversal flag - indicates whether to traverse
the graph across connected components.
|
getSeenData, hasNext, isSeenVertex, next, putSeenDataaddTraversalListener, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexTraversed, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setReuseEventspublic ClosestFirstIterator(Graph g)
g - the graph to be iterated.public ClosestFirstIterator(Graph g, java.lang.Object startVertex)
null, iteration will start at an arbitrary
vertex and will not be limited, that is, will be able to traverse all
the graph.g - the graph to be iterated.startVertex - the vertex iteration to be started.public ClosestFirstIterator(Graph g, java.lang.Object startVertex, double radius)
null.g - the graph to be iterated.startVertex - the vertex iteration to be started.radius - limit on path length, or Double.POSITIVE_INFINITY for
unbounded search.public void setCrossComponentTraversal(boolean crossComponentTraversal)
AbstractGraphIteratorsetCrossComponentTraversal in class AbstractGraphIteratorcrossComponentTraversal - if true traverses across
connected components.public double getShortestPathLength(java.lang.Object vertex)
vertex - vertex being sought from start vertexpublic Edge getSpanningTreeEdge(java.lang.Object vertex)
vertex - the spanned vertex.protected boolean isConnectedComponentExhausted()
CrossComponentIteratorisConnectedComponentExhausted in class CrossComponentIteratorCrossComponentIterator.isConnectedComponentExhausted()protected void encounterVertex(java.lang.Object vertex,
Edge edge)
CrossComponentIteratorencounterVertex in class CrossComponentIteratorvertex - the vertex encounterededge - the edge via which the vertex was encountered, or null if
the vertex is a starting pointCrossComponentIterator.encounterVertex(java.lang.Object,
org._3pq.jgrapht.Edge)protected void encounterVertexAgain(java.lang.Object vertex,
Edge edge)
encounterVertexAgain in class CrossComponentIteratorvertex - the vertex re-encounterededge - the edge via which the vertex was re-encounteredprotected java.lang.Object provideNextVertex()
CrossComponentIteratornext method.provideNextVertex in class CrossComponentIteratorCrossComponentIterator.provideNextVertex()