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
template<typename GT , class SA = Dft_Show_Arc<GT>>
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] | g | el grafo representado con listas de adyacencia partir del cual se copiará la matriz. |
[in] | null | el valor que será considerado como entrada nula de la matriz y que indicará ausencia de arco. |
| ] | __sa filtro de arcos. |
- Excepciones
-
bad_alloc | si no hay suficiente memoria para construir la matriz. |
template<typename GT , class SA = Dft_Show_Arc<GT>>
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_range | si 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().
template<typename GT , class SA = Dft_Show_Arc<GT>>
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_range | si 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().