Referencia de la plantilla de la Clase Ady_Mat
[Grafos.]

Matriz de adyacencia auxiliar. Más...

Lista de todos los miembros.

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_Typenull_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_Typeoperator() (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_Typeoperator() (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_Typeoperator() (const long &i, const long &j) const
 Retorna una referencia constante a la entrada (i,j) de la matriz de adyacencia auxiliar.
Entry_Typeoperator() (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.
Nodeoperator() (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.


Descripción detallada

template<typename GT, typename __Entry_Type>
class Aleph::Ady_Mat< GT, __Entry_Type >

Muchas aplicaciones sobre grafos basadas en matrices de adyacencia utilizan información temporal, información de tipo distinto al guardado en los atributos del gafo o una parte de los atributos. En estas tres situaciones el uso del tipo Matriz_Graph o es muy restringido o imposible.

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:

  1. GT: el tipo de grafo representado con listas de adyacencia.
  2. __Entry_Type: el tipo de dato a guardar en la matriz

Ver también:
List_Graph Matrix_Graph Map_Matrix_Graph

Definición en la línea 676 del archivo tpl_matgraph.H.


Documentación del constructor y destructor

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().

Parámetros:
[in] g el grafo representado con listas de adyacencia.
Excepciones:
bad_alloc si no hay suficiente memoria.
Ver también:
Ady_Mat::set_null_value() Ady_Mat::null_value()

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().

Parámetros:
[in] g el grafo representado con listas de adyacencia.
[in] null el valor del elemento designado como nulo.
Excepciones:
bad_alloc si no hay suficiente memoria.
Ver también:
Ady_Mat::set_null_value() Ady_Mat::null_value()

Definición en la línea 891 del archivo tpl_matgraph.H.


Documentación de las funciones miembro

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:

  1. mat: es una referencia a la matrix sobre el cual se está realizando la operación.
  2. arc: es un apuntador al arco dentro del List_Graph asociado a la matriz.
  3. i: es el índice del nodo origen en la matriz.
  4. j: es el índice del nodo destino en la matriz.
  5. entry: es una referencia al contenido de la entrada (i,j) en la matriz.
  6. ptr: puntero opaco.

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:

  1. mat: es una referencia a la matrix sobre el cual se está realizando la operación.
  2. arc: es un apuntador al arco dentro del List_Graph asociado a la matriz.
  3. i: es el índice del nodo origen en la matriz.
  4. j: es el índice del nodo destino en la matriz.
  5. entry: es una referencia al contenido de la entrada (i,j) en la matriz.

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í:

  1. mat: referencia a la matriz
  2. src: puntero al nodo origen.
  3. tgt: puntero al nodo destino.
  4. s: índice del nodo origen.
  5. t: índice del nodo destino.
  6. entry: referencia a la entrada de la matriz.
  7. ptr: puntero opaco a pasar a la operación.

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í:

  1. mat: referencia a la matriz
  2. src: puntero al nodo origen.
  3. tgt: puntero al nodo destino.
  4. s: índice del nodo origen.
  5. t: índice del nodo destino.
  6. entry: referencia a la entrada de la matriz.

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.

Parámetros:
[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.
Devuelve:
una referencia constante a la entrada correspondiente.

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.

Parámetros:
[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.
Devuelve:
una referencia constante a la entrada correspondiente.

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.

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:
una referencia constante a la entrada (i,j).

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.

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 a la entrada (i,j).

Definición en la línea 775 del archivo tpl_matgraph.H.


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

Leandro R. León