Aleph-w  1.9
General library for algorithms and data structures
Aleph::IndexArc< GT, Tree, SA > Class Template Reference

#include <tpl_indexArc.H>

Public Member Functions

GT_Arc * insert (GT_Arc *e)
 Inserta en el índice el arco a.
 
GT_Arc * search (void *src, void *tgt)
 
GT_Arc * search_directed (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)
 
GT_Arc * insert_in_graph (GT_Node *src, GT_Node *tgt, GT_Arc_Type &&info=GT_Arc_Type())
 
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.
 

Detailed Description

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.
Warning
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().
See also
IndexNode Index_Graph
Author
Leandro Rabindranath León (lrleon en ula punto ve)
Alejandro Mujica (aledrums en gmail punto com)

Constructor & Destructor Documentation

◆ IndexArc() [1/2]

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.

Parameters
[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
Exceptions
bad_allocsi no hay suficiente memoria.

◆ IndexArc() [2/2]

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.

Parameters
[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
Exceptions
bad_allocsi no hay suficiente memoria.

Member Function Documentation

◆ insert_in_graph() [1/2]

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 
)
inline

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

Parameters
[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().
Returns
puntero al arco creado.
Exceptions
bad_allocsi no hay suficiente memoria.
+ Here is the caller graph for this function:

◆ insert_in_graph() [2/2]

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() 
)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ search() [1/2]

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.

Parameters
[in]srcnodo origen.
[in]tgtnodo destino.
Returns
puntero al arco si éste existe o nullptr de lo contrario.
+ Here is the caller graph for this function:

◆ search() [2/2]

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.

Parameters
[in]aarco que se desea buscar.
Returns
puntero al arco si éste existe o nullptr de lo contrario.

◆ search_directed()

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

Busca un arco que conecte a dos nodos.

Parameters
[in]srcnodo origen.
[in]tgtnodo destino.
Returns
puntero al arco si éste existe o nullptr de lo contrario.
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file:

Leandro Rabindranath León