Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::Tarjan_Connected_Components< GT, SA >

#include <Tarjan.H>

Métodos públicos

 Tarjan_Connected_Components (SA &&__sa=SA())
 
 Tarjan_Connected_Components (SA &__sa)
 
void connected_components (GT &g, DynList< GT > &blk_list, DynList< typename GT::Arc * > &arc_list)
 
void connected_components (GT &g, DynList< DynList< typename GT::Node * >> &blks)
 
void connected_components (GT &g, DynList< size_t > &blks)
 
void operator() (GT &g, DynList< GT > &blk_list, DynList< typename GT::Arc * > &arc_list)
 
void operator() (GT &g, DynList< DynList< typename GT::Node * >> &blks)
 
void operator() (GT &g, DynDlist< GT > &blk_list, DynDlist< typename GT::Arc * > &arc_list)
 
void operator() (GT &g, DynDlist< DynDlist< typename GT::Node * >> &blks)
 
bool has_cycle (GT &g)
 Retorna true si el digrafo g contiene al menos un ciclo.
 
bool is_dag (GT &g)
 Retorna true si el grafo dirigido es acíclico.
 
bool compute_cycle (GT &g, Path< GT > &path)
 
bool test_connectivity (GT &g)
 

Descripción detallada

template<class GT, class SA = Dft_Show_Arc<GT>>
class Aleph::Tarjan_Connected_Components< GT, SA >

Operaciones sobre componentes fuertemente conexos de un digrafo empleando el algoritmo de Tarjan para el cálculo de los componentes fuertemente conexos de un grafo.

La clase emplea dos parámetros tipo:

  1. GT: la clase digrafo.
  2. SA: el filtro de arcos que emplea el iterador interno.

Documentación de las funciones miembro

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::connected_components ( GT &  g,
DynList< GT > &  blk_list,
DynList< typename GT::Arc * > &  arc_list 
)
inline

Calcula los componentes fuertemente conexos de un digrafo.

connected_components() toma un digrafo g, "supuestamente débilmente conexo", calcula sus subgrafos o componentes inconexos y los almacena en una lista dinámica blk_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 función se basa en el algoritmo de Tarjan.

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.

Parámetros
[in]gel grafo sobre el cual se desea calcular sus bloques.
[out]blk_listlista de subgrafos mapeados a g con los subgrafos o componentes inconexos de g.
[out]arc_listlista de arcos que conectan a los bloques.
Excepciones
bad_allocsi no hay memoria para construir algún bloque o insertar en la lista.
Ver también
copy_graph()

Hace referencia a Aleph::DynList< T >::append(), IS_NODE_VISITED, Aleph::Filter_Iterator< Container, It, Show_Item >::next() y NODE_COUNTER.

Referenciado por Aleph::Tarjan_Connected_Components< GT, SA >::operator()().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::connected_components ( GT &  g,
DynList< DynList< typename GT::Node * >> &  blks 
)
inline

Calcula los componentes fuertemente conexos de un digrafo.

Esta versión sobrecargada 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 listas de nodos.

Cada lista contiene los nodos que pertenecen al componente fuertemente conexo.

Úsese esta función si no es necesario obtener copias mapeadas de los componentes fuertemente conexos.

La función se basa en el algoritmo de Tarjan.

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.

Puesto que se ahorra el mapeo, esta rutina es más rápida y menos onerosa en memoria que la versión anterior. La desventaja quizá es que no calcula los posibles arcos que podrían interconectar un bloque en un solo sentido.

Parámetros
[in]gel grafo sobre el cual se desea calcular sus bloques.
[out]blkslista de listas de nodos. Cada lista contiene los nodos que conforman un componente conexo.
Excepciones
bad_allocsi no hay memoria para insertar en la lista.
Ver también
copy_graph()

Hace referencia a IS_NODE_VISITED.

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::connected_components ( GT &  g,
DynList< size_t > &  blks 
)
inline

Calcula los componentes fuertemente conexos de un digrafo.

Esta versión sobrecargada connected_components() toma un digrafo g, "supuestamente débilmente conexo" y cuenta sus subgrafos o componentes inconexos junto con sus tamaños.

La función se basa en el algoritmo de Tarjan.

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.

Parámetros
[in]gel grafo sobre el cual se desea calcular sus bloques.
[out]blkslista de enteros positivos. Cada lista contiene el tamaño de un componente conexo distinto.
Excepciones
bad_allocsi no hay memoria para insertar en la lista.
Ver también
copy_graph()

Hace referencia a IS_NODE_VISITED.

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::operator() ( GT &  g,
DynList< GT > &  blk_list,
DynList< typename GT::Arc * > &  arc_list 
)
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

Hace referencia a Aleph::Tarjan_Connected_Components< GT, SA >::connected_components().

+ Gráfico de llamadas para esta función:

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::operator() ( GT &  g,
DynList< DynList< typename GT::Node * >> &  blks 
)
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

Hace referencia a Aleph::Tarjan_Connected_Components< GT, SA >::connected_components().

+ Gráfico de llamadas para esta función:

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::operator() ( GT &  g,
DynDlist< GT > &  blk_list,
DynDlist< typename GT::Arc * > &  arc_list 
)
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

Hace referencia a Aleph::DynDlist< T >::append() y Aleph::Tarjan_Connected_Components< GT, SA >::connected_components().

+ Gráfico de llamadas para esta función:

template<class GT, class SA = Dft_Show_Arc<GT>>
void Aleph::Tarjan_Connected_Components< GT, SA >::operator() ( GT &  g,
DynDlist< DynDlist< typename GT::Node * >> &  blks 
)
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

Hace referencia a Aleph::DynDlist< T >::append(), Aleph::Tarjan_Connected_Components< GT, SA >::connected_components(), Aleph::HTList::is_empty() y Aleph::DynList< T >::remove_first().

+ Gráfico de llamadas para esta función:


La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro Rabindranath León