510 likes | 522 Views
This article discusses the concepts of maximum weight matchings and augmenting paths in bipartite graphs. It explains how to find maximum weight matchings using augmenting paths and provides an algorithm for finding augmenting paths with maximum gain. The article also touches upon the shortest path problem in relation to augmenting paths.
E N D
Midterm < 20 1 20-29 0 30-39 4 40-49 5 50-59 9 60-69 7 70 3
Matchings matching M = subgraph with vertices of degree = 1
Matchings = unmatched vertex (vertex not in M) matching M = subgraph with vertices of degree = 1
Matchings = unmatched vertex (vertex not in M) matching M = subgraph with vertices of degree = 1 perfect matching = matching with no unmatched vertices (perfect world – everybody has a buddy)
Maximal / maximum maximal = no edge can be added to M to make a bigger matching maximum = there is no matching with more edges maximum maximal maximal, NOT maximum
Augmenting path path connecting two unmatched vertices with alternating non-matching and matching edges If there exists augmenting path then the matching is NOT maximum.
Augmenting path path connecting two unmatched vertices with alternating non-matching and matching edges
Augmenting path path connecting two unmatched vertices with alternating non-matching and matching edges Lucky ?
Augmenting path Lucky ? NO Theorem: If matching M is not maximum then there exists an augmenting path.
Augmenting path Theorem: If the matching M is not maximum then there exists an augmenting path. M = matching, not maximum B = bigger matching
Proof M = matching, not maximum B = bigger matching MB
Proof M = matching, not maximum B = bigger matching MB
Proof M = matching, not maximum B = bigger matching MB
Proof M = matching, not maximum B = bigger matching MB vertices of degree 0,1,2 paths and cycles no odd cycles must have a path with more edges from B than from M augmenting path
How to find maximum matching? M0 repeat find augmenting path P M MP until no augmenting path
Augmenting path in bipartite graphs augmenting path has odd length endpoints on different sides call the one on the left start non matching edges matching edges
Augmenting path in bipartite graphs augmenting path has odd length endpoints on different sides call the one on the left start non matching edges matching edges
Augmenting path in bipartite graphs augmenting path has odd length endpoints on different sides call the one on the left start non matching edges matching edges Theorem: augmenting path exists there is a path from unmatched vertex on the left to an unmatched vertex on the right
Augmenting path in bipartite graphs augmenting path has odd length endpoints on different sides call the one on the left start non matching edges matching edges Theorem: augmenting path exists there is a path from the blue vertex on the left to the blue vertex on the right
Augmenting path in bipartite graphs Finding augmenting path (or checking none exists) one BFS (or DFS) computation TIME = O(E) M0 repeat find augmenting path P M MP until no augmenting path Finding max-matching O( VE )
Maximum-weight matchings 5 5 10 10 5 5 5 5 10
Maximum-weight matchings 5 5 10 10 5 weight = 30 5 5 5 10 maximum-weight matching doesn’t have to be maximum cardinality !!!
Augmenting path + - + - + path connecting two unmatched vertices with alternating non-matching and matching edges must gain by the swap: we > wf f PM e PMC
Augmenting greedily THEOREM: Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges
Augmenting greedily Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges Proof: B = max-weight with k+1 edges MB
Augmenting greedily Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges gain = 0 Proof: B = max-weight with k+1 edges MB
Augmenting greedily Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges gain = 0 Proof: B = max-weight with k+1 edges MB
Augmenting greedily Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges gain = 0 Proof: B = max-weight with k+1 edges MB
Augmenting greedily Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gain Then MP = matching of the maximum weight among matchings with k+1 edges Proof: B = max-weight with k+1 edges MB gain = wt(B) – wt(M)
How to find maximum-weight matching? M0 repeat find augmenting path P with maximum gain M MP until no augmenting path only need O(V) iterations
How to find augmenting path with the maximum gain? + -
How to find augmenting path with the maximum gain? + - SHORTEST PATH PROBLEM
How to find augmenting path with the maximum gain? NEGATIVE CYCLE? + -
How to find augmenting path with the maximum gain? NEGATIVE CYCLE? impossible – would contradict maximality (among matchings of cardinality k) + -
How to find augmenting path with the maximum gain? no negative cycles can use Bellman-Ford to find the shortest path (and hence get augmenting path with the maximum gain)
Putting it all together M0 repeat find augmenting path P with maximum gain M MP until no augmenting path only need O(V) iterations O(VE) time per iteration (Bellman-Ford) O(V2 E) time total
Putting it all together M0 repeat find augmenting path P with maximum gain M MP until no augmenting path only need O(V) iterations O(Vlog V + E) time per iteration (Dijkstra) O(V2log V + VE) time total
Linear ordering of vertices of a directed acyclic graph such that no edges point backward.
2log n = n 1 n1/log n = (2log n )1/log n = 2 (log n)/log n = 2 n2/log n = (2log n )2/log n = 2 2(log n)/log n = 4 n n1 + 1/log n = n . n1/log n = 2n n2 binomial(n,2)=n(n-1)/2
Mergesort reduces an instance of size n to 2 instances of size n/2 and the reduction takes time (n).
Assume that all degrees 2. Then 2 |E| = deg(v) 2 = 2 n vV vV Hence there is a vertex of degree 1. There cannot be a vertex of degree 0, since G is connected and |V|2. Hence there is a vertex of degree = 1.
max { E[ i ], O[ j ] + 1} max { O[ i ], E[ j ] + 1}
for i from 1 to n do for j from 1 to n do A[i,j] (A[i,j] + (i+j)) mod 2 M1 largest all-ones square M2 largest all-zeros square return max (M1, M2)
for i from 1 to n do for j from 1 to n do M[i,j] 1 if i>1 and j>1 then if (A[i,j]=A[i-1,j-1]) and (A[i,j] A[i-1,j]) and (A[i,j] A[i,j-1]) M[i,j] 1+min(M[i-1,j],M[i,j-1],M[i-1,j-1]) return max M[i,j] i,j {1,...,n}
H = heap n = size of the heap Extract-Min(H) min H[1] H[1] H[n] n n-1 Heapify(H,1) return min