10.08.2013 Views

Heuristic initialization of bipartite matching algorithms

Heuristic initialization of bipartite matching algorithms

Heuristic initialization of bipartite matching algorithms

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

<strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong><br />

<strong>algorithms</strong><br />

Johannes Langguth<br />

University <strong>of</strong> Bergen<br />

joint work with Fredrik Manne and Peter Sanders<br />

February 4, 2009<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching<br />

Bipartite Cardinality Matching<br />

Given an undirected, <strong>bipartite</strong> graph G = (V1, V2, E), E ⊆ V1 × V2<br />

find a maximum subset M ⊆ E <strong>of</strong> pairwise nonadjacent edges.<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching<br />

Bipartite Cardinality Matching<br />

Given an undirected, <strong>bipartite</strong> graph G = (V1, V2, E), E ⊆ V1 × V2<br />

find a maximum subset M ⊆ E <strong>of</strong> pairwise nonadjacent edges.<br />

Perfect Matching<br />

M is called a perfect <strong>matching</strong> iff |V1| = |V2| = |M|.<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching<br />

Bipartite Cardinality Matching<br />

Given an undirected, <strong>bipartite</strong> graph G = (V1, V2, E), E ⊆ V1 × V2<br />

find a maximum subset M ⊆ E <strong>of</strong> pairwise nonadjacent edges.<br />

Perfect Matching<br />

M is called a perfect <strong>matching</strong> iff |V1| = |V2| = |M|.<br />

Old problem<br />

A classical topic in combinatorial optimization<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching in CSC<br />

⎛<br />

⎜<br />

⎝<br />

0 1 0 2 5<br />

1 1 3 3 0<br />

0 2 6 6 5<br />

3 0 1 0 3<br />

0 1 2 0 5<br />

⎞<br />

⎟<br />

⎠<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching in CSC<br />

⎛<br />

⎜<br />

⎝<br />

0 1 0 2 5<br />

1 1 3 3 0<br />

0 2 6 6 5<br />

3 0 1 0 3<br />

0 1 2 0 5<br />

⎞<br />

⎟<br />

⎠<br />

1<br />

2<br />

3<br />

4<br />

5<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

1<br />

2<br />

3<br />

4<br />

5


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching in CSC<br />

⎛<br />

⎜<br />

⎝<br />

0 1 0 2 5<br />

1 1 3 3 0<br />

0 2 6 6 5<br />

3 0 1 0 3<br />

0 1 2 0 5<br />

⎞<br />

⎟<br />

⎠<br />

1<br />

2<br />

3<br />

4<br />

5<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

1<br />

2<br />

3<br />

4<br />

5


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching in CSC<br />

⎛<br />

⎜<br />

⎝<br />

⎛<br />

⎜<br />

⎝<br />

0 1 0 2 5<br />

1 1 3 3 0<br />

0 2 6 6 5<br />

3 0 1 0 3<br />

0 1 2 0 5<br />

2 1 0 0 5<br />

3 1 3 1 0<br />

6 2 6 0 5<br />

0 0 1 3 3<br />

0 1 2 0 5<br />

⎞<br />

⎟<br />

⎠<br />

⎞<br />

⎟<br />

⎠<br />

1<br />

2<br />

3<br />

4<br />

5<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

1<br />

2<br />

3<br />

4<br />

5


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching Algorithms<br />

Exact Algorithms<br />

Search for augmenting pathes<br />

Close relation to Max - Flow<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching Algorithms<br />

Exact Algorithms<br />

Search for augmenting pathes<br />

Close relation to Max - Flow<br />

Single augmenting pathes: BFS, DFS<br />

Multiple augmenting pathes: Hopcr<strong>of</strong>t-Karp ’73, Alt et al.’91<br />

Push-relabel Algorithms: Goldberg-Tarjan ’88<br />

Running time: O(m √ n)<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Bipartite Matching Algorithms<br />

Exact Algorithms<br />

Search for augmenting pathes<br />

Close relation to Max - Flow<br />

Single augmenting pathes: BFS, DFS<br />

Multiple augmenting pathes: Hopcr<strong>of</strong>t-Karp ’73, Alt et al.’91<br />

Push-relabel Algorithms: Goldberg-Tarjan ’88<br />

Running time: O(m √ n)<br />

<strong>Heuristic</strong> Initialization<br />

Number <strong>of</strong> augmenting pathes can be reduced by starting on an<br />

approximate <strong>matching</strong><br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching <strong>Heuristic</strong>s<br />

O(m) running times<br />

Constant approximation ratios: always 1<br />

2 or better<br />

Good heuristic results: <strong>of</strong>ten 95<br />

100 or better<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Matching <strong>Heuristic</strong>s<br />

O(m) running times<br />

Constant approximation ratios: always 1<br />

2 or better<br />

Good heuristic results: <strong>of</strong>ten 95<br />

100 or better<br />

Simple Greedy<br />

Loop through all unmatched vertices once<br />

Match each vertex with a random (unmatched) vertex<br />

Remove matched vertices from graph<br />

Alternative description:<br />

Repeatedly pick a random edge and match its vertices<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Minimum Degree <strong>Heuristic</strong><br />

Mindegree<br />

Repeatedly pick a vertex <strong>of</strong> minimum degree and match it ...<br />

One sided: with a random neighbour<br />

Two sided: with a neighbour <strong>of</strong> minimum degree<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Minimum Degree <strong>Heuristic</strong><br />

Mindegree<br />

Repeatedly pick a vertex <strong>of</strong> minimum degree and match it ...<br />

One sided: with a random neighbour<br />

Two sided: with a neighbour <strong>of</strong> minimum degree<br />

Vertex removal<br />

Remove matched vertices from graph<br />

Static: count degrees once<br />

Dynamic: decrease degrees after removal<br />

Dynamic mindegree requires priority queue<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Example<br />

2<br />

3<br />

2<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2<br />

3<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Static one-sided mindegree<br />

2<br />

3<br />

2<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2<br />

3<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Static one-sided mindegree<br />

2<br />

3<br />

2<br />

2 3<br />

2 2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Static one-sided mindegree<br />

2<br />

3<br />

2<br />

2 3<br />

2 2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Static one-sided mindegree<br />

2<br />

3 2<br />

2<br />

2 3<br />

2 2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

2<br />

3<br />

2<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2<br />

3<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

2<br />

3<br />

2 2<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

3<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

2<br />

2<br />

− −<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

2<br />

2<br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

−<br />

1<br />

− −<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

−<br />

1<br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

−<br />

−<br />

− −<br />

2<br />

2<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

−<br />

−<br />

2<br />

2


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Dynamic two-sided mindegree<br />

−<br />

−<br />

− −<br />

−<br />

1<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

−<br />

−<br />

1<br />


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Karp-Sipser <strong>Heuristic</strong><br />

Theorem<br />

Degree 1 Reduction [Karp and Sipser 1981]<br />

Given a graph G = (V,E) and vertices u, w ∈ V with deg(u) = 1<br />

and Γ(u) = {w}, there is always a maximum <strong>matching</strong> M on G<br />

with {u, w} ∈ M.<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Karp-Sipser <strong>Heuristic</strong><br />

Theorem<br />

Degree 1 Reduction [Karp and Sipser 1981]<br />

Given a graph G = (V,E) and vertices u, w ∈ V with deg(u) = 1<br />

and Γ(u) = {w}, there is always a maximum <strong>matching</strong> M on G<br />

with {u, w} ∈ M.<br />

Karp-Sipser <strong>Heuristic</strong><br />

Uses degree 1 reductions only<br />

Equivalent to dynamic mindegree for degree 1 vertices<br />

Equivalent to simple greedy for other vertices<br />

Faster due to shorter priority queue<br />

Offers a good trade<strong>of</strong>f (Möhring, Müller-Hannemann ’98)<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Degree 2 Reductions<br />

v<br />

u<br />

w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Degree 2 Reductions<br />

v<br />

u<br />

w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Degree 2 Reductions<br />

v<br />

u<br />

w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Degree 2 Reductions<br />

Theorem<br />

Degree 2 Reduction [Karp and Sipser 1981]<br />

Given a graph G = (V,E) and vertices u, v, w ∈ V with<br />

deg(u) = 2 and Γ(u) = {v, w}, there is always a maximum<br />

<strong>matching</strong> M on G with {u, v} ∈ M or {u, w} ∈ M.<br />

v<br />

u<br />

w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u ′


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Motivation<br />

Observation<br />

Degree 2 reductions yield high solution quality (Magun ’98)<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Motivation<br />

Observation<br />

Degree 2 reductions yield high solution quality (Magun ’98)<br />

Problem<br />

Require flexible, slow data structures<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Motivation<br />

Observation<br />

Degree 2 reductions yield high solution quality (Magun ’98)<br />

Problem<br />

Require flexible, slow data structures<br />

Question<br />

Can we use these reductions with simple and fast data structures ?<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Motivation<br />

Observation<br />

Degree 2 reductions yield high solution quality (Magun ’98)<br />

Problem<br />

Require flexible, slow data structures<br />

Question<br />

Can we use these reductions with simple and fast data structures ?<br />

Solution<br />

Alternating components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Cyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Cyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Cyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Cyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Acyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Acyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Acyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Acyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Acyclic Alternating Components<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Algorithm<br />

Component Based Dynamic Mindegree Algorithm<br />

Pick a vertex v <strong>of</strong> minimum degree. If it is <strong>of</strong>...<br />

Degree 1: Perform degree 1 reduction<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Algorithm<br />

Component Based Dynamic Mindegree Algorithm<br />

Pick a vertex v <strong>of</strong> minimum degree. If it is <strong>of</strong>...<br />

Degree 1: Perform degree 1 reduction<br />

Degree 2: Find alternating component from v<br />

Match component if it is cyclic<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Algorithm<br />

Component Based Dynamic Mindegree Algorithm<br />

Pick a vertex v <strong>of</strong> minimum degree. If it is <strong>of</strong>...<br />

Degree 1: Perform degree 1 reduction<br />

Degree 2: Find alternating component from v<br />

Match component if it is cyclic<br />

Degree 3+: Use dynamic double sided mindegree<br />

Degree 3+: If v belongs to an acyclic component<br />

pick its vertex <strong>of</strong> maximum external degree and<br />

match it to an external vertex<br />

Repeat until no further vertices can be matched<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v v<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

v<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

v<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

v<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

v<br />

v<br />

w<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v<br />

v<br />

v<br />

w<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Depart from Degree 2 Reduction<br />

v<br />

v<br />

v<br />

w<br />

v<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v v<br />

v<br />

v w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Component Based Dynamic Mindegree Algorithm<br />

v v<br />

v<br />

v w<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong><br />

u<br />

v


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Greedy Enhancement<br />

Observation<br />

Solution quality <strong>of</strong> Simple Greedy has low correlation with the<br />

solution quality <strong>of</strong> the Component-based approach<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Greedy Enhancement<br />

Observation<br />

Solution quality <strong>of</strong> Simple Greedy has low correlation with the<br />

solution quality <strong>of</strong> the Component-based approach<br />

Idea<br />

If Simple Greedy solution is good then keep it<br />

Otherwise run Component based heuristic<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Greedy Enhancement<br />

Observation<br />

Solution quality <strong>of</strong> Simple Greedy has low correlation with the<br />

solution quality <strong>of</strong> the Component-based approach<br />

Idea<br />

If Simple Greedy solution is good then keep it<br />

Otherwise run Component based heuristic<br />

Question<br />

How many vertices are matched in a good solution?<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Greedy Enhancement<br />

Observation<br />

Solution quality <strong>of</strong> Simple Greedy has low correlation with the<br />

solution quality <strong>of</strong> the Component-based approach<br />

Idea<br />

If Simple Greedy solution is good then keep it<br />

Otherwise run Component based heuristic<br />

Question<br />

How many vertices are matched in a good solution?<br />

Answer<br />

Threshold <strong>of</strong> 99.5% matched vertices works well,<br />

up to 99.8% is reasonable<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

<strong>Heuristic</strong>s<br />

Simple Greedy<br />

Static mindegree<br />

Karp-Sipser (1s/2s)<br />

Dynamic mindegree (1s/2s)<br />

Component based dynamic mindegree<br />

Greedy enhanced component based dynamic mindegree<br />

(99.5%)<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

<strong>Heuristic</strong>s<br />

Simple Greedy<br />

Static mindegree<br />

Karp-Sipser (1s/2s)<br />

Dynamic mindegree (1s/2s)<br />

Component based dynamic mindegree<br />

Greedy enhanced component based dynamic mindegree<br />

(99.5%)<br />

900 matrices<br />

Average size: 67000 Vertices / 365000 Edges<br />

Matrices from the Florida Matrix Collection by Tim Davis<br />

26 generated matrices: HiLo and Rbg Generators<br />

(Setubal ’96, Goldberg ’98)<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

Average Runtime (sec.) / unmatched Ratio<br />

0.06<br />

0.05<br />

0.04<br />

0.03<br />

0.02<br />

0.01<br />

0<br />

greedy static<br />

Runtime<br />

Errors<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

Average Runtime (sec.) / unmatched Ratio<br />

0.06<br />

0.05<br />

0.04<br />

0.03<br />

0.02<br />

0.01<br />

0<br />

greedy static MD 1s MD 2s<br />

Runtime<br />

Errors<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

Average Runtime (sec.) / unmatched Ratio<br />

0.06<br />

0.05<br />

0.04<br />

0.03<br />

0.02<br />

0.01<br />

0<br />

greedy static MD 1s MD 2s KS 1s KS 2s<br />

Runtime<br />

Errors<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Experiments<br />

Average Runtime (sec.) / unmatched Ratio<br />

0.06<br />

0.05<br />

0.04<br />

0.03<br />

0.02<br />

0.01<br />

0<br />

Runtime<br />

Errors<br />

greedy static MD 1s MD 2s KS 1s KS 2s Cbased Gcomp<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Combined Algorithms<br />

Exact Algorithms<br />

Alt, Blum, Paul, Mehlhorn (ABMP) and<br />

Push-Relabel by João C. Setubal<br />

BFS and<br />

Hopcr<strong>of</strong>t-Karp (HK) by Florin Dobrian<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Combined Algorithms<br />

Exact Algorithms<br />

Alt, Blum, Paul, Mehlhorn (ABMP) and<br />

Push-Relabel by João C. Setubal<br />

BFS and<br />

Hopcr<strong>of</strong>t-Karp (HK) by Florin Dobrian<br />

72 matrices<br />

46 matrices from Florida Matrix Collection<br />

26 generated matrices<br />

Average size: 302000 Vertices / 1950000 Edges<br />

Maximum size: 1280000 Vertices / 12738525 Edges<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Results<br />

Average running time in seconds<br />

16<br />

15<br />

14<br />

13<br />

12<br />

11<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

greedy static<br />

Push-relabel<br />

ABMP<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Results<br />

Average running time in seconds<br />

16<br />

15<br />

14<br />

13<br />

12<br />

11<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

greedy static MD 1s MD 2s<br />

Push-relabel<br />

ABMP<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Results<br />

Average running time in seconds<br />

2.5<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0<br />

greedy static MD 1s MD 2s KS 1s KS 2s<br />

Push-relabel<br />

ABMP<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Results<br />

Average running time in seconds<br />

2.5<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0<br />

Push-relabel<br />

ABMP<br />

greedy static MD 1s MD 2s KS 1s KS 2s Cbased Gcomp<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Average running in seconds<br />

Other <strong>algorithms</strong><br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0<br />

KS 1s BFS Cbased BFS Gcomp BFS<br />

<strong>Heuristic</strong><br />

Exact<br />

Sum<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Average running in seconds<br />

Other <strong>algorithms</strong><br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0<br />

<strong>Heuristic</strong><br />

Exact<br />

Sum<br />

KS 1s BFS Cbased BFS Gcomp BFS KS 1s HK Cbased HK Gcomp HK<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Conclusions<br />

Static heuristics do not work well<br />

Dynamic heuristics show simillar quality<br />

Two sided mindegree is superior to one-sided mindegree<br />

One sided Karp-Sipser is good and fast<br />

Component - based heuristic is slower but better<br />

Greedy enhancement pays <strong>of</strong>f<br />

<strong>Heuristic</strong> solution quality strongly affects exact algorthm time<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Conclusions<br />

Static heuristics do not work well<br />

Dynamic heuristics show simillar quality<br />

Two sided mindegree is superior to one-sided mindegree<br />

One sided Karp-Sipser is good and fast<br />

Component - based heuristic is slower but better<br />

Greedy enhancement pays <strong>of</strong>f<br />

<strong>Heuristic</strong> solution quality strongly affects exact algorthm time<br />

No free lunch<br />

Reductions have a strong effect on solution quality<br />

Mindegree <strong>of</strong>fers little benefit<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Future Work<br />

Find the best exact algorithm<br />

Parallel impelemtation<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>


Introduction Algorithms New <strong>Heuristic</strong> Results Outlook<br />

Future Work<br />

Find the best exact algorithm<br />

Parallel impelemtation<br />

Weighted perfect <strong>matching</strong><br />

Weight augmenting pathes<br />

Johannes Langguth <strong>Heuristic</strong> <strong>initialization</strong> <strong>of</strong> <strong>bipartite</strong> <strong>matching</strong> <strong>algorithms</strong>

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

Saved successfully!

Ooh no, something went wrong!