31.01.2014 Views

Version 5.0 The LEDA User Manual

Version 5.0 The LEDA User Manual

Version 5.0 The LEDA User Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Heuristics for Initial Matching Constructions. Each function can be asked to start<br />

with either an empty matching (heur = 0), a greedy matching (heur = 1) or an (adapted)<br />

fractional matching (heur = 2); by default, the fractional matching heuristic is used.<br />

Graph Structure. All functions assume the underlying graph (type graph) to be connected,<br />

simple, loopfree and undirected (i.e., no anti-parallel edges).<br />

Edge Weight Restrictions. <strong>The</strong> algorithms use divisions. In order to avoid rounding<br />

errors for the number type int, please make sure that all edge weights are multiples<br />

of 4; the algorithm will automatically multiply all edge weights by 4 if this<br />

condition is not met. (<strong>The</strong>n, however, the returned dual solution is valid only with<br />

respect to the modified weight function.) Moreover, in the maximum-weight (non-perfect)<br />

matching case all edge weights are assumed to be non-negative.<br />

Arithmetic Demand. <strong>The</strong> arithmetic demand for integer edge weights is as follows.<br />

Let C denote the maximal absolute value of any edge weight and let n be the number of<br />

nodes of the graph.<br />

In the perfect weighted matching case we have for a potential pot[u] of a node u and for<br />

a potential z B of a blossom B:<br />

−nC/2 ≤ pot[u] ≤ (n + 1)C/2 and − nC ≤ z B ≤ nC.<br />

In the non-perfect matching case we have for a potential pot[u] of a node u and for a<br />

potential z B of a blossom B:<br />

0 ≤ pot[u] ≤ C and 0 ≤ z B ≤ C.<br />

<strong>The</strong> function CHECK WEIGHTS may be used to test whether the edge weights are<br />

feasible or not. It is automatically called at the beginning of each of the algorithms<br />

provided in this chapter.<br />

Single Tree vs. Multiple Tree Approach: All functions can either run a single tree<br />

approach or a multiple tree approach. In the single tree approach, one alternating tree is<br />

grown from a free node at a time. In the multiple tree approach, multiple alternating trees<br />

are grown simultaneously from all free nodes. On large instances, the multiple tree approach<br />

is significantly faster and therefore is used by default. If #define SST APPROACH<br />

is defined before the template file is included all functions will run the single tree approach.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!