 Download Download Presentation All Pair Shortest Path

# All Pair Shortest Path

Télécharger la présentation ## All Pair Shortest Path

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
##### Presentation Transcript

1. All Pair Shortest Path IOI/ACM ICPC Training June 2004

2. All Pair Shortest Path • Note: Dijkstra’s Algorithm takes O((V+E)logV) time • All Pair Shortest Path Problem can be solved by executing Dijkstra’s Algorithm |V| times • Running Time: O(V(V+E)log V) • Floyd-Warshall Algorithm: O(V3)

3. Idea • Label the vertices with integers 1..n • Restrict the shortest paths from i to j to consist of vertices 1..k only (except i and j) • Iteratively relax k from 1 to n. k j i

4. Definition • Find shortest distance from i to j using vertices 1 .. k only k j i

5. Example 2 4 2 4 1 1 1 3 3 5 1 3 5 1

6. i = 4, j = 5, k = 0 2 4 2 4 1 1 1 3 3 5 1 3 5 1

7. i = 4, j = 5, k = 1 2 4 2 4 1 1 1 3 3 5 1 3 5 1

8. i = 4, j = 5, k = 2 2 4 2 4 1 1 1 3 3 5 1 3 5 1

9. i = 4, j = 5, k = 3 2 4 2 4 1 1 1 1 3 5 1 3 5 1

10. Idea k j i

11. The tables i k i j j k k=4 k=5

12. The code for i = 1 to |V| for j = 1 to |V| a[i][j] = cost(i,j) for k = 1 to |V| for i = 1 to |V| for j = 1 to |V| a[i][j][k] = min( a[i][j][k-1], a[i][k][k-1] + a[k][j][k-1])

13. Topological sort IOI/ACM ICPC Training June 2004

14. b d a c e 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

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

16. Topological sort algorithm Algorithm topSort1 n = |V|; Let R[0..n-1] be the result array; for i = 1 to n { select a node v that has no successor; R[n-i] = v; delete node v and its edges from the graph; } return R;

17. b a c e • d has no successor! Choose d! • Both b and e have no successor! Choose e! b b d b a a a a c c e • Both b and c have no successor! Choose c! • Only b has no successor! Choose b! • Choose a! • The topological order is a,b,c,e,d Example

18. Time analysis • Finding a node with no successor takes O(|V|+|E|) time. • We need to repeat this process |V| times. • Total time = O(|V|2 + |V| |E|). • We can implement the above process using DFS. The time can be improved to O(|V| + |E|).

19. 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; } } return aList;

20. Bipartite Matching IOI/ACM ICPC Training June 2004

21. Unweighted Bipartite Matching

22. Definitions Matching Free Vertex

23. Definitions • Maximum Matching: matching with the largest number of edges

24. Definition • Note that maximum matching is not unique.

25. 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!

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

27. Alternating Path • Alternating between matching and non-matching edges. a c d e b f h i j g 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

28. Idea • “Flip” augmenting path to get better matching • Note: After flipping, the number of matched edges will increase by 1! 

29. 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!)

30. Proof for the other direction • () Suppose M is not maximum. Let M’ be a maximum matching such that |M’|>|M|. • 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’ > 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.

31. 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

33. Labelling Algorithm • Pick a free vertex in the bottom

34. Labelling Algorithm • Run BFS

35. Labelling Algorithm • Alternate unmatched/matched edges

36. Labelling Algorithm • Until a augmenting path is found

37. Augmenting Tree

38. Flip!

39. Repeat • Pick another free vertex in the bottom

40. Repeat • Run BFS

41. Repeat • Flip

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

43. 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.

44. 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(|V|2 + |V| |E|)

45. 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(|V|0.5 |E|)

46. Weighted Bipartite Graph 3 4 6 6

47. Weighted Matching Score: 6+3+1=10 3 4 6 6

48. Maximum Weighted Matching Score: 6+1+1+1+4=13 3 4 6 6

49. Augmenting Path (change of definition) • Any alternating path such that total score of unmatched edges > 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!

50. 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 |M|+1.