shortest paths

31
Shortest Paths 08-07-2006 PowerPoint adapted from Alan Tam’s Shortest Path, 2004 with slight modifications

Upload: sol

Post on 16-Jan-2016

59 views

Category:

Documents


0 download

DESCRIPTION

Shortest Paths. 08-07-2006 PowerPoint adapted from Alan Tam’s Shortest Path, 2004 with slight modifications. Breadth First Search (BFS). Techniques to Enumerate all Vertices for Goal BFS needs O(V) queue and O(V) set for duplicate elimination and runs in O(V + E) time - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Shortest Paths

Shortest Paths

08-07-2006

PowerPoint adapted from Alan Tam’s Shortest Path, 2004

with slight modifications

Page 2: Shortest Paths

08-07-2006 2

Breadth First Search (BFS)

Techniques to Enumerate all Vertices for Goal

BFS needs O(V) queue and O(V) set for duplicate elimination and runs in O(V + E) time

BFS can find Shortest Path if Graph is Not Weighted

BFS works because a Queue ensures a specific Order

Page 3: Shortest Paths

08-07-2006 3

What Order?

Define d[v] be the length of shortest path from s to v

At any time, vertices are classified into: Black With known d[v] Grey With some known path White Not yet touched

The Grey vertex with shortest known path has potential to become Black

The Head of Queue is always the case in an unweighted graph

Why?

Page 4: Shortest Paths

08-07-2006 4

Weighted Graph

Queue does not promise smallest d[v] anymore

Expanding weighted edge causeds unnecessary searching of artificial vertices

We can simply pick the real vertex nearest to the starting vertex

We need “Sorted Queue” which “dequeues” vertices in increasing order of d[v].

It is called a “Priority Queue” and negation of d[v] is called the Priority of vertex v

Page 5: Shortest Paths

08-07-2006 5

0 3

1

31

32

3

Page 6: Shortest Paths

08-07-2006 6

0

3

2

3

1

31

32

3

3

Page 7: Shortest Paths

08-07-2006 7

0

3

3

2

5

3

1

31

32

3

Done?

Page 8: Shortest Paths

08-07-2006 8

0

3

3

2

4

3

1

31

32

3

Done?

Page 9: Shortest Paths

08-07-2006 9

0

3

3

2

4

3

1

31

32

3

Page 10: Shortest Paths

08-07-2006 10

0

3

3

2

4

3

1

31

32

3

Done?

Page 11: Shortest Paths

08-07-2006 11

Dijkstra’s Algorithm

d ← ∞d[s] ← 0enqueue(queue, s)while not empty(queue) do

u = dequeue(queue)for-each v where (u, v) in E

if d[v] > d[u] + wuv thend[v] = d[u] + wuv

enqueue(queue, v)

Note that d[v] represents the known shortest distance of v from s during the process and may not be the real shortest distance until v is marked black.

Page 12: Shortest Paths

08-07-2006 12

Requirements for Priority Queue

Map<V, int> Store temporary values of d[v]

PriorityQueue<V, function: V→int > Extract vertices in increasing order of d[v]

Initially all d[v] are infinity When we visit a White vertex

Set d[v] Insert v into Queue

When we visit a Gray vertex Update d[v] What to do to the Priority Queue?

Page 13: Shortest Paths

08-07-2006 13

Implementing Priority Queue? Usage:

Insert: V Extract: V Decrease: E - V

Array Insert: O(1) Extract: O(n) Decrease: O(1)

Sorted Array Insert: O(n) Extract: O(1) Decrease: O(n)

Heap Insert: O(lg n) Extract: O(lg n) Decrease: O(lg n)

Fibonacci Heap Insert: O(1) Extract: Amortized O(lg

n) Decrease: O(1)

Page 14: Shortest Paths

08-07-2006 14

Time Complexity

Worst Case Big-Oh Memory Time

Array V

Array (Lazy)

Sorted Array

Heap

Heap (Lazy)

Fibonacci Heap V E + V lg V

Page 15: Shortest Paths

08-07-2006 15

Time Complexity

Worst Case Big-Oh Memory Time

Array V V2

Array (Lazy) E VE

Sorted Array V VE

Heap V E lg V

Heap (Lazy) E E lg V

Fibonacci Heap V E + V lg V

Page 16: Shortest Paths

08-07-2006 16

Another Attempt

Consider the following code segment:

For each edge (u, v)

If d[v] > d[u] + wuv

d[v] ← d[u] + wuv Assume one of the shortest paths is

(s, v1, v2, …, vk) If d[vi] = its shortest path from s After this loop, d[vi+1] = its shortest path from s By MI, After k such loops, found shortest path from s

to vk

Page 17: Shortest Paths

08-07-2006 17

Bellman-Ford Algorithm

All v1, v2, …,vk distinct?

Do V-1 times

for-each (u, v) in E

if d[v] > d[u] + wuv then

d[v] ← d[u] + wuv

Order = O(VE) Support Negative-weight Edges

Page 18: Shortest Paths

08-07-2006 18

Another Attempt

Number vertices as v1, v2, …, vV

Define no≤k-path as a path which does not pass through vertices v1, v2, …, vk

A path s-t must either be a no≤1-path, or concatenation of a no≤1-path s-v1 and a no≤1-path v1-

t A no≤1-path s-t must either be

a no≤2-path, or concatenation of a no≤2-path s-v2 and a no≤2-path v2-

t By MI …

Page 19: Shortest Paths

08-07-2006 19

Trivial Paths

S T

For all S

For all TDirect Path

from S to T

Page 20: Shortest Paths

08-07-2006 20

R S

For all R

For all SDirect Path

from R to SS T

For all S

For all TDirect Path

from S to T

For S = vV

Direct Path

from R to T

Page 21: Shortest Paths

08-07-2006 21

no≤(V-1)-Paths

S T

For all S

For all TShortest Path

from S to Tvia vV

Page 22: Shortest Paths

08-07-2006 22

R S

For all R

For all SShortest Path

from R to Svia vV

S T

For all S

For all TShortest Path

from S to Tvia vV

For S = vV-1

Shortest Path

from R to Tvia vV

Page 23: Shortest Paths

08-07-2006 23

no≤(V-2)-Paths

S T

For all S

For all TShortest Path

from S to Tvia vV-1,vV

Page 24: Shortest Paths

08-07-2006 24

no≤2-Paths

S T

For all S

For all TShortest Path

from S to Tvia v3,v4,...,vV

Page 25: Shortest Paths

08-07-2006 25

R S

For all R

For all SShortest Path

from R to Svia v3,v4,...,vV

S T

For all S

For all TShortest Path

from S to Tvia v3,v4,...,vV

For S = V2

Shortest Path

from R to Tvia v3,v4,...vV

Page 26: Shortest Paths

08-07-2006 26

no≤1-Paths

S T

For all S

For all TShortest Path

from S to Tvia v2,v3,...,vV

Page 27: Shortest Paths

08-07-2006 27

R S

For all R

For all SShortest Path

from R to Svia v2,v3,...,vV

S T

For all S

For all TShortest Path

from S to Tvia v2,v3,...,vV

For S = V1

Shortest Path

from R to Tvia v2,v3,...vV

Page 28: Shortest Paths

08-07-2006 28

Shortest Paths

S T

For all S

For all TShortest Path

from S to Tvia v1,v2,...,vV

Page 29: Shortest Paths

08-07-2006 29

Warshall-Floyd Algorithm

for-each (u, v) in Ed[u][v] ← wuv

for-each i in Vfor-each j in V

for-each k in Vif d[j][k] > d[j][i] + d[i][k]

d[j][k] ← d[j][i] + d[i][k]

Time Complexity: O(V3)

Page 30: Shortest Paths

08-07-2006 30

Graph Modeling

Conversion of a problem into a graph problem

Sometimes a problem can be easily solved once its underlying graph model is recognized

Graph modeling appears almost every year in NOI or IOI

(cx, 2004)

Page 31: Shortest Paths

08-07-2006 31

Basics of Graph Modeling

A few steps: identify the vertices and the edges identify the objective of the problem state the objective in graph terms implementation:

• construct the graph from the input instance• run the suitable graph algorithms on the graph• convert the output to the required format

(cx, 2004)