Tipos públicos | |
typedef GT::Arc | Arc |
El tipo de arco usado en la representación con listas de adyacencia. | |
typedef GT::Arc_Type | Arc_Type |
El tipo de dato que guardan los arcos en el grafo representado con listas de adyacencia. | |
typedef __Entry_Type | Entry_Type |
El tipo de dato que alberga la matriz. | |
typedef GT | List_Graph_Type |
El tipo de grafo representado con listas de adyacencia. | |
typedef GT::Node | Node |
El tipo de nodo usado en la representación con listas de adyacencia. | |
typedef GT::Node_Type | Node_Type |
El tipo de dato que guardan los nodos en el grafo representado con listas de adyacencia. | |
Métodos públicos | |
Ady_Mat (Ady_Mat &mat) | |
Constructor copia. | |
Ady_Mat (GT &g, const Entry_Type &null) | |
Constructor de matriz auxiliar a partir de un grafo representado con listas de adyacencia y con definición de valor nulo. | |
Ady_Mat (GT &g) | |
Constructor de matriz auxiliar a partir de un grafo representado con listas de adyacencia. | |
GT & | get_list_graph () |
Retorna una referencia al grafo representado con lista de adyacencia. | |
const size_t & | get_num_nodes () const |
Retorna la cantidad de nodos del grafo (o sea, la dimensión de la matriz). | |
const Entry_Type & | null_value () const |
Retorna el valor considerado como nulo. | |
template<class Operation> | |
void | operate_all_arcs_list_graph (void *ptr) |
Efectúa una operación sobre la matriz auxiliar según cada arco del grafo representado con listas de adyacencia y le transmite a la operación un puntero opaco por donde enviar y recibir información. | |
template<class Operation> | |
void | operate_all_arcs_list_graph () |
Efectúa una operación sobre la matriz auxiliar según cada arco del grafo representado con listas de adyacencia. | |
template<class Operation> | |
void | operate_all_arcs_matrix (void *ptr) |
Efectúa una operación sobre todas las entradas de matriz auxiliar con un puntero opaco por donde enviar o recibir información. | |
template<class Operation> | |
void | operate_all_arcs_matrix () |
Efectúa una operación sobre todas las entradas de matriz auxiliar. | |
const Entry_Type & | operator() (Node *src, Node *tgt) const |
Retorna una referencia constante a una entrada de la matriz de adyacencia auxiliar dados los punteros a sus nodos origen y destino dentro de la representación con listas de adyacencia. | |
Entry_Type & | operator() (Node *src, Node *tgt) |
Retorna una referencia a una entrada de la matriz de adyacencia auxiliar dados los punteros a sus nodos origen y destino dentro de la representación con listas de adyacencia. | |
const Entry_Type & | operator() (const long &i, const long &j) const |
Retorna una referencia constante a la entrada (i,j) de la matriz de adyacencia auxiliar. | |
Entry_Type & | operator() (const long &i, const long &j) |
Retorna una referencia a la entrada (i,j) de la matriz de adyacencia auxiliar. | |
long | operator() (Node *node) const |
Retorna el índice dentro de la matriz auxiliar de node dentro en la representación mediante listas de adyacencia. | |
Node * | operator() (const long &i) const |
retorna el puntero al nodo dentro de la representación con listas de adyacencia del índice i en la matriz auxiliar. | |
void | set_null_value (const Entry_Type &null) |
Declara un valor nulo para la matriz de adyacencia auxiliar. |
Para paliar la situación anterior, el tipo Ady_Mat define una matriz asociada a un grafo representado con listas de adyacencia pero cuyas entradas son de un tipo definido por el usuario.
Al igual que con otros tipos de matrices de adyacencia, Ady_Mat maneja el elemento nulo Ady_Mat::null_value(), pero en este caso no necesariamente representa presencia o ausencia de arco. Aún así, entradas cuyo valor sea Ady_Mat::null_value() tienden a no ocupar memoria.
Ady_Mat<GT,__Entry_Type> maneja dos parámetros tipo:
Definición en la línea 676 del archivo tpl_matgraph.H.
Ady_Mat | ( | GT & | g | ) | [inline] |
Este constructor toma un grafo g representado con listas de adyacencia y construye una matriz auxiliar cuyas entradas no están inicializadas.
Si se desea explícitamente ahorrar memoria por un elemento designado como valor nulo, entonces éste valor debe indicarse con la primitiva Ady_Mat::set_null_value().
[in] | g | el grafo representado con listas de adyacencia. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 873 del archivo tpl_matgraph.H.
Ady_Mat | ( | GT & | g, | |
const Entry_Type & | null | |||
) | [inline] |
Este constructor toma un grafo g representado con listas de adyacencia, un valor nulo y construye una matriz auxiliar cuyas entradas no están inicializadas.
Un acceso a la entrada (i,j) retornará el valor Ady_Mat::null_value().
[in] | g | el grafo representado con listas de adyacencia. |
[in] | null | el valor del elemento designado como nulo. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 891 del archivo tpl_matgraph.H.
void operate_all_arcs_list_graph | ( | void * | ptr | ) | [inline] |
operate_all_arcs_list_graph() recorre los arcos del grafo representado con listas de adyacencia e invoca a la operación Operation()(mat, arc, i, j, entry, ptr) donde:
El uso de este método es principalmente para escribir los valores iniciales dentro de la matriz según los contenidos de los arcos en el grafo representado con listas de adyacencia.
Nótese que la operación sólo se ejecuta para las entradas que refieren a un arco. El resto de las entradas contiene el valor Ady_Mat::null_value() y probablemente no ocupen memoria.
Definición en la línea 1053 del archivo tpl_matgraph.H.
void operate_all_arcs_list_graph | ( | ) | [inline] |
operate_all_arcs_list_graph() recorre los arcos del grafo representado con listas de adyacencia e invoca a la operación Operation()(mat, arc, i, j, entry) donde:
El uso de este método es principalmente para escribir los valores iniciales dentro de la matriz según los contenidos de los arcos en el grafo representado con listas de adyacencia.
Nótese que la operación sólo se ejecuta para las entradas que refieren a un arco. El resto de las entradas contiene el valor Ady_Mat::null_value() y probablemente no ocupen memoria.
Definición en la línea 1004 del archivo tpl_matgraph.H.
void operate_all_arcs_matrix | ( | void * | ptr | ) | [inline] |
operate_all_arcs_matrix() recorre todas las entradas de matriz auxiliar e invoca una operación Operation()(mat,src,tgt,s,t,entry) cuyos parámetros se definen así:
Si se invoca este método, entonces la matriz ocupa el máximo de memoria, pues cada entrada debe ser escrita de modo tal que se garantice una referencia válida a mat(s,t).
Nótese que no hay acceso directo al arco en la representación con listas de adyacencia.
Definición en la línea 1083 del archivo tpl_matgraph.H.
void operate_all_arcs_matrix | ( | ) | [inline] |
operate_all_arcs_matrix() recorre todas las entradas de matriz auxiliar e invoca una operación Operation()(mat,src,tgt,s,t,entry) cuyos parámetros se definen así:
Si se invoca este método, entonces la matriz ocupa el máximo de memoria, pues cada entrada debe ser escrita de modo tal que se garantice una referencia válida a mat(s,t).
Nótese que no hay acceso directo al arco en la representación con listas de adyacencia.
Definición en la línea 1033 del archivo tpl_matgraph.H.
const Entry_Type& operator() | ( | Node * | src, | |
Node * | tgt | |||
) | const [inline] |
El operador (src,tgt) lee la entrada de la matriz auxiliar correspondiente a los punteros a los nodos src y tgt en la representación con listas de adyacencia y retorna su entrada.
Este modo de acceso es logarítmico. Por tanto, es recomendable utilizar los índices de los nodos.
[in] | src | puntero al nodo origen en la representación con listas de adyacencia. |
[in] | tgt | puntero al nodo destino en la representación con listas de adyacencia. |
Definición en la línea 844 del archivo tpl_matgraph.H.
Entry_Type& operator() | ( | Node * | src, | |
Node * | tgt | |||
) | [inline] |
El operador (src,tgt) lee la entrada de la matriz auxiliar correspondiente a los punteros a los nodos src y tgt en la representación con listas de adyacencia y retorna su entrada.
Este modo de acceso es logarítmico. Por tanto, es recomendable utilizar los índices de los nodos.
[in] | src | puntero al nodo origen en la representación con listas de adyacencia. |
[in] | tgt | puntero al nodo destino en la representación con listas de adyacencia. |
Definición en la línea 821 del archivo tpl_matgraph.H.
const Entry_Type& operator() | ( | const long & | i, | |
const long & | j | |||
) | const [inline] |
El operador (i,j) lee la entrada de la matriz auxiliar correspondiente y retorna su entrada.
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 794 del archivo tpl_matgraph.H.
Entry_Type& operator() | ( | const long & | i, | |
const long & | j | |||
) | [inline] |
El operador (i,j) lee la entrada de la matriz auxiliar correspondiente y retorna su entrada.
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 775 del archivo tpl_matgraph.H.