Next: Dijkstra(flexible) ( GIT_DIJKSTRA )
Up: Graphs and Iterators
Previous: Topological Sort (flexible) (
Contents
Index
Strongly Connected Components (flexible) ( GIT_SCC )
Definition
An instance algorithm of class GIT_SCC< Out, In, It, OutSt, InSt, NSt, Mark > is
an implementation of an algorithm that computes
the strongly connected components.
Iterator version: There is an iterator version of this algorithm:
SCC_It. Usage is similar to that of node iterators without
the ability to go backward in the sequence and only a graph is
allowed at creation time. Method compnumb() returns the component
number of the current node.
#include < LEDA/graph/graph_iterator.h >
Creation
GIT_SCC< Out, In, It, OutSt, InSt, NSt, Mark > 
algorithm(OutSt ost, InSt ist, Mark ma, Out oai, const It& it, In iai) 


creates an instance algorithm of this class bound to
the stack st and data accessor ma.

Preconditions:
 Out is an adjacency iterator that iterates over the
outgoing edges of a fixed vertex
 In is an adjacency iterator that iterates over the
incoming edges of a fixed vertex
 OutSt is stack parameterized with items of type Out
 InSt is stack parameterized with items of type In
 Mark is a data accessor that has access to a boolean value
that is associated with each node of the graph
Operations
int 
algorithm.state() 
returns the internal state.

 NEXT_OUT =first phase,
 NEXT_ORDER =order phase,
 NEXT_IN=second phase,
 NEXT_DONE =algorithm finished
void 
algorithm.finish_algo() 
executes the algorithm until finished() is true.

bool 
algorithm.finished() 
returns true if the algorithm is finished.

InSt& 
algorithm.get_in_stack() 
gives direct access to the internal stack of incoming adjacency iterators.

In 
algorithm.in_current() 
returns the current iterator of the internal stack of incoming
adjacency iterators.

OutSt& 
algorithm.get_out_stack() 
gives direct access to the internal stack of outgoing adjacency iterators.

Out 
algorithm.out_current() 
returns the current iterator of the internal stack of outgoing
adjacency iterators.

itnodetype 
algorithm.current_node() 
returns the current node.

int 
algorithm.compnumb() 
returns the component number of the fixed node of the current
iterator if current state is NEXT_IN.

int 
algorithm.next() 
Performs one iteration of the core loop of the algorithm.

Implementation
Each operation requires constant time.
The algorithm has running time
( V +  E).
Next: Dijkstra(flexible) ( GIT_DIJKSTRA )
Up: Graphs and Iterators
Previous: Topological Sort (flexible) (
Contents
Index