#include <kosaraju.H>
Métodos públicos | |
void | operator() (GT &g, DynDlist< GT > &blk_list, DynDlist< typename GT::Arc * > &arc_list) |
void | operator() (GT &g, DynDlist< DynDlist< typename GT::Node * > > &list) |
Calcula los componentes fuertemente conexos de un grafo según el algoritmo de Kosaraju.
Kosaraju_Connected_Components() toma un digrafo g, "supuestamente débilmente conexo", calcula sus subgrafos o componentes inconexos y los almacena en una lista dinámica list de subdigrafos mapeados, tanto en los nodos como en los arcos. El énfasis en el supuesto carácter conexo del grafo se debe a que si el grafo no fuese conexo, entonces la lista resultante contendría un solo elemento correspondiente al digrafo copia mapeado de g. Si este fuese el caso, entonces es preferible hacerlo con la función copy_graph().
La clase se basa en el algoritmo de Kosaraju.
La función emplea dos parámetros tipo:
La función se vale del bit build_subtree para marcar nodos y arcos visitados.
El algoritmo internamente descubre los componentes mediante búsquedas en profundidad.
|
inline |
Calcula los componentes fuertemente conexos de un grafo según el algoritmo de Kosaraju.
[in] | g | el grafo. |
[out] | blk_list | lista de sub-grafos mapeados a g correspondiente a los componentes fuertemente conexos de g. |
[out] | arc_list | lista de arcos de cruce entre los componentes. |
|
inline |
Calcula los componentes fuertemente conexos de un grafo según el algoritmo de Kosaraju.
[in] | g | el grafo. |
[out] | list | lista de listas de nodos que conforman los componentes. Cada lista es una listas de los nodos del componente. |