pub struct Topo<N, VM> {
tovisit: Vec<N>,
ordered: VM,
}Expand description
A topological order traversal for a graph.
Note that Topo only visits nodes that are not part of cycles,
i.e. nodes in a true DAG. Use other visitors like DfsPostOrder or
algorithms like kosaraju_scc to handle
graphs with possible cycles.
Fields§
§tovisit: Vec<N>§ordered: VMImplementations§
Source§impl<N, VM> Topo<N, VM>
impl<N, VM> Topo<N, VM>
Sourcepub fn new<G>(graph: G) -> Self
pub fn new<G>(graph: G) -> Self
Create a new Topo, using the graph’s visitor map, and put all
initial nodes in the to visit list.
Sourcepub fn with_initials<G, I>(graph: G, initials: I) -> Self
pub fn with_initials<G, I>(graph: G, initials: I) -> Self
Create a new Topo with initial nodes.
Nodes with incoming edges are ignored.
fn extend_with_initials<G>(&mut self, g: G)where
G: IntoNodeIdentifiers + IntoNeighborsDirected<NodeId = N>,
Sourcefn empty<G>(graph: G) -> Self
fn empty<G>(graph: G) -> Self
Create a new Topo, using the graph’s visitor map with no starting
index specified.
Sourcepub fn reset<G>(&mut self, graph: G)
pub fn reset<G>(&mut self, graph: G)
Clear visited state, and put all initial nodes in the to visit list.
Sourcepub fn next<G>(&mut self, g: G) -> Option<N>where
G: IntoNeighborsDirected + Visitable<NodeId = N, Map = VM>,
pub fn next<G>(&mut self, g: G) -> Option<N>where
G: IntoNeighborsDirected + Visitable<NodeId = N, Map = VM>,
Return the next node in the current topological order traversal, or
None if the traversal is at the end.
Note: The graph may not have a complete topological order, and the only way to know is to run the whole traversal and make sure it visits every node.