Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::Net_Graph< NodeT, ArcT >

#include <tpl_netgraph.H>

+ Diagrama de herencias de Aleph::Net_Graph< NodeT, ArcT >
+ Diagrama de colaboración para Aleph::Net_Graph< NodeT, ArcT >:

Tipos públicos

typedef Array_Digraph< NodeT,
ArcT > 
Digraph
 
typedef ArcT Arc
 Tipo de arco.
 
typedef NodeT Node
 Tipo de node.
 
typedef Arc::Flow_Type Flow_Type
 Tipo que representa la capacidad y el flujo.
 
typedef Node::Node_Type Node_Type
 Tipo de atributo que almacena un nodo.
 
typedef Arc::Arc_Type Arc_Type
 Tipo de atributo que almacena un arco.
 
- Tipos públicos heredados desde Aleph::Array_Digraph< NodeT, ArcT >
typedef NodeT Node
 
typedef ArcT Arc
 

Métodos públicos

Flow_Type get_in_cap (Node *node) const
 Retorna la capacidad total de entrada del nodo node.
 
Flow_Type get_out_cap (Node *node) const
 Retorna la capacidad total de salida del nodo node.
 
size_t get_in_degree (Node *node) const
 
size_t get_out_degree (Node *node) const
 
Flow_Type get_out_flow (Node *node) const
 Retorna el valor de flujo de salida del nodo.
 
Flow_Type get_in_flow (Node *node) const
 Retorna el valor de flujo de entrada del nodo.
 
bool is_source (Node *node)
 Retorna true si node es fuente.
 
bool is_sink (Node *node)
 Retorna true si node es sumidero.
 
bool is_connected (Node *node) const
 
bool check_node (Node *node)
 
Aleph::set< Node * > & get_src_nodes ()
 Retorna el conjunto de nodos fuente que contiene la red.
 
Aleph::set< Node * > & get_sink_nodes ()
 Retorna el conjunto de nodos sumidero que contiene la red.
 
void make_super_source ()
 
void unmake_super_source ()
 
void make_super_sink ()
 
void unmake_super_sink ()
 
void make_super_nodes ()
 
void unmake_super_nodes ()
 
Nodeget_source ()
 Retorna un nodo fuente de la red.
 
Nodeget_sink ()
 Retorna un nodo sumidero de la red.
 
Nodeinsert_node (const Node_Type &node_info)
 
Nodeinsert_node ()
 
Nodeinsert_node (Node *p)
 
virtual Arcinsert_arc (Node *src_node, Node *tgt_node, const typename Arc::Arc_Type &arc_info, const Flow_Type &cap, const Flow_Type &flow)
 
Arcconnect_arc (Arc *arc)
 
virtual Arcinsert_arc (Node *src_node, Node *tgt_node, const Flow_Type &cap)
 
virtual Arcinsert_arc (Node *src_node, Node *tgt_node, const typename Arc::Arc_Type &arc_info)
 
virtual Arcinsert_arc (Node *src_node, Node *tgt_node)
 
virtual void remove_arc (Arc *arc)
 Elimina de la red el arco arc.
 
void disconnect_arc (Arc *arc)
 
virtual void remove_node (Node *p)
 Elimina un nodo de una red de flujo junto con todos sus arcos.
 
 Net_Graph (Digraph &digraph)
 
 Net_Graph (Net_Graph &net)
 
void set_cap (Arc *arc, const Flow_Type &cap)
 Coloca valor de capacidad a un arco.
 
void set_flow (Arc *arc, const Flow_Type &flow)
 
const Flow_Typeget_flow (Arc *arc) const
 retorna el valor de capacidad del arco.
 
const Flow_Typeget_cap (Arc *arc) const
 Retorna el valor de flujo de un arco.
 
void reset ()
 
bool check_network ()
 
Flow_Type flow_value ()
 
void insert_residual_arc (Arc *arc)
 
void make_residual_net ()
 
void unmake_residual_net ()
 
bool is_there_residual_net () const
 Retorna true si la red residual está creada; false de lo contrario.
 
Arcget_residual_arc (Arc *a)
 Obtiene el arco residual de a.
 
void increase_out_flow (Node *p, const Flow_Type &flow)
 
void decrease_out_flow (Node *p, const Flow_Type &flow)
 
void increase_in_flow (Node *p, const Flow_Type &flow)
 
void decrease_in_flow (Node *p, const Flow_Type &flow)
 
- Métodos públicos heredados desde Aleph::Array_Digraph< NodeT, ArcT >
 Array_Digraph (const Array_Digraph &dg)
 
 Array_Digraph (Array_Digraph &&dg)
 
Array_Digraphoperator= (const Array_Digraph< Node, Arc > &g)
 
Array_Digraphoperator= (Array_Digraph< Node, Arc > &&g)
 
- Métodos públicos heredados desde Aleph::Array_Graph< NodeT, ArcT >
virtual Node * insert_node (Node *p)
 
void compress ()
 
Arc * connect_arc (Arc *arc)
 
Arc * disconnect_arc (Arc *arc)
 
virtual void remove_arc (Arc *a)
 
virtual void remove_node (Node *p)
 
Node * get_first_node () const
 
Arc * get_first_arc () const
 
Arc * get_first_arc (Node *p) const
 
 Array_Graph (const Array_Graph &g)
 
 Array_Graph (Array_Graph &&g)
 
void swap (Array_Graph &g)
 
Array_Graphoperator= (const Array_Graph &g)
 
Array_Graphoperator= (Array_Graph &&g)
 
void sort_arcs (Compare &)
 
void sort_arcs (Compare &&)
 
 GRAPH_FUNCTIONAL_METHODS (Array_Graph)
 

Atributos públicos

Flow_Type Infinity
 
bool with_super_source
 true si a la red se le ha añadido un supra fuente.
 
bool with_super_sink
 true si a la red se le ha añadido un supra sumidero.
 
bool residual_net
 
- Atributos públicos heredados desde Aleph::Array_Graph< NodeT, ArcT >
 GRAPH_ITERATIVE_METHODS
 
 GRAPH_SEARCH_METHODS
 
 GRAPH_INSERTION_METHODS
 

Descripción detallada

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
class Aleph::Net_Graph< NodeT, ArcT >

Red de flujo implementada mediante listas de adyacencia.

El tipo Net_Graph modeliza una red capacitada, principal instrumento del cálculo de flujo máximo y vehículo de una extensa e importante familia de algoritmos sobre grafos.

La clase recibe dos parámetros tipo:

  1. NodeT: el tipo de nodo de la red, el cual debe ser descendiente de la clase Net_Node.
  2. ArcT: el tipo de arco de la red, el cual debe ser descendiente de la clase Net_Arc.
Ver también
Array_Digraph Net_Node Net_Arc ford_fulkerson_maximum_flow() edmonds_karp_maximum_flow() generic_preflow_vertex_push_maximum_flow() fifo_preflow_maximum_flow() heap_preflow_maximum_flow() random_preflow_maximum_flow() generic_preflow_edge_maximum_flow() depth_first_preflow_edge_maximum_flow() breadth_first_preflow_edge_maximum_flow() priority_first_preflow_edge_maximum_flow() random_first_preflow_edge_maximum_flow()

Documentación del constructor y destructor

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Aleph::Net_Graph< NodeT, ArcT >::Net_Graph ( Digraph digraph)
inline

Constructor a partir de un digrafo. Dispara bad_alloc si no hay suficiente memoria.

Hace referencia a Aleph::copy_graph().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Aleph::Net_Graph< NodeT, ArcT >::Net_Graph ( Net_Graph< NodeT, ArcT > &  net)
inline

Construye una red copia de la red net. Dispara bad_alloc si no hay suficiente memoria.

Hace referencia a Aleph::copy_graph().

+ Gráfico de llamadas para esta función:

Documentación de las funciones miembro

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
bool Aleph::Net_Graph< NodeT, ArcT >::check_network ( )
inline

Verifica si una red capacitada satisface las condiciones de definición.

check_network() recorre todos los nodos y arcos de una red capacitada en búsqueda de inconsistencias de definición. Básicamente, se verifica que para todo nodo no fuente o no sumidero la cantidad de flujo entrante sea igual a la saliente. Por cada arco inspeccionado se verifica que el flujo sea menor o igual que su capacidad.

Devuelve
true si la red es valida; false de lo contrario.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::check_node() y Aleph::Filter_Iterator< Container, It, Show_Item >::next().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
bool Aleph::Net_Graph< NodeT, ArcT >::check_node ( Node node)
inline

Retorna true si el nodo node satisface las condiciones de flujo; es decir, que el flujo de entrada sea igual al de salida.

Hace referencia a Aleph::Net_Arc< Arc_Info, F_Type >::cap, Aleph::Net_Graph< NodeT, ArcT >::is_connected(), Aleph::Net_Graph< NodeT, ArcT >::is_sink(), Aleph::Net_Graph< NodeT, ArcT >::is_source() y Aleph::Filter_Iterator< Container, It, Show_Item >::next().

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::check_network().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Arc* Aleph::Net_Graph< NodeT, ArcT >::connect_arc ( Arc arc)
inline

Conecta un arco de red previamente insertado y desconectado.

Este método toma un puntero a un arco arc, previamente desconectado mediante, desconnect_arc(), y lo re-inserta en el grafo.

El arco, por supuesto, debe haber sido previamente insertado en el grafo. A este respecto, no se hace ninguna verificación.

No se realiza ninguna verificación de existencia previa de un arco entre los nodos involucrados (esto es necesario para operar con multigrafos).

Parámetros
[in]arcpuntero al arco a re-insertar.
Devuelve
puntero al arco re-insertado

Hace referencia a Aleph::set< T, Compare, Tree >::erase().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::disconnect_arc ( Arc arc)
inline

Desconecta de la red el arco arc.

La operación desconecta del grafo el arco arc. Eventualmente, el arco puede guardarse y luego reinsertarse mediante connect_arc().

El arco debe pertenecer al grafo y no se realiza ninguna verificación al respecto.

Parámetros
[in]arcpuntero al arco a desconectar

Hace referencia a Aleph::set< T, Compare, Tree >::insert().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Flow_Type Aleph::Net_Graph< NodeT, ArcT >::flow_value ( )
inline

Retorna el valor de flujo de la red visto desde el nodo fuente o sumidero p. Dispara excepción std::domain_error si p no es ni fuente ni sumidero.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::get_source().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
size_t Aleph::Net_Graph< NodeT, ArcT >::get_in_degree ( Node node) const
inline

Retorna el grado de entrada del nodo (cantidad de arcos que inciden sobre él.

Referenciado por Aleph::Net_Sup_Dem_Graph< NodeT, ArcT >::compute_aux_net().

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
size_t Aleph::Net_Graph< NodeT, ArcT >::get_out_degree ( Node node) const
inline

Retorna el grado de salida del nodo (cantidad de arcos que salen él.

Referenciado por Aleph::Net_Sup_Dem_Graph< NodeT, ArcT >::compute_aux_net().

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
virtual Arc* Aleph::Net_Graph< NodeT, ArcT >::insert_arc ( Node src_node,
Node tgt_node,
const typename Arc::Arc_Type &  arc_info,
const Flow_Type cap,
const Flow_Type flow 
)
inlinevirtual

Inserta un arco en una red de flujo.

insert_arc() crea un nuevo arco con valor de atributo arc_info, con valor de capacidad cap y flujo flow, desde el nodo src_node hacia el nodo tgt_node.

Parámetros
[in]src_nodepuntero hacia el nodo origen.
[in]tgt_nodepuntero hacia el nodo destino.
[in]arc_infovalor de atributo a guardar en el nuevo arco.
[in]capvalor de capacidad del arco.
[in]flowvalor de flujo del arco.
Devuelve
puntero hacia el nuevo arco insertado
Excepciones
std::bad_allocsi no hay suficiente memoria para crear el arco.
std::overflow_errorsi el valor de flujo es mayor que el de la capacidad.

Hace referencia a Aleph::set< T, Compare, Tree >::erase().

Referenciado por Aleph::Net_Cap_Graph< NodeT, ArcT >::compute_aux_net(), Aleph::Net_Sup_Dem_Graph< NodeT, ArcT >::compute_aux_net(), Aleph::Net_Max_Flow_Min_Cost< NodeT, ArcT >::insert_arc(), Aleph::Net_Graph< NodeT, ArcT >::insert_arc(), Aleph::Net_Graph< NodeT, ArcT >::make_super_sink() y Aleph::Net_Graph< NodeT, ArcT >::make_super_source().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
virtual Arc* Aleph::Net_Graph< NodeT, ArcT >::insert_arc ( Node src_node,
Node tgt_node,
const Flow_Type cap 
)
inlinevirtual

Inserta un arco en una red de flujo.

insert_arc() crea un nuevo arco con valor de atributo arc_info, con valor de capacidad cap desde el nodo src_node hacia el nodo tgt_node.

El valor de flujo es cero.

Parámetros
[in]src_nodepuntero hacia el nodo origen.
[in]tgt_nodepuntero hacia el nodo destino.
[in]capvalor de capacidad del arco.
Devuelve
puntero hacia el nuevo arco insertado
Excepciones
std::bad_allocsi no hay suficiente memoria para crear el arco.
std::overflow_errorsi el valor de flujo es mayor que el de la capacidad.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::insert_arc().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
virtual Arc* Aleph::Net_Graph< NodeT, ArcT >::insert_arc ( Node src_node,
Node tgt_node,
const typename Arc::Arc_Type &  arc_info 
)
inlinevirtual

Inserta un arco en una red de flujo.

insert_arc() crea un nuevo arco con valor de atributo arc_info desde el nodo src_node hacia el nodo tgt_node.

El arco se crea con valores de capacidad y flujo de cero.

Parámetros
[in]src_nodepuntero hacia el nodo origen.
[in]tgt_nodepuntero hacia el nodo destino.
[in]arc_infovalor de atributo a guardar en el nuevo arco.
Devuelve
puntero hacia el nuevo arco insertado
Excepciones
std::bad_allocsi no hay suficiente memoria para crear el arco.
std::overflow_errorsi el valor de flujo es mayor que el de la capacidad.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::insert_arc().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
virtual Arc* Aleph::Net_Graph< NodeT, ArcT >::insert_arc ( Node src_node,
Node tgt_node 
)
inlinevirtual

Inserta un arco en una red de flujo.

insert_arc() crea un nuevo arco desde el nodo src_node hacia el nodo tgt_node.

La información asociada al arco es indeterminada. Por lo general este debe ser el método a emplear si los arcos de la red no almacenan información asociada.

El arco se crea con valores de capacidad y flujo de cero.

Parámetros
[in]src_nodepuntero hacia el nodo origen.
[in]tgt_nodepuntero hacia el nodo destino.
Devuelve
puntero hacia el nuevo arco insertado
Excepciones
std::bad_allocsi no hay suficiente memoria para crear el arco.
std::overflow_errorsi el valor de flujo es mayor que el de la capacidad.

Reimplementado en Aleph::Net_Max_Flow_Min_Cost< NodeT, ArcT >.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::insert_arc().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Node* Aleph::Net_Graph< NodeT, ArcT >::insert_node ( const Node_Type node_info)
inline

Inserta un nuevo nodo en la red.

insert_node(node_info) aparta memoria para un nodo de red, le copia la información asociada node_info e inserta el nodo en la red this.

Parámetros
[in]node_infola información a copiar en el nodo.
Devuelve
puntero al nuevo nodo insertado en la red.
Excepciones
bad_allocsi no hay suficiente memoria.

Hace referencia a Aleph::set< T, Compare, Tree >::erase() y Aleph::set< T, Compare, Tree >::insert().

Referenciado por Aleph::Net_Cap_Graph< NodeT, ArcT >::compute_aux_net().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Node* Aleph::Net_Graph< NodeT, ArcT >::insert_node ( )
inline

Inserta un nuevo nodo en la red. El valor de información es indeterminado. Dispara bad_alloc si no hay suficiente memoria.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::insert_node().

Referenciado por Aleph::Net_Sup_Dem_Graph< NodeT, ArcT >::compute_aux_net(), Aleph::Net_Sup_Dem_Graph< NodeT, ArcT >::insert_node(), Aleph::Net_Cap_Graph< NodeT, ArcT >::insert_node(), Aleph::Net_Graph< NodeT, ArcT >::insert_node(), Aleph::Net_Graph< NodeT, ArcT >::make_super_sink() y Aleph::Net_Graph< NodeT, ArcT >::make_super_source().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
Node* Aleph::Net_Graph< NodeT, ArcT >::insert_node ( Node p)
inline

Inserta un nuevo nodo en la red copia de otro nodo p.

insert_node(p) aparta memoria para un nodo de red, le copia la información contenida en p e inserta el nuevo nodo en la red this.

Parámetros
[in]potro nodo de la misma o de otra red del cual se copiará la información asociada al nodo.
Devuelve
puntero al nuevo nodo insertado en la red.
Excepciones
bad_allocsi no hay suficiente memoria.

Hace referencia a Aleph::set< T, Compare, Tree >::erase() y Aleph::set< T, Compare, Tree >::insert().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
bool Aleph::Net_Graph< NodeT, ArcT >::is_connected ( Node node) const
inline

Retorna true si el nodo node está conectado. El propósito de este método es de validación, como parte de la verificación de que una red sea conexa.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::check_node().

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::make_residual_net ( )
inline

Calcula la red residual de una red capacitada.

make_residual_net() calcula el grafo residual de una red. La red puede tener múltiples fuentes y sumideros, así como tener valores de flujo distintos de cero.

La red residual es la principal estructura de dato empleada por los algoritmos de cálculo de flujo máximo.

A diferencia de otros enfoques, en esta implantación los arcos residuales se colocan sobre la misma red. Consecuentemente, se puede decir que el método tiene un buen ahorre de memoria, pues los arcos normales y los nodos no son redundados.

Para saber si un arco es residual o no puede consultarse su atributo is_residual.

El arco reflejo puede consultarse mediante el atributo img_arc.

Para ver sólo los arcos de la red, residuales o no, puede emplearse un iterador wrapper con la clase filtro Res_F. De este modo, Node_Arc_Iterator o Arc_Iterator sólo verán arcos con capacidad disponible; es decir aquellos arcos cuya diferencia entre capacidad nominal y el valor de flujo sea diferente de cero.

También pueden verse todos los arcos, independientemente de que sean o no residuales, con un iterador interno de Net_Graph o con uno wrapper sin filtro. En este caso, es responsabilidad del usuario distinguir los arcos según el interés; que sean residuales o que tengan capacidad según sea el caso.

Los algoritmos de cálculo de flujo máximo emplean este método. Su uso está destinado para otros algoritmos no instrumentados en esta biblioteca.

Excepciones
domain_errorsi la red residual ya está calculada.
bad_allocsi no hay suficiente memoria.
Ver también
unmake_residual_net() Res_F

Hace referencia a Aleph::Filter_Iterator< Container, It, Show_Item >::next() y Aleph::Net_Graph< NodeT, ArcT >::unmake_residual_net().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::make_super_nodes ( )
inline

Convierte una red con varios nodos fuente y sumideros a una red con un solo nodo supra-fuente y uno supra-sumidero.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::make_super_sink(), Aleph::Net_Graph< NodeT, ArcT >::make_super_source() y Aleph::Net_Graph< NodeT, ArcT >::unmake_super_source().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::make_super_sink ( )
inline

Convierte una red con varios sumideros a una red con un sólo nodo supra-sumidero. Dispara excepción si la red no contiene un nodo sumidero o si no hay suficiente memoria.

Hace referencia a Aleph::DynDlist< T >::append(), Aleph::set< T, Compare, Tree >::begin(), Aleph::set< T, Compare, Tree >::end(), Aleph::Net_Graph< NodeT, ArcT >::get_in_cap(), Aleph::Net_Graph< NodeT, ArcT >::insert_arc(), Aleph::Net_Graph< NodeT, ArcT >::insert_node(), Aleph::Dlink::is_empty(), Aleph::DynDlist< T >::remove_first(), Aleph::set< T, Compare, Tree >::size() y Aleph::Net_Graph< NodeT, ArcT >::with_super_sink.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::make_super_nodes().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::make_super_source ( )
inline

Convierte una red con varios fuentes a una red con un sólo nodo supra-fuente. Dispara excepción si la red no contiene un nodo fuente o si no hay suficiente memoria.

Hace referencia a Aleph::DynDlist< T >::append(), Aleph::set< T, Compare, Tree >::begin(), Aleph::set< T, Compare, Tree >::end(), Aleph::Net_Graph< NodeT, ArcT >::get_out_cap(), Aleph::Net_Graph< NodeT, ArcT >::insert_arc(), Aleph::Net_Graph< NodeT, ArcT >::insert_node(), Aleph::Dlink::is_empty(), Aleph::DynDlist< T >::remove_first(), Aleph::set< T, Compare, Tree >::size() y Aleph::Net_Graph< NodeT, ArcT >::with_super_source.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::make_super_nodes().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::set_flow ( Arc arc,
const Flow_Type flow 
)
inline

Coloca valor de flujo a un arco. Dispara excepción si el valor es mayor que la capacidad.

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::unmake_residual_net ( )
inline

Deshace una red residual previamente calculada. Dispara excepción domain_error si la red residual no ha sido previamente calculada.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::make_residual_net().

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::unmake_super_nodes ( )
inline

Restaura una red con un nodo supra-fuente y uno solo supra-sumidero a la red original con varios nodos fuentes y sumideros.

Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::unmake_super_sink() y Aleph::Net_Graph< NodeT, ArcT >::unmake_super_source().

+ Gráfico de llamadas para esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::unmake_super_sink ( )
inline

Restaura una red con un nodo supra-sumidero a la red original con varios nodos sumidero.

Hace referencia a Aleph::set< T, Compare, Tree >::begin(), Aleph::Net_Graph< NodeT, ArcT >::remove_node(), Aleph::set< T, Compare, Tree >::size() y Aleph::Net_Graph< NodeT, ArcT >::with_super_sink.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::unmake_super_nodes().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:

template<class NodeT = Net_Node<Empty_Class, double>, class ArcT = Net_Arc<Empty_Class, double>>
void Aleph::Net_Graph< NodeT, ArcT >::unmake_super_source ( )
inline

Restaura una red con un nodo supra-fuente a la red original con varios nodos fuente.

Hace referencia a Aleph::set< T, Compare, Tree >::begin(), Aleph::Net_Graph< NodeT, ArcT >::remove_node(), Aleph::set< T, Compare, Tree >::size() y Aleph::Net_Graph< NodeT, ArcT >::with_super_source.

Referenciado por Aleph::Net_Graph< NodeT, ArcT >::make_super_nodes() y Aleph::Net_Graph< NodeT, ArcT >::unmake_super_nodes().

+ Gráfico de llamadas para esta función:

+ Gráfico de llamadas a esta función:


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

Leandro Rabindranath León