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::IndexArc< GT, Tree, SA >

#include <tpl_indexArc.H>

Métodos públicos

GT_Arc * insert (GT_Arc *e)
 Inserta en el índice el arco a.
 
GT_Arc * search (void *src, void *tgt)
 
GT_Arc * search (GT_Arc *a)
 
GT_Arc * insert_in_graph (GT_Node *src, GT_Node *tgt, const GT_Arc_Type &info) throw (std::exception, std::domain_error)
 
GT_Arc * insert_in_graph (GT_Node *src, GT_Node *tgt, GT_Arc_Type &&info=GT_Arc_Type()) throw (std::exception, std::domain_error)
 
void remove (GT_Arc *e)
 Elimina del índice el arco e.
 
void remove_from_graph (GT_Arc *a)
 Elimina del índice y del grafo el arco a.
 
void clear_index ()
 Elimina todos los arcos del índice.
 
void build_index ()
 Inserta todos los arcos del grafo en el índice.
 
 IndexArc (GT &__g, bool with_init=true, SA &&__sa=SA())
 
 IndexArc (GT &__g, bool with_init, SA &__sa)
 
size_t size () const
 Retorna la cantidad de arcos que contiene el índice.
 

Descripción detallada

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
class Aleph::IndexArc< GT, Tree, SA >

Construye un índice de arcos para su rápida búsqueda y recuperación dado sus nodos.

IndexArc indiza los arcos de un grafo según el par de nodos que el arco relaciona. La idea es implementar la detección de existencia de arco y su recuperación en tiempo logarítmico.

La clase recibe los siguientes parámetros tipo:

  1. GT: el tipo de grafo basado en List_Graph.
  2. Tree: el tipo de árbol binario de búsqueda usado internamente para indizar las claves. Por omisión se usan treaps.
Atención
Para que la compilación correcta es imperativo que el exista el constructor GT::Arc(void * src, void * tgt, GT::Arc_Type). Del mismo modo, también debe existir el constructor por omisión GT::Arc_Type().
Ver también
IndexNode Index_Graph
Autor
Leandro Rabindranath León (lrleon en ula punto ve)
Alejandro Mujica (aledrums en gmail punto com)

Documentación del constructor y destructor

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
Aleph::IndexArc< GT, Tree, SA >::IndexArc ( GT &  __g,
bool  with_init = true,
SA &&  __sa = SA() 
)
inline

Crea un índice a partir de los arcos insertado en el grafo.

Parámetros
[in]__gel grafo
[in]with_initsi el valor es true, entonces los arcos de __g son insertados en el índice; de lo contrario, el índice permanece vacío
Excepciones
bad_allocsi no hay suficiente memoria.
template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
Aleph::IndexArc< GT, Tree, SA >::IndexArc ( GT &  __g,
bool  with_init,
SA &  __sa 
)
inline

Crea un índice a partir de los arcos insertado en el grafo.

Parámetros
[in]__gel grafo
[in]with_initsi el valor es true, entonces los arcos de __g son insertados en el índice; de lo contrario, el índice permanece vacío
Excepciones
bad_allocsi no hay suficiente memoria.

Documentación de las funciones miembro

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
GT_Arc* Aleph::IndexArc< GT, Tree, SA >::insert_in_graph ( GT_Node *  src,
GT_Node *  tgt,
const GT_Arc_Type &  info 
)
throw (std::exception,
std::domain_error
)
inline

Crea un nuevo arco entre dos nodos, lo inserta en el grafo y luego en el índice.

Parámetros
[in]srcnodo origen.
[in]tgtnodo destino.
[in]infoinformación a copiarse como contenido del nodo. Por omisión se copia el contenido que arroje el constructor GT::Arc_Type().
Devuelve
puntero al arco creado.
Excepciones
bad_allocsi no hay suficiente memoria.

Referenciado por Aleph::Index_Graph< GT, Compare, Tree >::insert_arc().

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

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
GT_Arc* Aleph::IndexArc< GT, Tree, SA >::insert_in_graph ( GT_Node *  src,
GT_Node *  tgt,
GT_Arc_Type &&  info = GT_Arc_Type() 
)
throw (std::exception,
std::domain_error
)
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.

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
GT_Arc* Aleph::IndexArc< GT, Tree, SA >::search ( void *  src,
void *  tgt 
)
inline

Busca un arco que conecte a dos nodos.

Parámetros
[in]srcnodo origen.
[in]tgtnodo destino.
Devuelve
puntero al arco si éste existe o NULL de lo contrario.

Referenciado por Aleph::IndexArc< GT, Tree >::build_index(), Aleph::IndexArc< GT, Tree >::insert_in_graph(), Aleph::Floyd_All_Shortest_Paths< GT, Distance, SA >::operator()(), Aleph::IndexArc< GT, Tree >::search() y Aleph::Index_Graph< GT, Compare, Tree >::search_arc().

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

template<class GT, template< class, class > class Tree = Rand_Tree, class SA = Dft_Show_Arc<GT>>
GT_Arc* Aleph::IndexArc< GT, Tree, SA >::search ( GT_Arc *  a)
inline

Busca un arco según puntero.

Parámetros
[in]aarco que se desea buscar.
Devuelve
puntero al arco si éste existe o NULL de lo contrario.

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

Leandro Rabindranath León