Module org.jgrapht.core
Class BlossomVEdge.BlossomNodesIterator
java.lang.Object
org.jgrapht.alg.matching.blossom.v5.BlossomVEdge.BlossomNodesIterator
- All Implemented Interfaces:
Iterator<BlossomVNode>
- Enclosing class:
BlossomVEdge
public static class BlossomVEdge.BlossomNodesIterator
extends Object
implements Iterator<BlossomVNode>
An iterator which traverses all nodes in the blossom. It starts from the endpoints of the
(+,+) edge and goes up to the blossom root. These two paths to the blossom root are called
branches. The branch of the blossomFormingEdge.head[0] has direction 0, the one has direction
1.
Note: the nodes returned by this iterator aren't consecutive
Note: this iterator must return the blossom root in the first branch, i.e. when the direction is 0. This feature is needed to setup the blossomSibling references correctly
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate BlossomVEdge
The (+, +) edge of the blossomprivate BlossomVNode
Helper variable, is used to determine whether currentNode has been returned or notprivate int
The current direction of this iteratorprivate BlossomVNode
The node this iterator is currently onprivate BlossomVNode
Blossom's root -
Constructor Summary
ConstructorsConstructorDescriptionBlossomNodesIterator
(BlossomVNode root, BlossomVEdge blossomFormingEdge) Constructs a new BlossomNodeIterator for theroot
andblossomFormingEdge
-
Method Summary
Modifier and TypeMethodDescriptionprivate BlossomVNode
advance()
Advances this iterator to the next node in the blossomint
boolean
hasNext()
next()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining, remove
-
Field Details
-
root
Blossom's root -
currentNode
The node this iterator is currently on -
current
Helper variable, is used to determine whether currentNode has been returned or not -
currentDirection
private int currentDirectionThe current direction of this iterator -
blossomFormingEdge
The (+, +) edge of the blossom
-
-
Constructor Details
-
BlossomNodesIterator
Constructs a new BlossomNodeIterator for theroot
andblossomFormingEdge
- Parameters:
root
- the root of the blossom (the node which isn't matched to another node in the blossom)blossomFormingEdge
- a (+, +) edge in the blossom
-
-
Method Details
-
hasNext
public boolean hasNext()- Specified by:
hasNext
in interfaceIterator<BlossomVNode>
-
getCurrentDirection
public int getCurrentDirection()- Returns:
- the current direction of this iterator
-
next
- Specified by:
next
in interfaceIterator<BlossomVNode>
-
advance
Advances this iterator to the next node in the blossom- Returns:
- an unvisited node in the blossom
-