All Pair Shortest Path

1 / 61

# All Pair Shortest Path - PowerPoint PPT Presentation

All Pair Shortest Path. IOI/ACM ICPC Training June 2004. 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(V 3 ).

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'All Pair Shortest Path' - avent

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

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

### All Pair Shortest Path

IOI/ACM ICPC Training

June 2004

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

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

k

j

i

Example

2

4

2

4

1

1

1

3

3

5

1

3

5

1

i = 4, j = 5, k = 0

2

4

2

4

1

1

1

3

3

5

1

3

5

1

i = 4, j = 5, k = 1

2

4

2

4

1

1

1

3

3

5

1

3

5

1

i = 4, j = 5, k = 2

2

4

2

4

1

1

1

3

3

5

1

3

5

1

i = 4, j = 5, k = 3

2

4

2

4

1

1

1

1

3

5

1

3

5

1

Idea

k

j

i

The tables

i

k

i

j

j

k

k=4

k=5

The code

for i = 1 to |V|

for j = 1 to |V|

a[i][j][0] = 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])

### Topological sort

IOI/ACM ICPC Training

June 2004

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
Topological sort
• Arranging all nodes in the graph in a topological order
• Applications:
• Schedule tasks associated with a project
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;

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

s.pop();// blacktrack

} else {

select an unvisited child u of v;

s.push(u);

mark u as visited;

}

}

return aList;

### Bipartite Matching

IOI/ACM ICPC Training

June 2004

Definitions

Matching

Free Vertex

Definitions
• Maximum Matching: matching with the largest number of edges
Definition
• Note that maximum matching is not unique.
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!
Applications
• Matching has many applications. For examples,
• Comparing Evolutionary Trees
• Finding RNA structure
• This lecture lets you know how to find maximum matching.
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

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

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!)
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.
Idea of Algorithm
• While we still can find an augmenting path
• Find the augmenting path P
• Flip the edges in P
Labelling Algorithm
Labelling Algorithm
• Pick a free vertex in the bottom
Labelling Algorithm
• Alternate unmatched/matched edges
Labelling Algorithm
• Until a augmenting path is found
Repeat
• Pick another free vertex in the bottom
Repeat
• Run BFS
• Since we cannot find any augmenting path, stop!
Overall algorithm
• 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.
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|)
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|)
Weighted Matching

Score: 6+3+1=10

3

4

6

6

Maximum Weighted Matching

Score: 6+1+1+1+4=13

3

4

6

6

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!

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.
Overall Algorithm
• Repeat forever
• Find an augmenting path P with maximum score
• If the score > 0, then flip the edges
• Otherwise, stop and report the maximum weight matching.
Time analysis
• The same!
• Time required = O(|V|2 + |V| |E|)

### Stable Marriage Problem

IOI/ACM ICPC Training

June 2004

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.

A

B

C

D

E

1

2

3

4

5

2

1

2

1

5

E

D

A

C

D

5

2

3

3

3

A

E

D

B

B

1

3

5

2

2

D

B

B

D

C

3

4

4

4

1

B

A

C

A

E

4

5

1

5

4

C

C

E

E

A

Stable?
• A set of marriages is unstable if
• two people who are not married both 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
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?

A

B

C

D

E

1

2

3

4

5

2

1

2

1

5

E

D

A

C

D

5

2

3

3

3

A

E

D

B

B

1

3

5

2

2

D

B

B

D

C

3

4

4

4

1

B

A

C

A

E

4

5

1

5

4

C

C

E

E

A

Naïve solution (2)
• Does not work!
• E.g.
• A1 B3 C2 D4 E5
• A2B3 C1 D4 E5
• A3 B2 C1 D4 E5
• A3 B1 C2 D4 E5
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 α is not engaged
• Pair up (X, α). Then, set X=next man and goto 1.
• If α prefers X more than her fiancee Y,
• Pair up (X, α). Then, set X=Y and goto 1.
• Goto 1

A

B

C

D

E

1

2

3

4

5

2

1

2

1

5

E

D

A

C

D

5

2

3

3

3

A

E

D

B

B

1

3

5

2

2

D

B

B

D

C

3

4

4

4

1

B

A

C

A

E

4

5

1

5

4

C

C

E

E

A

Example

A

B

C

D

E

2

1

2

1

5

5

2

3

3

3

1

3

5

2

4

Time analysis
• If there are N men and N women,
• O(N2) time
Algorithm
• prefer[m][s]=w means the woman w is on the s-th position in the preference list of the man m
• Let next[m] be the current best woman in his remaining list. (Initially, next[m]=0)
• fiancee[w]=m means the man m engaged to woman w. (Initially, fiancee[w]=0)
• Let rank[w][m] is the ranking of the man m in the preference list of the woman w.
• For(m=1;m<=N;m++) { For(s=m;s!=0;

}