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

#include <tpl_matgraph.H>

Tipos públicos

typedef GT Graph_Type
 El tipo de grafo representado con listas de adyacencia.
 
typedef GT::Node_Type Node_Type
 
typedef GT::Arc_Type Arc_Type
 
typedef GT::Node Node
 El tipo de Graph_Node que usado en el GT.
 
typedef GT::Arc Arc
 El tipo de Graph_Arc que usado en el GT.
 

Métodos públicos

const size_t & get_num_nodes () const
 Retorna el número de nodos del grafo (que es la dimensión de la matriz)
 
const Arc_Typenull_value () const
 El valor constante que representa la entrada nula en la matriz.
 
 Matrix_Graph (GT &g, const Arc_Type &null, SA &&__sa=SA())
 
 Matrix_Graph (GT &g, const Arc_Type &null, SA &__sa)
 
 Matrix_Graph (Matrix_Graph &mat)
 
Matrix_Graphoperator= (Matrix_Graph &mat)
 
Matrix_Graphoperator= (GT &g)
 
const Arc_Typeoperator() (const long &i, const long &j) const
 
Node_Typeoperator() (const long &i) const
 
Arc_Typeoperator() (const long &i, const long &j)
 

Descripción detallada

template<typename GT, class SA = Dft_Show_Arc<GT>>
class Aleph::Matrix_Graph< GT, SA >

Matriz de adyacencia de un grafo extraída de un grafo representado con listas de adyacencia.

La clase Matrix_Graph modeliza una matriz de adyacencia que guarda los atributos contenidos en los nodos y arcos de un grafo que previamente fue representado con listas de adyacencia (derivación de la clase GT).

Un objeto Matrix_Graph es una copia de un grafo representado con listas de adyacencia o de un objeto Map_Matrix_Graph (que está asociado a una representación con listas de adyacencia). A diferencia de Map_Matrix_Graph, Matrix_Graph es modificable en el sentido de que permite añadir nuevos arcos en el grafo por modificación de una entrada nula de la matriz.

Cuando se construye un objeto Matrix_Graph, se debe especificar un valor constante que representa a la entrada nula; es decir, a la ausencia de arco.

Es esperado que el consumo de memoria por los arcos sea proporcional a su cantidad.

Nota
Puesto que la matriz guarda los atributos asociados a los nodos y arcos, Matrix_Graph no sirve para guardar atributos derivados hermanos de las clases Graph_Node o Graph_Arc.
Ver también
Map_Matrix_Graph Ady_Mat

Documentación de los 'Typedef' miembros de la clase

template<typename GT , class SA = Dft_Show_Arc<GT>>
typedef GT::Arc_Type Aleph::Matrix_Graph< GT, SA >::Arc_Type

El tipo de atributo que guardan los arcos del grafo representado con listas de adyacencia

template<typename GT , class SA = Dft_Show_Arc<GT>>
typedef GT::Node_Type Aleph::Matrix_Graph< GT, SA >::Node_Type

El tipo de atributo que guardan los nodos del grafo representado con listas de adyacencia

Documentación del constructor y destructor

template<typename GT , class SA = Dft_Show_Arc<GT>>
Aleph::Matrix_Graph< GT, SA >::Matrix_Graph ( GT &  g,
const Arc_Type null,
SA &&  __sa = SA() 
)
inline

Constructor a partir de un grafo g representado con listas de adyacencia.

Este constructor recibe un grafo basado en GT g y un valor de tipo GT::Arc::Arc_Type correspondiente al valor que será considerado como entrada nula. Para cada nodo p del grafo, de tipo GT::Node, se copia su atributo interno obtenido mediante p->get_info(). De igual manera se hace para los arcos.

Parámetros
[in]gel grafo representado con listas de adyacencia partir del cual se copiará la matriz.
[in]nullel valor que será considerado como entrada nula de la matriz y que indicará ausencia de arco.
]__sa filtro de arcos.
Excepciones
bad_allocsi no hay suficiente memoria para construir la matriz.
template<typename GT , class SA = Dft_Show_Arc<GT>>
Aleph::Matrix_Graph< GT, SA >::Matrix_Graph ( Matrix_Graph< GT, SA > &  mat)
inline

Constructor copia.

Construye una matriz a partir de otra matriz.

Parámetros
[in]matla matriz a ser copiada.
Excepciones
bad_allocsi no hay suficiente memoria para construir la matriz.

Documentación de las funciones miembro

template<typename GT , class SA = Dft_Show_Arc<GT>>
const Arc_Type& Aleph::Matrix_Graph< GT, SA >::operator() ( const long &  i,
const long &  j 
) const
inline

Retorna una referencia al atributo de arco contenido en la entrada (i,j) de la matriz de adyacencia.

El operador (i,j) lee la entrada de la matriz correspondiente y retorna el atributo del arco. Si no existe el arco, entonces se retorna el valor Matrix_Graph::null_value().

Este modo de acceso es constante.

Parámetros
[in]iíndice del nodo origen.
[in]jíndice del nodo destino.
Excepciones
out_of_rangesi i o j es mayor o igual a la cantidad de nodos del grafo.
Devuelve
referencia al atributo del arco; recuérdese que Matrix_Graph::null_value() indica ausencia de arco.

Hace referencia a Aleph::DynArray< T >::access() y Aleph::DynArray< T >::exist().

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

template<typename GT , class SA = Dft_Show_Arc<GT>>
Node_Type& Aleph::Matrix_Graph< GT, SA >::operator() ( const long &  i) const
inline

Retorna el atributo asociado al nodo cuyo índice es i.

El operador (i) con i entero retorna el valor de atributo asociado al nodo cuyo índice es i.

Parámetros
[in]iíndice de la matriz.
Devuelve
una referencia al atributo del nodo.
Excepciones
out_of_rangesi i es mayor o igual a la cantidad de nodos.

Hace referencia a Aleph::DynArray< T >::access().

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

template<typename GT , class SA = Dft_Show_Arc<GT>>
Arc_Type& Aleph::Matrix_Graph< GT, SA >::operator() ( const long &  i,
const long &  j 
)
inline

Retorna una referencia al atributo de arco contenido en la entrada (i,j) de la matriz de adyacencia.

El operador (i,j) lee la entrada de la matriz correspondiente y retorna el atributo del arco. Si no existe el arco, entonces se retorna el valor Matrix_Graph::null_value().

Este modo de acceso es constante.

Parámetros
[in]iíndice del nodo origen.
[in]jíndice del nodo destino.
Excepciones
out_of_rangesi i o j es mayor o igual a la cantidad de nodos del grafo.
Devuelve
referencia al atributo del arco; recuérdese que Matrix_Graph::null_value() indica ausencia de arco.

Hace referencia a Aleph::DynArray< T >::touch().

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

template<typename GT , class SA = Dft_Show_Arc<GT>>
Matrix_Graph& Aleph::Matrix_Graph< GT, SA >::operator= ( Matrix_Graph< GT, SA > &  mat)
inline

Asigna a una matriz otra matriz.

Borra todo el estado de this y luego copia el grafo representado con la matriz de adyacencia mat.

Parámetros
[in]matla matriz a ser copiada.
Excepciones
bad_allocsi no hay suficiente memoria para construir la matriz.
Nota
Los tipos de grafos GT usados para construir this y mat deben corresponderse exactamente; de lo contrario ocurrirá un error de compilación.
template<typename GT , class SA = Dft_Show_Arc<GT>>
Matrix_Graph& Aleph::Matrix_Graph< GT, SA >::operator= ( GT &  g)
inline

Asigna a una matriz un grafo representado con listas de adyacencia.

Borra todo el estado de this y luego copia el grafo representado con listas de adyacencia g.

Parámetros
[in]gel grafo representado con listas de adyacencia a ser copiado.
Excepciones
bad_allocsi no hay suficiente memoria para construir la matriz.
Nota
El tipo GT debe corresponderse exactamente con el tipo GT asociado a la matriz; de lo contrario ocurrirá un error de compilación.

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

Leandro Rabindranath León