template<class GT, class SA = Dft_Show_Arc<GT>>
class Aleph::Map_Matrix_Graph< GT, SA >
Matriz de adyacencia de un grafo mapeada a un grafo representado mediante una variante de GT.
La clase Map_Matrix_Graph modeliza una matriz de adyacencia mapeo hacia los arcos de un grafo representado con listas de adyacencia. Ella constituye la más simple manera de construir una matriz de adyacencia en Aleph. Se trata de una matriz cuyas entradas son punteros hacia arcos de un grafo representado mediante alguna clase basada en GT. Una entrada con valor nullptr indica ausencia de arco.
Para construir un objeto de tipo Map_Matrix_Graph se requiere tener una instancia del grafo basada en un objeto derivado de GT.
El acceso a la matriz se realiza mediante el operador (i,j). Si mat es un objeto de tipo Map_Matrix_Graph, entonces el mat(i,j) refiere al arco entre el nodo i y j. Un valor igual a nullptr indica que no hay arco; de lo contrario, mat(i,j) es un apuntador de tipo GT::Arc al arco en la representación con listas de adyacencia.
Las entradas a las matriz también pueden referirse mediante punteros a nodos. En este sentido mat(src,tgt) refiere al arco entre los nodos apuntados por src y tgt.
Puede decirse que el uso de memoria de un objeto Map_Matrix_Graph trata de ser lo más eficiente posible. Por lo general, el consumo de memoria es proporcional al número de arcos. Internamente, esta eficiencia se implanta a través del uso de un arreglo dinámico DynArray.
No está permitido modificar una entrada de una matrix Map_Matrix_Graph. No hay ningún control sobre la matriz y su relación con el objeto List_graph asociado. Dicho de otro modo, cambios topológicos (inserción y eliminación de nodos y arcos) en el objeto GT no se verán reflejados en la matriz. Sin embargo, la capacidad de acceso nodos y arcos en la representación con listas permite sin ningún problema modificar cualquiera de sus atributos.
Map_Matrix_Graph no está concebido para multigrafos o multidigrafos.
- Parameters
-
| GT | el tipo de grafo derivado de una clase basada en GT. |
- See also
- Matrix_Graph Ady_Mat Bit_Mat_Graph DynArray
template<class GT , class SA >
Retorna un puntero a un arco con nodo origen src_node y destino tgt_node.
El operador (src_node,tgt_node) lee la entrada de la matriz correspondiente al nodo origen src_node y nodo destino tgt_node y retorna un apuntador al arco. Si no existe el arco, entonces se retorna nullptr.
No se realiza verificación sobre la correctitud de los apuntadores.
Este modo de acceso es logarÃtmico. Por esa razón, es preferible primero indagar los Ãndices de los nodos y luego utilizar el mismo operador (i,j) con los Ãndices de los nodos.
- Parameters
-
| [in] | src_node | puntero al nodo origen. |
| [in] | tgt_node | puntero al nodo destino. |
- Returns
- puntero al arco si éste existe; nullptr de lo contrario.