V
 the graph vertex typeE
 the graph edge typepublic class ClosestFirstIterator<V,E> extends CrossComponentIterator<V,E,org.jheaps.AddressableHeap.Handle<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
The metric for closest here is the weighted path length from a start vertex, i.e. Graph.getEdgeWeight(Edge) is summed to calculate path length. Negative edge weights will result in an IllegalArgumentException. Optionally, path length may be bounded by a finite radius. A custom heap implementation can be specified during the construction time. Pairing heap is used by default.
crossComponentTraversal, graph, nListeners, reusableEdgeEvent, reusableVertexEvent, reuseEvents
Constructor and Description 

ClosestFirstIterator(Graph<V,E> g,
Iterable<V> startVertices)
Creates a new closestfirst iterator for the specified graph.

ClosestFirstIterator(Graph<V,E> g,
Iterable<V> startVertices,
double radius)
Creates a new radiusbounded closestfirst iterator for the specified graph.

ClosestFirstIterator(Graph<V,E> g,
Iterable<V> startVertices,
double radius,
Supplier<org.jheaps.AddressableHeap<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>> heapSupplier)
Creates a new radiusbounded closestfirst iterator for the specified graph.

ClosestFirstIterator(Graph<V,E> g,
V startVertex)
Creates a new closestfirst iterator for the specified graph.

ClosestFirstIterator(Graph<V,E> g,
V startVertex,
double radius)
Creates a new radiusbounded closestfirst iterator for the specified graph.

ClosestFirstIterator(Graph<V,E> g,
V startVertex,
double radius,
Supplier<org.jheaps.AddressableHeap<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>> heapSupplier)
Creates a new radiusbounded closestfirst iterator for the specified graph.

Modifier and Type  Method and Description 

protected void 
encounterVertex(V vertex,
E edge)
Update data structures the first time we see a vertex.

protected void 
encounterVertexAgain(V vertex,
E edge)
Override superclass.

double 
getShortestPathLength(V vertex)
Get the weighted length of the shortest path known to the given vertex.

E 
getSpanningTreeEdge(V 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 V 
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.

finishVertex, getEntireGraphVertexIterator, getSeenData, hasNext, isSeenVertex, next, putSeenData
addTraversalListener, createEdgeTraversalEvent, createVertexTraversalEvent, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, getGraph, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setReuseEvents
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEachRemaining
public ClosestFirstIterator(Graph<V,E> g, V 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<V,E> g, Iterable<V> startVertices)
g
 the graph to be iterated.startVertices
 the vertices iteration to be started.public ClosestFirstIterator(Graph<V,E> g, V startVertex, double radius)
null
.g
 the graph to be iterated.startVertex
 the vertex iteration to be started.radius
 limit on weighted path length, or Double.POSITIVE_INFINITY for unbounded
search.public ClosestFirstIterator(Graph<V,E> g, V startVertex, double radius, Supplier<org.jheaps.AddressableHeap<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>> heapSupplier)
null
. This algorithm will use the heap supplied by the heapSupplier
.g
 the graph to be iterated.startVertex
 the vertex iteration to be started.radius
 limit on weighted path length, or Double.POSITIVE_INFINITY for unbounded
search.heapSupplier
 supplier of the preferable heap implementationpublic ClosestFirstIterator(Graph<V,E> g, Iterable<V> startVertices, double radius)
null
.
Iteration order is based on minimum distance from any of the start vertices, regardless of
the order in which the start vertices are supplied. Because of this, the entire traversal is
treated as if it were over a single connected component with respect to events fired.g
 the graph to be iterated.startVertices
 the vertices iteration to be started.radius
 limit on weighted path length, or Double.POSITIVE_INFINITY for unbounded
search.public ClosestFirstIterator(Graph<V,E> g, Iterable<V> startVertices, double radius, Supplier<org.jheaps.AddressableHeap<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>> heapSupplier)
null
.
Iteration order is based on minimum distance from any of the start vertices, regardless of
the order in which the start vertices are supplied. Because of this, the entire traversal is
treated as if it were over a single connected component with respect to events fired. This
algorithm will use the heap supplied by the heapSupplier
.g
 the graph to be iterated.startVertices
 the vertices iteration to be started.radius
 limit on weighted path length, or Double.POSITIVE_INFINITY for unbounded
search.heapSupplier
 supplier of the preferable heap implementationpublic void setCrossComponentTraversal(boolean crossComponentTraversal)
AbstractGraphIterator
setCrossComponentTraversal
in class AbstractGraphIterator<V,E>
crossComponentTraversal
 if true
traverses across connected components.public double getShortestPathLength(V vertex)
vertex
 vertex being sought from start vertexpublic E getSpanningTreeEdge(V vertex)
vertex
 the spanned vertex.protected boolean isConnectedComponentExhausted()
CrossComponentIterator
isConnectedComponentExhausted
in class CrossComponentIterator<V,E,org.jheaps.AddressableHeap.Handle<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
CrossComponentIterator.isConnectedComponentExhausted()
protected void encounterVertex(V vertex, E edge)
CrossComponentIterator
encounterVertex
in class CrossComponentIterator<V,E,org.jheaps.AddressableHeap.Handle<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
vertex
 the vertex encounterededge
 the edge via which the vertex was encountered, or null if the vertex is a
starting pointCrossComponentIterator.encounterVertex(Object, Object)
protected void encounterVertexAgain(V vertex, E edge)
encounterVertexAgain
in class CrossComponentIterator<V,E,org.jheaps.AddressableHeap.Handle<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
vertex
 the vertex reencounterededge
 the edge via which the vertex was reencounteredprotected V provideNextVertex()
CrossComponentIterator
next
method.provideNextVertex
in class CrossComponentIterator<V,E,org.jheaps.AddressableHeap.Handle<Double,org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
CrossComponentIterator.provideNextVertex()
Copyright © 2019. All rights reserved.