Content Discrete
Content Discrete
Spring 2015
Thomas Rothvoss
A
C
3 Shortest paths 19
3.1 Dijkstra’s algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 The Moore-Bellman-Ford Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Detecting negative cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 Network flows 29
4.1 The Ford-Fulkerson algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 Min Cut problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 The Edmonds-Karp algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3.1 Some remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Application to bipartite matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4.1 Kőnig’s Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4.2 Hall’s Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5 Linear programming 43
5.1 Separation, Duality and Farkas Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Algorithms for linear programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.1 The simplex method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.2 Interior point methods and the Ellipsoid method . . . . . . . . . . . . . . . . 50
5.2.3 The multiplicative weights update method . . . . . . . . . . . . . . . . . . . . 50
5.3 Connection to discrete optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4 Integer programs and integer hull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6 Total unimodularity 59
6.1 Application to bipartite matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2 Application to flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3 Application to interval scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3
7 Branch & Bound 67
7.1 A pathological instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8 Non-bipartite matching 73
8.1 Augmenting paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.2 Computing augmenting paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.3 Contracting odd cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75