midterm < 20 1 20-29 0 30-39 4 40-49 5 50-59 9 60-69 7 70 3
TRANSCRIPT
Midterm
< 20 120-29 030-39 440-49 550-59 960-69 770 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
matching M = subgraph with vertices of degree 1
= unmatched vertex (vertex not in M)
perfect matching = matching with no unmatched vertices (perfect world – everybody has a buddy)
Perfect matching
Maximal / maximum
maximal = no edge can be added to M to make a bigger matching
maximum = there is no matching with more edges
maximal, NOT maximum maximum maximal
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 pathTheorem:
If the matching M is not maximum then there exists an augmenting path.
M = matching, not maximumB = bigger matching
Proof
M = matching, not maximumB = bigger matching
MB
Proof
M = matching, not maximumB = bigger matching
MB
Proof
M = matching, not maximumB = bigger matching
MB
Proof
M = matching, not maximumB = bigger matching
MBvertices of degree 0,1,2 paths and cycles
no odd cycles
must have a path with more edges from Bthan from M augmenting path
How to find maximum matching?
Mrepeat find augmenting path P M MPuntil 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)
Finding max-matching O( VE )
Mrepeat find augmenting path P M MP
until no augmenting path
Maximum-weight matchings
1010
10
55
5
5
55
Maximum-weight matchings
1010
10
55
5
5
55
weight = 30
maximum-weight matching doesn’t have to be maximum cardinality !!!
Augmenting path
path connecting two unmatched vertices with alternating non-matching and matching edges
+ - + +-
we > wf
e PMC f PM
must gain by the swap:
Augmenting greedily
Assume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
THEOREM:
Augmenting greedilyAssume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
Proof: B = max-weight with k+1 edgesMB
Augmenting greedilyAssume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
Proof: B = max-weight with k+1 edgesMB
gain = 0
Augmenting greedilyAssume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
Proof: B = max-weight with k+1 edgesMB
gain = 0
Augmenting greedilyAssume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
Proof: B = max-weight with k+1 edgesMB
gain = 0
Augmenting greedilyAssume M = matching of the maximum-weight among matchings with k edges P = augmenting path with maximum gainThen MP = matching of the maximum weight among matchings with k+1 edges
Proof: B = max-weight with k+1 edgesMB
gain = wt(B) – wt(M)
How to find maximum-weight matching?
Mrepeat find augmenting path P with maximum gain M MPuntil no augmenting path
only need O(V) iterations
How to find augmenting path withthe maximum gain?
+
-
SHORTEST PATH PROBLEM
How to find augmenting path withthe maximum gain?
+
-
NEGATIVE CYCLE?
How to find augmenting path withthe maximum gain?
+
-
NEGATIVE CYCLE?
How to find augmenting path withthe maximum gain?
+
-
impossible – would contradict maximality (among matchings of cardinality k)
How to find augmenting path withthe maximum gain?
no negative cycles
can use Bellman-Fordto find the shortest path(and hence get augmenting pathwith the maximum gain)
Putting it all together
Mrepeat find augmenting path P with maximum gain M MPuntil no augmenting path
only need O(V) iterations
O(VE) time per iteration (Bellman-Ford)O(V2 E) time total
Putting it all together
Mrepeat find augmenting path P with maximum gain M MPuntil no augmenting path
only need O(V) iterations
O(Vlog V + E) time per iteration (Dijkstra)O(V2log V + VE) time total
Back to midterm
Linear ordering of vertices of a directed acyclic graph such thatno edges point backward.
2log n = n
n1/log n = (2log n )1/log n = 2 (log n)/log n = 2n2/log n = (2log n )2/log n = 2 2(log n)/log n = 4
1
n1 + 1/log n = n . n1/log n = 2nn
n2
binomial(n,2)=n(n-1)/2
Mergesort reduces an instance ofsize n to 2 instances of size n/2and the reduction takes time (n).
Assume that all degrees 2. Then
2 |E| = deg(v) 2 = 2 nvV 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}
max { B[i-1], B[i-2] + ai }
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 squareM2 largest all-zeros squarereturn 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}
Extract-Min(H) min H[1] H[1] H[n] n n-1 Heapify(H,1) return min
H = heapn = size of the heap
input: weighted, undirected graph G (given by adjacency list)
output: minimum-cost spanning tree of G (cost of a tree is the sum of the weights of its edges)