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

#include <tpl_indexGraph.H>

Public Member Functions

 Index_Graph (GT &g)
 Crea un índice del grafo: los nodos y arcos son indizados.
 
GT_Node * insert_node (const GT_Node_Type &info)
 
GT_Arc * insert_arc (GT_Node *src, GT_Node *tgt, const GT_Arc_Type &info=GT_Arc_Type())
 
GT_Node * search_node (GT_Node *p)
 
GT_Node * search_node (const GT_Node_Type &info)
 
GT_Arc * search_arc (GT_Node *src, GT_Node *tgt)
 
void remove_node (GT_Node *p)
 
void remove_arc (GT_Arc *a)
 Elimina del grafo y del índice el arco a.
 
size_t get_num_arcs () const
 Retorna el número de arcos que contiene el índice.
 
size_t get_num_nodes () const
 Retorna el número de nodos que contiene el índice.
 

Detailed Description

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
class Aleph::Index_Graph< GT, Compare, Tree >

Construye índices de nodos y arcos para su rápida búsqueda y recuperación.

Index_Graph indiza los nodos y arcos a efectos de su recuperación rápida.

A efectos de facilitar el uso y hacer su uso más seguro, Index_Graph ofrece las operaciones topológicas clásicas de un grafo: insert_node(), insert_arc(), etc.

La clase recibe los siguientes parámetros tipo:

  1. GT: el tipo de grafo basado en List_Graph
  2. Compare: clase de comparación para la clave de indización de los nodos. El contrato de esta clase es intrumentar el operador () así:
    template <class GT>
    struct Dft_Node_Cmp
    {
    bool
    operator () (typename GT::Node * p1, typename GT::Node * p2) const
    {
    // acceso a los nodos y comparación según el campo deseado
    }
    };

Por omisión esta clase está programada para comparar el valor retornado por get_info() sobre cada nodo. Para ello, el operador < del tipo GT::Node_Type debe estar implementado

  1. Tree: el tipo de árbol binario de búsqueda usado internamente para indizar las claves. Por omisión se usan treaps
See also
IndexArc IndexNode
Author
Leandro Rabindranath León (lrleon en ula punto ve)
Alejandro Mujica (aledrums en gmail punto com)

Member Function Documentation

◆ insert_arc()

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
GT_Arc* Aleph::Index_Graph< GT, Compare, Tree >::insert_arc ( GT_Node *  src,
GT_Node *  tgt,
const GT_Arc_Type &  info = GT_Arc_Type() 
)
inline

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

Parameters
[in]srcnodo origen.
[in]tgtnodo destino.
[in]infoinformación a copiarse en el arco. Por omisión es la que dé el constructor GT_Arc_Type().
Returns
puntero al nuevo arco.
Exceptions
bad_allocsi no hay suficiente memoria.
+ Here is the call graph for this function:

◆ insert_node()

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
GT_Node* Aleph::Index_Graph< GT, Compare, Tree >::insert_node ( const GT_Node_Type &  info)
inline

Crea un nuevo nodo y lo inserta en grafo y en el índice.

Parameters
[in]infoinformación a copiarse en el nodo.
Returns
puntero al nuevo nodo.
Exceptions
bad_allocsi no hay suficiente memoria.
+ Here is the call graph for this function:

◆ remove_node()

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
void Aleph::Index_Graph< GT, Compare, Tree >::remove_node ( GT_Node *  p)
inline

Elimina el nodo p del grafo y del índice.

Parameters
[in]ppuntero al nodo a eliminar
+ Here is the call graph for this function:

◆ search_arc()

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
GT_Arc* Aleph::Index_Graph< GT, Compare, Tree >::search_arc ( GT_Node *  src,
GT_Node *  tgt 
)
inline

Busca en el índice un arco dados dos nodos.

Parameters
[in]srcpuntero al nodo origen.
[in]tgtpuntero al nodo destino.
Returns
puntero al arco en caso de encontrarse en el índice; nullptr de lo contrario.
+ Here is the call graph for this function:

◆ search_node() [1/2]

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
GT_Node* Aleph::Index_Graph< GT, Compare, Tree >::search_node ( GT_Node *  p)
inline

Busca en el índice un nodo.

Parameters
[in]ppuntero al nodo.
Returns
puntero al nodo en caso de encontrarse en el índice; nullptr de lo contrario.
+ Here is the call graph for this function:

◆ search_node() [2/2]

template<class GT , class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap>
GT_Node* Aleph::Index_Graph< GT, Compare, Tree >::search_node ( const GT_Node_Type &  info)
inline

Busca en el índice un nodo.

Parameters
[in]infoinformación según la cual se buscará el nodo.
Returns
puntero al nodo en caso de encontrarse en el índice; nullptr de lo contrario.
Warning
Tome en consideración que la búsqueda se realiza según la implementación de la clase de comparación Compare pasada en tiempo de instanciación.
+ Here is the call graph for this function:

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

Leandro Rabindranath León