V
- the graph vertex typeE
- the graph edge typepublic class ClosestFirstIterator<V,E> extends CrossComponentIterator<V,E,FibonacciHeapNode<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.
crossComponentTraversal, graph, nListeners, reusableEdgeEvent, reusableVertexEvent, reuseEvents
Constructor and Description |
---|
ClosestFirstIterator(Graph<V,E> g)
Creates a new closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph<V,E> g,
Iterable<V> startVertices)
Creates a new closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph<V,E> g,
Iterable<V> startVertices,
double radius)
Creates a new radius-bounded closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph<V,E> g,
V startVertex)
Creates a new closest-first iterator for the specified graph.
|
ClosestFirstIterator(Graph<V,E> g,
V startVertex,
double radius)
Creates a new radius-bounded closest-first 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, 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)
g
- the graph to be iterated.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)
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.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, Iterable<V> startVertices, double radius)
null
.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 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,FibonacciHeapNode<org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
CrossComponentIterator.isConnectedComponentExhausted()
protected void encounterVertex(V vertex, E edge)
CrossComponentIterator
encounterVertex
in class CrossComponentIterator<V,E,FibonacciHeapNode<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,FibonacciHeapNode<org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
vertex
- the vertex re-encounterededge
- the edge via which the vertex was re-encounteredprotected V provideNextVertex()
CrossComponentIterator
next
method.provideNextVertex
in class CrossComponentIterator<V,E,FibonacciHeapNode<org.jgrapht.traverse.ClosestFirstIterator.QueueEntry<V,E>>>
CrossComponentIterator.provideNextVertex()
Copyright © 2017. All rights reserved.