Registers

Registers denote a variety of graph attributes which are intended to store algorithmic results persistently. All registers are collected into a single attribute pool, and this pool can be accessed by the return of Registers().

Opposed to the other graph attributes, registers are available for all graph objects, not just for represented graphs. If a graph is represented, manipulations of its skeleton ensure that the register attributes are updated accordingly.


Node colours

The node colour register assigns integer values to the graph nodes, with the intended value range [0,1,..,n-1] + {NoNode}. The applications are:

[See API]


Edge colours

The edge colour register assigns integer values to the graph arcs, with the intended value range [0,1,..,2m-1] + {NoArc}. The applications are:

[See API]


Predecessor labels

The predecessor register assigns arc indices to the graph nodes. More particularly, the predecessor arc of a node is either undefined or points to this node.

Any directed path encoded into the predecessor labels can be backtracked from its end node without scanning the incidence lists of the intermediate nodes. So, whenever possible, subgraphs are stored by the predecessor register:

[See API]


Distance labels

The distance label register maintains the results of shortest path methods.

[See API]


Node potentials

The node potential register maintains the dual solutions for min-cost network flow problems. That is, network flow optimality can be verified at any time after a flow has been been computed, and later calls to the min-cost flow solver will take advantage of the dual solution.

[See API]


Return to main page