#include <tpl_maxflow_mincost.H>
Tipos públicos | |
typedef Net_Graph< NodeT, ArcT > | Net |
typedef Net::Digraph | Digraph |
El tipo de grafo dirigido. | |
typedef Net_Max_Flow_Min_Cost < NodeT, ArcT > | Net_MFMC |
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::Net_Graph< NodeT, ArcT > | |
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_cost (Arc *a) |
Retorna una referencia modificable al coste de un arco. | |
const Flow_Type & | flow_cost (Arc *a) const |
Retorna una referencia al coste de un arco: | |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node, const Flow_Type &cap, const Flow_Type &cost) |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node) |
Usado por algorítmica interna. NO UTILIZAR. | |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node, const Arc_Type &arc_info) |
Usado por algorítmica interna. NO UTILIZAR. | |
Flow_Type | compute_flow_cost () |
Calcula el coste total del flujo circulante por la red. | |
Métodos públicos heredados desde Aleph::Net_Graph< NodeT, ArcT > | |
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 () |
Node * | get_source () |
Retorna un nodo fuente de la red. | |
Node * | get_sink () |
Retorna un nodo sumidero de la red. | |
Node * | insert_node (const Node_Type &node_info) |
Node * | insert_node () |
Node * | insert_node (Node *p) |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node, const typename Arc::Arc_Type &arc_info, const Flow_Type &cap, const Flow_Type &flow) |
Arc * | connect_arc (Arc *arc) |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node, const Flow_Type &cap) |
virtual Arc * | insert_arc (Node *src_node, Node *tgt_node, const typename Arc::Arc_Type &arc_info) |
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_Type & | get_flow (Arc *arc) const |
retorna el valor de capacidad del arco. | |
const Flow_Type & | get_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. | |
Arc * | get_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_Digraph & | operator= (const Array_Digraph< Node, Arc > &g) |
Array_Digraph & | operator= (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_Graph & | operator= (const Array_Graph &g) |
Array_Graph & | operator= (Array_Graph &&g) |
void | sort_arcs (Compare &) |
void | sort_arcs (Compare &&) |
GRAPH_FUNCTIONAL_METHODS (Array_Graph) | |
Otros miembros heredados | |
Atributos públicos heredados desde Aleph::Net_Graph< NodeT, ArcT > | |
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 | |
Definición de red capacitada de flujo con costes asociados a los flujos.
Este tipo, derivado de Net_Graph, modeliza una red capacitada en la que a cada arco se le define un coste por unidad de flujo. Este modelo, extensión del de red capacitada, amplía considerablemente la gama de problemas de optimización combinatoria al plantear una optimización tipo max-min. En este caso, el máximo flujo a coste mínimo.
Siendo derivación de Net_Graph, su interfaz es muy similar, con la añadidura de parámetros y métodos para manejar el coste de cada arco.
typedef Net_Graph<NodeT, ArcT> Aleph::Net_Max_Flow_Min_Cost< NodeT, ArcT >::Net |
El tipo de red de flujo sobre el cual se sustenta este modelo con coste
|
inlinevirtual |
Crea e inserta un arco en una red de flujo con costes. El arco creado tien valor de flujo cero.
[in] | src_node | nodo origen |
[in] | tgt_node | nodo destino |
[in] | cap | valor de capacidad del arco |
[in] | cost | valor de coste por unidad de flujo del arco |
bad_alloc | si no hay suficiente memoria |
Hace referencia a Aleph::Net_Graph< NodeT, ArcT >::insert_arc().