Eulerian cycles and supergraphs


Functions

void abstractDiGraph::ChinesePostman (bool adjustUCap) throw (ERRejected)
void abstractGraph::ChinesePostman (bool adjustUCap) throw (ERRejected)
virtual void abstractMixedGraph::ChinesePostman (bool adjustUCap) throw (ERRejected)
bool abstractMixedGraph::EulerianCycle (TArc *pred=NULL) throw (ERRejected)

Function Documentation

void ChinesePostman bool  adjustUCap  )  throw (ERRejected) [virtual, inherited]
 

Compute a maximum-weight Eulerian subgraph.

Parameters:
adjustUCap If true: Increase the arc capacities to a minimum-weight Eulerian supergraph

Reimplemented in abstractDiGraph, and abstractGraph.

void ChinesePostman bool  adjustUCap  )  throw (ERRejected) [virtual, inherited]
 

Compute a maximum-weight Eulerian subgraph.

Parameters:
adjustUCap If true: Increase the arc capacities to a minimum-weight Eulerian supergraph

Reimplemented from abstractMixedGraph.

void ChinesePostman bool  adjustUCap  )  throw (ERRejected) [virtual, inherited]
 

Compute a maximum-weight Eulerian subgraph.

Parameters:
adjustUCap If true: Increase the arc capacities to a minimum-weight Eulerian supergraph

Reimplemented from abstractMixedGraph.

bool EulerianCycle TArc pred = NULL  )  throw (ERRejected) [inherited]
 

Compute an Euler cycle.

Parameters:
pred An TArc[m] array to store the edge predecessors
Return values:
true The graph is Eulerian
This procedure checks if the graph is Eulerian and, occasionally, determines an Eulerian closed walk. If a pred[] array is passed, this is filled with the predecessors ranged [0,1,..,2m-1] for each edge. Otherwise, for every arc, its ordinal number in the walk is stored by the edge colour register.

In order to save the walk by such fixed length arrays, it is required that the upper capacity bounds are all one. If higher arc capacities occur (as for the ChinesePostman() application), it is recommended to call ExplicitParallels() first.