Tipos públicos | |
typedef GT::Arc | Arc |
El tipo de arco que se maneja el objeto List_Graph. | |
typedef GT::Arc_Type | Arc_Type |
El tipo atributo de arco que guarda los nodos en el objeto List_Graph. | |
typedef GT | List_Graph_Type |
El tipo de Graph_List asociado a la matriz. | |
typedef GT::Node | Node |
El tipo de nodo que se maneja el objeto List_Graph. | |
typedef GT::Node_Type | Node_Type |
El tipo atributo de nodo que guarda los nodos en el objeto List_Graph. | |
Métodos públicos | |
void | copy_list_graph (GT &g) |
Copia a la matriz el grafo g representado con listas de adyacencia; los valores anteriores de la matriz son borrados. | |
GT & | get_list_graph () |
Retorna una referencia al grafo representado con listas enlazadas. | |
const size_t & | get_num_nodes () const |
Retorna el número de nodos que tiene el grafo (equivalente a la dimensión de la matriz. | |
Map_Matrix_Graph (Map_Matrix_Graph &mat) | |
Constructor copia. | |
Map_Matrix_Graph (GT &g) | |
Constructor a partir de un grafo representado con listas de adyacencia. | |
Arc * | operator() (const long &i, const long &j) const |
Retorna un puntero al arco contenido en la entrada (i,j) de la matriz de adyacencia. | |
Arc * | operator() (Node *src_node, Node *tgt_node) const |
Retorna un puntero a un arco con nodo origen src_node y destino tgt_node. | |
long | operator() (Node *node) const |
Retorna el índice en la matriz del nodo node en la representación con listas. | |
Node * | operator() (const long &i) const |
Retorna el puntero a nodo en la representación con listas correspondiente al índice i en la matriz. | |
Map_Matrix_Graph & | operator= (GT &g) |
Asignación de grafo representado con listas de adyacencia. | |
Map_Matrix_Graph & | operator= (Map_Matrix_Graph &mat) |
Asignación de matriz de adyacencia. |
Para construir un objeto de tipo Map_Matrix_Graph se requiere tener una instancia del grafo basada en un objeto derivado de List_Graph.
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 NULL 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 List_Graph 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.
GT | el tipo de grafo derivado de una clase basada en List_Graph. |
Definición en la línea 154 del archivo tpl_matgraph.H.
GT::Arc * operator() | ( | const long & | i, | |
const long & | j | |||
) | const [inline] |
El operador (i,j) lee la entrada de la matriz correspondiente y retorna un apuntador al arco. Si no existe el arco, entonces se retorna NULL.
Este modo de acceso es constante.
[in] | i | índice del nodo origen. |
[in] | j | índice del nodo destino. |
out_of_range | si i o j es mayor o igual a la cantidad de nodos del grafo. |
Definición en la línea 290 del archivo tpl_matgraph.H.
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 NULL.
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.
[in] | src_node | puntero al nodo origen. |
[in] | tgt_node | puntero al nodo destino. |
Definición en la línea 302 del archivo tpl_matgraph.H.
long operator() | ( | typename GT::Node * | node | ) | const [inline] |
El operador (node) con node un puntero a nodo, retorna el índice dentro de la matriz de adyacencia.
No se hacen verificaciones sobre la correctitud del puntero.
[in] | node | puntero a nodo en la representación con listas de adyacencia. |
out_of_range | si i es mayor o igual a la cantidad de nodos. |
Definición en la línea 285 del archivo tpl_matgraph.H.
GT::Node * operator() | ( | const long & | i | ) | const [inline] |
El operador (i) con i entero retorna un puntero al nodo de la representación con listas del grafo asociado a la matriz del índice i.
[in] | i | índice de la matriz. |
out_of_range | si i es mayor o igual a la cantidad de nodos. |
Definición en la línea 280 del archivo tpl_matgraph.H.
Map_Matrix_Graph< GT > & operator= | ( | GT & | g | ) | [inline] |
Limpia la matriz (toda la memoria es liberada) y construye una nueva matriz de adyacencia basada en el grafo representado con listas de adyacencia g.
[in] | g | el grafo representado con listas a ser asignado. |
bad_alloc | si no hay suficiente memoria para la matriz. |
Definición en la línea 341 del archivo tpl_matgraph.H.
Hace referencia a Map_Matrix_Graph::copy_list_graph().