IOIACM ICPC Training - PowerPoint PPT Presentation

About This Presentation
Title:

IOIACM ICPC Training

Description:

Can we draw the following figure in one line? Can we draw the following ... Theorem (Berge 1975): A matching M in G is maximum. iff. There is no augmenting path ... – PowerPoint PPT presentation

Number of Views:75
Avg rating:3.0/5.0
Slides: 71
Provided by: ooiwei
Category:
Tags: icpc | ioiacm | berge | training

less

Transcript and Presenter's Notes

Title: IOIACM ICPC Training


1
IOI/ACM ICPC Training
  • 4 June 2005

2
Euler Tour
  • IOI/ACM ICPC Training

3
Can we draw the following figure in one line?
4
Can we draw the following figure in one line?
Fail!
5
How 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
6
Time 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.

7
Topological sort
  • IOI/ACM ICPC Training

8
Topological 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

9
Topological sort
  • Arranging all nodes in the graph in a topological
    order
  • Applications
  • Schedule tasks associated with a project

10
Topological 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

11
Example
12
Time 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).

13
Algorithm 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

14
Spanning Tree
  • IOI/ACM ICPC Training

15
Spanning 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!
16
DFS 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)

17
Example of generating spanning tree based on DFS
v2
v3
v1
x
v5
v4
G
18
BFS spanning tree
  • Similar to DFS, the spanning tree edges can be
    generated based on BFS traversal.

19
Minimum Spanning Tree
  • IOI/ACM ICPC Training

20
Telephone 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

21
Formal 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)

22
Prims algorithm
23
Prims 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

24
Bipartite Matching
  • IOI/ACM ICPC Training

25
Unweighted Bipartite Matching
26
Definitions
Matching
Free Vertex
27
Definitions
  • Maximum Matching matching with the largest
    number of edges

28
Definition
  • Note that maximum matching is not unique.

29
Intuition
  • 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!

30
Applications
  • Matching has many applications. For examples,
  • Comparing Evolutionary Trees
  • Finding RNA structure
  • This lecture lets you know how to find maximum
    matching.

31
Alternating 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
32
Idea
  • Flip augmenting path to get better matching
  • Note After flipping, the number of matched edges
    will increase by 1!

?
33
Idea
  • 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!)

34
Proof 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.

35
Idea 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

36
Labeling Algorithm
  • Start with arbitrary matching

37
Labeling Algorithm
  • Pick a free vertex in the bottom

38
Labeling Algorithm
  • Run BFS

39
Labeling Algorithm
  • Alternate unmatched/matched edges

40
Labeling Algorithm
  • Until a augmenting path is found

41
Augmenting Tree
42
Flip!
43
Repeat
  • Pick another free vertex in the bottom

44
Repeat
  • Run BFS

45
Repeat
  • Flip

46
Answer
  • Since we cannot find any augmenting path, stop!

47
Overall 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.

48
Time 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)

49
Improvement
  • 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)

50
Weighted Bipartite Graph
3
4
6
6
51
Weighted Matching
Score 63110
3
4
6
6
52
Maximum Weighted Matching
Score 6111413
3
4
6
6
53
Augmenting 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!
54
Idea 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.

55
Overall 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.

56
Time analysis
  • The same!
  • Time required O(V2 V E)

57
Stable Marriage Problem
  • IOI/ACM ICPC Training

58
Stable 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.

59
Stable?
  • 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

60
Naïve solution
  • Starting from a feasible solution.
  • Check if it is stable.
  • If yes, done!
  • If not, remove an unstable couple.
  • Is this work?

61
Naï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

62
Solution
  • 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

63
Example
A
B
C
D
E
2
1
2
1
5
5
2
3
3
3
1
3
5
2
4
64
Time analysis
  • If there are N men and N women,
  • O(N2) time

65
Planar Graph
  • IOI/ACM ICPC Training

66
Planar graph
  • A graph is planar if we can draw the graph
    without crossing.

K4
K4
67
Non-planar
  • Below shows two non-planar graphs

K3,3
K5
68
Theorem for planar graph
  • A graph G is non-planar
  • if and only if
  • G contains K5 or K3,3.

69
Question
  • 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?

70
Questions
  • 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.
Write a Comment
User Comments (0)
About PowerShow.com