|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Node with capacity constraint for flow networks. More...
#include <tpl_netcapgraph.H>
Public Types | |
| using | Flow_Type = F_Type |
| Type representing flow and capacity values. | |
| using | Node_Type = Node_Info |
| Type of information stored in the node. | |
Public Types inherited from GTNodeCommon< NodeInfo > | |
| using | Item_Type = NodeInfo |
| using | Node = GTNodeCommon |
| Common alias for set types. | |
| using | Node_Type = NodeInfo |
| The node. | |
Public Member Functions | |
| Net_Cap_Node () noexcept | |
| Default constructor. Sets max_cap to the maximum possible value. | |
| Net_Cap_Node (const Node_Info &node_info) | |
| Construct a node with the given information. | |
| Net_Cap_Node (Node_Info &&node_info) noexcept | |
| Move constructor from node info. | |
| Net_Cap_Node (const Net_Cap_Node *node) | |
| Copy constructor from another Net_Cap_Node. | |
| Net_Cap_Node (const Net_Cap_Node &other) | |
| Copy constructor. | |
| Net_Cap_Node & | operator= (const Net_Cap_Node &other) |
| Copy assignment operator. | |
| const Flow_Type & | get_max_cap () const noexcept |
| Get the maximum capacity of this node. | |
| void | set_max_cap (const Flow_Type &cap) |
| Set the maximum capacity of this node. | |
Public Member Functions inherited from Aleph::Graph_Anode< Node_Info > | |
| Graph_Anode () | |
| Graph_Anode (const Node_Info &info) | |
| Graph_Anode (Node_Info &&info) | |
| Graph_Anode (const Graph_Anode &node) | |
| Graph_Anode & | operator= (const Graph_Anode &node) |
| Graph_Anode (Graph_Anode *p) | |
| virtual | ~Graph_Anode () |
| void | allocate_more (size_t new_size) |
| void * | insert_arc (void *arc) |
| void | remove_arc_ne (const void *arc) noexcept |
| void | remove_arc (const void *arc) |
| bool | compress () noexcept |
Public Member Functions inherited from Aleph::Dlink | |
| template<typename T > | |
| Dnode< T > * | to_dnode () noexcept |
| template<typename T > | |
| const Dnode< T > * | to_dnode () const noexcept |
| template<typename T > | |
| T & | to_data () noexcept |
| template<typename T > | |
| const T & | to_data () const noexcept |
| Dlink () noexcept | |
| Initialize a node or an empty list. | |
| Dlink (const Dlink &l) noexcept | |
| Copy constructor. | |
| void | swap (Dlink *link) noexcept |
Swap this with list whose header is link. | |
| void | swap (Dlink &l) noexcept |
Swap this with list whose header is l. | |
| Dlink (Dlink &&l) noexcept | |
| Construct a new list with the items of l moved. | |
| Dlink & | operator= (const Dlink &l) noexcept |
| Copy assignation. | |
| Dlink & | operator= (Dlink &&l) noexcept |
| Move assignation. | |
| void | reset () noexcept |
Reset this | |
| void | init () noexcept |
| constexpr bool | is_empty () const noexcept |
Return true if this (as header node) is empty. | |
| constexpr bool | is_unitarian () const noexcept |
Return true if this (as header node) has exactly one element. | |
| constexpr bool | is_unitarian_or_empty () const noexcept |
Return true if this (as header node) has zero or one element. | |
| void | insert (Dlink *node) noexcept |
Insert node after this. | |
| void | push (Dlink *node) noexcept |
| void | append (Dlink *node) noexcept |
Insert node before this. | |
| Dlink *& | get_next () const noexcept |
Return the link that is after this | |
| Dlink *& | get_prev () const noexcept |
Return the link that is before this | |
| constexpr Dlink *& | get_first_ne () const noexcept |
If this is a header node, it return the first node of this | |
| constexpr Dlink *& | get_last_ne () const noexcept |
If this is a header node, it return the last node of this | |
| constexpr Dlink *& | get_first () const noexcept |
If this is a header node, it return the first node of this | |
| constexpr Dlink *& | get_last () const noexcept |
If this is a header node, it return the last node of this | |
| void | wrap_header (Dlink *l) noexcept |
| Wrap a header to a list (without header). | |
| void | insert_list (Dlink *head) noexcept |
Insert the list head before this | |
| void | append_list (Dlink *head) noexcept |
Insert the list head after this | |
| void | splice (Dlink *l) noexcept |
Insert a list l without header node after the node this. | |
| void | concat_list (Dlink *head) noexcept |
Concatenate list head to list this | |
| void | concat_list (Dlink &head) noexcept |
| Dlink * | del () noexcept |
Remove this from the list. this must not be a header node. | |
| void | erase () noexcept |
| Dlink * | remove_prev () noexcept |
Remove the item that is before this | |
| Dlink * | remove_next () noexcept |
Remove the item that is after this | |
| Dlink * | remove_last_ne () noexcept |
| Dlink * | remove_first_ne () noexcept |
| Dlink * | remove_last () noexcept |
| Dlink * | remove_first () noexcept |
| Dlink * | top () const |
| Dlink * | pop () |
| size_t | reverse_list () noexcept |
| Reverse the list. | |
| size_t | reverse () noexcept |
| size_t | split_list_ne (Dlink &l, Dlink &r) noexcept |
Split this in the middle in two lists. | |
| size_t | split_list (Dlink &l, Dlink &r) noexcept |
| Dlink | cut_list (Dlink *link) noexcept |
Cut this from link. | |
| void | remove_all_and_delete () noexcept |
| Remove and free memory for all the items of list. | |
| void | rotate_left (size_t n) |
| Rotate to left the list n positions. | |
| void | rotate_right (size_t n) |
| Analogous to rotate_left() but to right. | |
| bool | check () |
Return true if the list is consistent. | |
Public Member Functions inherited from GTNodeCommon< NodeInfo > | |
| GTNodeCommon () noexcept=default | |
| another alias for set type | |
| GTNodeCommon (const NodeInfo &info) | |
| Copy constructor from info value. | |
| GTNodeCommon (NodeInfo &&info) | |
| Move constructor from info value. | |
| GTNodeCommon (const GTNodeCommon &other) | |
| Copy constructor. | |
| GTNodeCommon (GTNodeCommon &&other) noexcept | |
| Move constructor. | |
| GTNodeCommon & | operator= (const GTNodeCommon &other) |
| Copy assignment operator. | |
| GTNodeCommon & | operator= (GTNodeCommon &&other) noexcept |
| Move assignment operator. | |
| NodeInfo & | get_info () noexcept |
| Return a modifiable reference to the data contained in the node. | |
| const NodeInfo & | get_info () const noexcept |
| Return a constant reference to the data contained in the node. | |
| unsigned int | state () const noexcept |
| Return the state's value. | |
| void | set_state (unsigned int s) noexcept |
Set the state to value s | |
Public Attributes | |
| Flow_Type | max_cap |
| Maximum flow capacity that can pass through this node. | |
| Flow_Type | in_flow = Flow_Type{0} |
| Tracked incoming flow (updated by update() after auxiliary net computation). | |
| Flow_Type | out_flow = Flow_Type{0} |
| Tracked outgoing flow (updated by update() after auxiliary net computation). | |
Public Attributes inherited from Aleph::Graph_Anode< Node_Info > | |
| void ** | arc_array = nullptr |
| size_t | arcs_dim = 0 |
| size_t | contract_threshold = 0 |
Public Attributes inherited from GTNodeCommon< NodeInfo > | |
| Graph_Attr | attrs |
| Attributes of node. | |
| NodeInfo | node_info |
| size_t | num_arcs = 0 |
| data associated to the node. Access it with get_info() | |
Private Types | |
| using | Base = Graph_Anode< Node_Info > |
Additional Inherited Members | |
Protected Attributes inherited from Aleph::Dlink | |
| Dlink * | prev |
| Dlink * | next |
Node with capacity constraint for flow networks.
Net_Cap_Node extends the base graph node to include a maximum capacity value that limits the total flow that can pass through this node (both incoming and outgoing).
This is useful for modeling networks where nodes themselves have throughput constraints, such as:
| Node_Info | Type of information stored in the node. |
| F_Type | Numeric type for flow values (default: double). |
Definition at line 98 of file tpl_netcapgraph.H.
|
private |
Definition at line 100 of file tpl_netcapgraph.H.
| using Aleph::Net_Cap_Node< Node_Info, F_Type >::Flow_Type = F_Type |
Type representing flow and capacity values.
Definition at line 104 of file tpl_netcapgraph.H.
| using Aleph::Net_Cap_Node< Node_Info, F_Type >::Node_Type = Node_Info |
Type of information stored in the node.
Definition at line 107 of file tpl_netcapgraph.H.
|
inlinenoexcept |
Default constructor. Sets max_cap to the maximum possible value.
Definition at line 119 of file tpl_netcapgraph.H.
|
inlineexplicit |
Construct a node with the given information.
Capacity and flow attributes are initialized to their default values (max capacity = numeric max, flows = 0).
| node_info | Information to store in the node. |
Definition at line 132 of file tpl_netcapgraph.H.
|
inlineexplicitnoexcept |
Move constructor from node info.
| node_info | Information to move into the node. |
Definition at line 143 of file tpl_netcapgraph.H.
|
inline |
Copy constructor from another Net_Cap_Node.
Copies all attributes including max_cap but resets flow values.
| node | Pointer to the node to copy from. |
Definition at line 156 of file tpl_netcapgraph.H.
|
inline |
Copy constructor.
| other | Node to copy from. |
Definition at line 169 of file tpl_netcapgraph.H.
|
inlinenoexcept |
Get the maximum capacity of this node.
Definition at line 199 of file tpl_netcapgraph.H.
References Aleph::Net_Cap_Node< Node_Info, F_Type >::max_cap.
|
inline |
Copy assignment operator.
| other | Node to copy from. |
Definition at line 183 of file tpl_netcapgraph.H.
References Aleph::Net_Cap_Node< Node_Info, F_Type >::in_flow, Aleph::maps(), Aleph::Net_Cap_Node< Node_Info, F_Type >::max_cap, Aleph::Graph_Anode< Node_Info >::operator=(), and Aleph::Net_Cap_Node< Node_Info, F_Type >::out_flow.
|
inline |
Set the maximum capacity of this node.
| cap | New capacity value (must be non-negative). |
| std::domain_error | if cap is negative. |
Definition at line 209 of file tpl_netcapgraph.H.
References ah_domain_error_if, and Aleph::Net_Cap_Node< Node_Info, F_Type >::max_cap.
| Flow_Type Aleph::Net_Cap_Node< Node_Info, F_Type >::in_flow = Flow_Type{0} |
Tracked incoming flow (updated by update() after auxiliary net computation).
Definition at line 113 of file tpl_netcapgraph.H.
Referenced by Aleph::Net_Cap_Node< Node_Info, F_Type >::operator=().
| Flow_Type Aleph::Net_Cap_Node< Node_Info, F_Type >::max_cap |
Maximum flow capacity that can pass through this node.
Definition at line 110 of file tpl_netcapgraph.H.
Referenced by Aleph::Net_Cap_Node< Node_Info, F_Type >::get_max_cap(), Aleph::Net_Cap_Node< Node_Info, F_Type >::operator=(), and Aleph::Net_Cap_Node< Node_Info, F_Type >::set_max_cap().
| Flow_Type Aleph::Net_Cap_Node< Node_Info, F_Type >::out_flow = Flow_Type{0} |
Tracked outgoing flow (updated by update() after auxiliary net computation).
Definition at line 116 of file tpl_netcapgraph.H.
Referenced by Aleph::Net_Cap_Node< Node_Info, F_Type >::operator=().