|
Defines |
| #define | constraintValue(i, j) (dbm_raw2bound(dbm[(i) * dim + (j)])) |
| #define | b(i) (-rates[i]) |
| #define | index(n) ((n) - nodes) |
| #define | pred(i) index(nodes[i].pred) |
| #define | depth(i) nodes[i].depth |
| #define | thread(i) index(nodes[i].thread) |
| #define | inbound(i) nodes[i].inbound |
| #define | flow(i) nodes[i].flow |
| #define | potential(i) nodes[i].potential |
Functions |
| static void | printSimpleNodeInfo (Node *nodes, uint32_t i) |
| static void | printNodeInfo (Node *nodes, const int32_t *rates, uint32_t i) |
| static void | printAllNodeInfo (Node *nodes, const int32_t *rates, uint32_t dim) |
| static void | printSimpleAllNodeInfo (Node *nodes, uint32_t dim) |
| static bool | checkTreeIntegrity (const raw_t *dbm, const int32_t *rates, Node *nodes, uint32_t dim) |
| static bool | nodeHasNoChildren (Node *node) |
| static void | printSolution (int32_t *valuation, const int32_t *rates, uint32_t dim) |
| static void | printClockLowerBounds (const raw_t *dbm, uint32_t dim) |
| static void | printAllConstraints (const raw_t *dbm, uint32_t dim, arc_t *arcs, uint32_t nbConstraints) |
| static void | printAllRates (const int32_t *rates, uint32_t dim) |
| static void | findInitialSpanningTreeSolution (const raw_t *dbm, uint32_t dim, const int32_t *rates, Node *nodes) |
| static void | updatePotentials (Node *leave, int32_t change) |
| static Node * | findLastNodeBefore (Node *node, Node *exclude) |
| | Returns the last node according to preorder before exclude but not before node.
|
| static Node * | findLastNodeBefore (Node *node, uint32_t depth) |
| | Starting from node, returns the first node according to preorder for which the preorder successor has a depth not higher than depth.
|
| static Node * | findNthPredecessor (Node *node, int32_t n) |
| | Returns the n'th predecessor of node.
|
| static bool | isPredecessorOf (Node *n, Node *m) |
| | Returns true if and only if n is on the path to the root from m.
|
| static void | updateNonRootSubtree (Node *rootNode, Node *nonRootNode, Node *leave, bool sourceInRootSubtree, uint32_t flow) |
| | Update all node information in the subtree not containing the root.
|
| static void | updateFlowInCycle (Node *k, Node *l, Node *root, uint32_t flowToAugment) |
| static void | updateSpanningTree (Node *k, Node *l, Node *leave, Node *root, int32_t costEnter) |
| | Update the spanning tree so the node information is updated including flow and node potentials.
|
| static arc_t * | enteringArcDanzig (arc_t *firstArc, arc_t *lastArc, Node *nodes, const raw_t *dbm, uint32_t dim) |
| | Danzig's entering rule chooses the eligible arc with the lowest cost.
|
| static Node * | discoverCycleRoot (Node *k, Node *l) |
| | Returns the common ancestor of nodes k and l with the biggest depth.
|
| static Node * | findLeavingArc (Node *k, Node *l, Node *root) |
| static void | testAndRemoveArtificialArcs (const raw_t *dbm, const int32_t *rates, Node *nodes, uint32_t dim) |
| static bool | allPositive (const int32_t *first, const int32_t *last) |
| | Returns true if and only if all elements in [first, last) are non-negative.
|
| static void | infimumNetSimplex (const raw_t *dbm, uint32_t dim, const int32_t *rates, Node *nodes) |
| int32_t | pdbm_infimum (const raw_t *dbm, uint32_t dim, uint32_t offsetCost, const int32_t *rates) |
| void | pdbm_infimum (const raw_t *dbm, uint32_t dim, uint32_t offsetCost, const int32_t *rates, int32_t *valuation) |