Heuristic initialization of bipartite matching algorithms
Heuristic initialization of bipartite matching algorithms
Heuristic initialization of bipartite matching algorithms
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>