Title: IOIACM ICPC Training
1IOI/ACM ICPC Training
2Euler Tour
3Can we draw the following figure in one line?
4Can we draw the following figure in one line?
Fail!
5How to determine if a graph can be drawn in one
line?
- Theorem
- A graph G has an Euler path if and only if
- Exactly two vertices u satisfies
indegree(u)-outdegree(u) 1 - All other vertices v satisfies
indegree(v)outdegree(v)
3
3
3
3
6Time analysis
- We can compute the degrees of all vertices in
O(E) time. - Then, it requires O(V) time to check if the
vertices satisfies the previous theorem. - In total, O(VE) time.
7Topological sort
8Topological order
- Consider the prerequisite structure for courses
- Each node x represents a course x
- (x, y) represents that course x is a prerequisite
to course y - Note that this graph should be a directed graph
without cycles. - A linear order to take all 5 courses while
satisfying all prerequisites is called a
topological order. - E.g.
- a, c, b, e, d
- c, a, b, e, d
9Topological sort
- Arranging all nodes in the graph in a topological
order - Applications
- Schedule tasks associated with a project
10Topological sort algorithm
- Algorithm topSort1
- n V
- Let R0..n-1 be the result array
- for i 1 to n
- select a node v that has no successor
- Rn-i v
- delete node v and its edges from the graph
-
- return R
11Example
12Time analysis
- Finding a node with no successor takes O(VE)
time. - We need to repeat this process V times.
- Total time O(V2 V E).
- We can implement the above process using DFS. The
time can be improved to O(V E).
13Algorithm based on DFS
- Algorithm topSort2
- s.createStack()
- for (all nodes v in the graph)
- if (v has no predecessors)
- s.push(v)
- mark v as visited
-
-
- while (s is not empty)
- let v be the node on the top of the stack s
- if (no unvisited nodes are children to v) //
i.e. v has no unvisited successor - aList.add(1, v)
- s.pop() // blacktrack
- else
- select an unvisited child u of v
- s.push(u)
- mark u as visited
-
-
14Spanning Tree
15Spanning Tree
- Given a connected undirected graph G, a spanning
tree of G is a subgraph of G that contains all of
Gs nodes and enough of its edges to form a tree.
v2
v3
v1
v5
v4
Spanning tree
Spanning tree is not unique!
16DFS spanning tree
- Generate the spanning tree edge during the DFS
traversal. - Algorithm dfsSpanningTree(v)
- mark v as visited
- for (each unvisited node u adjacent to v)
- mark the edge from u to v
- dfsSpanningTree(u)
17Example of generating spanning tree based on DFS
v2
v3
v1
x
v5
v4
G
18BFS spanning tree
- Similar to DFS, the spanning tree edges can be
generated based on BFS traversal.
19Minimum Spanning Tree
20Telephone line placing problem
- Consider a connected undirected graph where
- Each node x represents a country x
- Each edge (x, y) has a number which measures the
cost of placing telephone line between country x
and country y - Problem connecting all countries while
minimizing the total cost - Solution find a spanning tree with minimum total
weight, that is, minimum spanning tree
21Formal definition of minimum spanning tree
- Given a connected undirected graph G.
- Let T be a spanning tree of G.
- cost(T) ?e?Tweight(e)
- The minimum spanning tree is a spanning tree T
which minimizes cost(T)
22Prims algorithm
23Prims algorithm (II)
- Algorithm PrimAlgorithm(v)
- Mark node v as visited and include it in the
minimum spanning tree - while (there are unvisited nodes)
- find the minimum edge (v, u) between a visited
node v and an unvisited node u - mark u as visited
- add both v and (v, u) to the minimum spanning
tree -
24Bipartite Matching
25Unweighted Bipartite Matching
26Definitions
Matching
Free Vertex
27Definitions
- Maximum Matching matching with the largest
number of edges
28Definition
- Note that maximum matching is not unique.
29Intuition
- Let the top set of vertices be men
- Let the bottom set of vertices be women
- Suppose each edge represents a pair of man and
woman who like each other - Maximum matching tries to maximize the number of
couples!
30Applications
- Matching has many applications. For examples,
- Comparing Evolutionary Trees
- Finding RNA structure
-
- This lecture lets you know how to find maximum
matching.
31Alternating Path
- Alternating between matching and non-matching
edges.
a
b
c
d
e
f
g
h
i
j
d-h-e alternating path a-f-b-h-d-i alternating
path starts and ends with free vertices f-b-h-e
not alternating path e-j alternating path starts
and ends with free vertices
32Idea
- Flip augmenting path to get better matching
- Note After flipping, the number of matched edges
will increase by 1!
?
33Idea
- Theorem (Berge 1975)
- A matching M in G is maximum iffThere is no
augmenting path - Proof
- (?) If there is an augmenting path, clearly not
maximum. (Flip matching and non-matching edges in
that path to get a better matching!)
34Proof for the other direction
- (?) Suppose M is not maximum. Let M be a maximum
matching such that MgtM. - Consider H M?M (M?M)-(M?M)i.e. a set of
edges in M or M but not both - H has two properties
- Within H, number of edges belong to M gt number
of edges belong to M. - H can be decomposed into a set of paths. All
paths should be alternating between edges in M
and M. - There should exist a path with more edges from
M. Also, it is alternating.
35Idea of Algorithm
- Start with an arbitrary matching
- While we still can find an augmenting path
- Find the augmenting path P
- Flip the edges in P
36Labeling Algorithm
- Start with arbitrary matching
37Labeling Algorithm
- Pick a free vertex in the bottom
38Labeling Algorithm
39Labeling Algorithm
- Alternate unmatched/matched edges
40Labeling Algorithm
- Until a augmenting path is found
41Augmenting Tree
42Flip!
43Repeat
- Pick another free vertex in the bottom
44Repeat
45Repeat
46Answer
- Since we cannot find any augmenting path, stop!
47Overall algorithm
- Start with an arbitrary matching (e.g., empty
matching) - Repeat forever
- For all free vertices in the bottom,
- do bfs to find augmenting paths
- If found, then flip the edges
- If fail to find, stop and report the maximum
matching.
48Time analysis
- We can find at most V augmenting paths (why?)
- To find an augmenting path, we use bfs! Time
required O( V E ) - Total time O(V2 V E)
49Improvement
- We can try to find augmenting paths in parallel
for all free nodes in every iteration. - Using such approach, the time complexity is
improved to O(V0.5 E)
50Weighted Bipartite Graph
3
4
6
6
51Weighted Matching
Score 63110
3
4
6
6
52Maximum Weighted Matching
Score 6111413
3
4
6
6
53Augmenting Path (change of definition)
- Any alternating path such that total score of
unmatched edges gt that of matched edges - The score of the augmenting path is
- Score of unmatched edges that of matched edges
3
4
6
6
Note augmenting path need not start and end at
free vertices!
54Idea for finding maximum weight matching
- Theorem Let M be a matching of maximum weight
among matchings of size M. - If P is an augmenting path for M of maximum
weight, - Then, the matching formed by augmenting M by P is
a matching of maximum weight among matchings of
size M1.
55Overall Algorithm
- Start with an empty matching
- Repeat forever
- Find an augmenting path P with maximum score
- If the score gt 0, then flip the edges
- Otherwise, stop and report the maximum weight
matching.
56Time analysis
- The same!
- Time required O(V2 V E)
57Stable Marriage Problem
58Stable Marriage Problem
- Given N men and N women, each person list in
order of preference all the people of the
opposite sex who would like to marry. - Problem
- Engage all the women to all the men in such a way
as to respect all their preferences as much as
possible.
59Stable?
- A set of marriages is unstable if
- two persons who are not married, but both of them
prefer each other than their spouses - E.g. Suppose we have A1 B3 C2 D4 E5. This is
unstable since - A prefer 2 more than 1
- 2 prefer A more than C
60Naïve solution
- Starting from a feasible solution.
- Check if it is stable.
- If yes, done!
- If not, remove an unstable couple.
- Is this work?
61Naïve solution (2)
- Does not work!
- E.g.
- A1 B3 C2 D4 E5
- A2 B3 C1 D4 E5
- A3 B2 C1 D4 E5
- A3 B1 C2 D4 E5
62Solution
- Let X be the first man.
- X proposes to the best woman in the remaining on
his list. (Initially, the first woman on his
list!) - If a is not engaged
- Pair up (X, a). Then, set Xnext man and goto 1.
- If a prefers X more than her fiancee Y,
- Pair up (X, a). Then, set XY and goto 1.
- Goto 1
63Example
A
B
C
D
E
2
1
2
1
5
5
2
3
3
3
1
3
5
2
4
64Time analysis
- If there are N men and N women,
- O(N2) time
65Planar Graph
66Planar graph
- A graph is planar if we can draw the graph
without crossing.
K4
K4
67Non-planar
- Below shows two non-planar graphs
K3,3
K5
68Theorem for planar graph
- A graph G is non-planar
- if and only if
- G contains K5 or K3,3.
69Question
- How to check if a graph contains cycle or not?
- Consider a set S of fixed length sequences, says,
ACG, ATC, CAT, CGC, GCA. S represents the
string ACGCATC. - Given any set S, can you give an algorith to
determine if it represents a string or not?
70Questions
- Please give an O(VE) time algorithm to
recover the Euler path - Implement the spanning tree algorithm
- Please implement the labeling algorithm for
maximum matching. - Please give the pseudo-code for the stable
marriage problem. Implement it.