Graph Algorithms Shortest path problems. Graph Algorithms Shortest path problems.

Post on 11-Jan-2016

294 views 0 download

Transcript of Graph Algorithms Shortest path problems. Graph Algorithms Shortest path problems.

Graph Algorithms

Shortest path problems

Graph Algorithms

Shortest path problems

Graph Algorithms

Shortest path problems

Graph Algorithms

Single-Source Shortest Paths

Given graph (directed or undirected) G = (V,E) withweight function w: E R and a vertex sV, find for all vertices vV the minimum possible weight for path from s to v.

We will discuss two general case algorithms:

• Dijkstra's (positive edge weights only)• Bellman-Ford (positive end negative edge weights)

If all edge weights are equal (let's say 1), the problem is solved by BFS in (V+E) time.

Graph Algorithms

Dijkstra’s Algorithm - RelaxRelax(vertex u, vertex v, weight w)

if d[v] > d[u] + w(u,v) thend[v] d[u] + w(u,v)p[v] u

Graph Algorithms

Dijkstra’s Algorithm - Idea

Graph Algorithms

Dijkstra’s Algorithm - SSSP-DijkstraSSSP-Dijkstra(graph (G,w), vertex s)

InitializeSingleSource(G, s)S Q V[G]while Q 0 do

u ExtractMin(Q)S S {u}for v Adj[u] do

Relax(u,v,w)

InitializeSingleSource(graph G, vertex s)for v V[G] do

d[v] p[v] 0

d[s] 0

Graph Algorithms

Dijkstra’s Algorithm - Example

10

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

10

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

10

10

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

10

10

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

1410

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

1410

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

1310

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

1310

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

910

1

5

2

649

7

2 3

Graph Algorithms

Dijkstra’s Algorithm - Example

0

5

8

7

910

1

5

2

649

7

2 3

Graph AlgorithmsDijkstra’s Algorithm - Complexity

SSSP-Dijkstra(graph (G,w), vertex s)InitializeSingleSource(G, s)S Q V[G]while Q 0 do

u ExtractMin(Q)S S {u}for u Adj[u] do

Relax(u,v,w)

InitializeSingleSource(graph G, vertex s)for v V[G] do

d[v] p[v] 0

d[s] 0

Relax(vertex u, vertex v, weight w)if d[v] > d[u] + w(u,v) then

d[v] d[u] + w(u,v)p[v] u

(V)

(1) ?

(E) times in total

executed (V) times

Graph Algorithms

Dijkstra’s Algorithm - Complexity

InitializeSingleSource TI(V,E) = (V)

Relax TR(V,E) = (1)?

SSSP-Dijkstra

T(V,E) = TI(V,E) + (V) + V (log V) + E TR(V,E) =

= (V) + (V) + V (log V) + E (1) = (E + V log V)

Graph Algorithms

Dijkstra’s Algorithm - Complexity

Graph Algorithms

Dijkstra’s Algorithm - Correctness

Graph Algorithms

Dijkstra’s Algorithm - negative weights?

Graph AlgorithmsBellman-Ford Algorithm - negative cycles?

Graph Algorithms

Bellman-Ford Algorithm - Idea

Graph AlgorithmsBellman-Ford Algorithm - SSSP-BellmanFord

SSSP-BellmanFord(graph (G,w), vertex s)InitializeSingleSource(G, s)for i 1 to |V[G] 1| do

for (u,v) E[G] doRelax(u,v,w)

for (u,v) E[G] doif d[v] > d[u] + w(u,v) then

return falsereturn true

Graph Algorithms

Bellman-Ford Algorithm - Example

6

7

7-3

2

8-4

9

5-2

Graph Algorithms

Bellman-Ford Algorithm - Example

0

6

7

7-3

2

8-4

9

5-2

Graph Algorithms

Bellman-Ford Algorithm - Example

0

7

6

6

7

7-3

2

8-4

9

5-2

Graph Algorithms

Bellman-Ford Algorithm - Example

0

7

6

2

46

7

7-3

2

8-4

9

5-2

Graph Algorithms

Bellman-Ford Algorithm - Example

0

7

2

2

46

5

7

7-3

2

8

-2

-4

9

Graph Algorithms

Bellman-Ford Algorithm - Example

0

7

2

-2

46

5

7

7-3

2

8

-2

-4

9

Graph Algorithms

Bellman-Ford Algorithm - Complexity

SSSP-BellmanFord(graph (G,w), vertex s)InitializeSingleSource(G, s)for i 1 to |V[G] 1| do

for (u,v) E[G] doRelax(u,v,w)

for (u,v) E[G] doif d[v] > d[u] + w(u,v) then

return falsereturn true

executed (V) times

(E)

(E)

(1)

Graph Algorithms

Bellman-Ford Algorithm - Complexity

InitializeSingleSource TI(V,E) = (V)

Relax TR(V,E) = (1)?

SSSP-BellmanFord

T(V,E) = TI(V,E) + V E TR(V,E) + E == (V) + V E (1) + E = = (V E)

Graph Algorithms

Bellman-Ford Algorithm - Correctness

Graph Algorithms

Bellman-Ford Algorithm - Correctness

Graph Algorithms

Bellman-Ford Algorithm - Correctness

Graph Algorithms

Bellman-Ford Algorithm - Correctness

Graph Algorithms

Shortest Paths in DAGs - SSSP-DAG

SSSP-DAG(graph (G,w), vertex s)

topologically sort vertices of G

InitializeSingleSource(G, s)

for each vertex u taken in topologically sorted order do for each vertex v Adj[u] do

Relax(u,v,w)

Graph Algorithms

Shortest Paths in DAGs - Example

5 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

0 5 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

0 5 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

0 5 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 6 4 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 6 4 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 5 4 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 5 4 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 5 3 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Example

6 5 3 0 25 2 7 -1 -2

6 1

3 42

Graph Algorithms

Shortest Paths in DAGs - Complexity

T(V,E) = (V + E) + (V) + (V) + E (1) = (V + E)

SSSP-DAG(graph (G,w), vertex s)

topologically sort vertices of G

InitializeSingleSource(G, s)

for each vertex u taken in topologically sorted order do for each vertex v Adj[u] do

Relax(u,v,w)

Graph AlgorithmsApplication of SSSP - currency conversion

Graph AlgorithmsApplication of SSSP - currency conversion

Graph AlgorithmsApplication of SSSP - currency conversion

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph AlgorithmsApplication of SSSP - constraint satisfaction

Graph Algorithms

All-Pairs Shortest PathsGiven graph (directed or undirected) G = (V,E) withweight function w: E R find for all pairs of vertices u,v V the minimum possible weight for path from u to v.

Graph Algorithms

Floyd-Warshall Algorithm - Idea

Graph Algorithms

Floyd-Warshall Algorithm - Idea

Graph Algorithms

Floyd-Warshall Algorithm - Idea

ds,t(i) – the shortest path from s to t containing only vertices

v1, ..., vi

ds,t(0) = w(s,t)

ds,t(k) =

w(s,t) if k = 0

min{ds,t(k-1), ds,k

(k-1) + dk,t(k-1)} if k > 0

Graph Algorithms

Floyd-Warshall Algorithm - Algorithm

FloydWarshall(matrix W, integer n)for k 1 to n do

for i 1 to n do for j 1 to n do

dij(k) min(dij

(k-1), dik(k-1) + dkj

(k-1))return D(n)

Graph Algorithms

Floyd-Warshall Algorithm - Example

2

45

1 3

3 4

-4 -5

6

7 1

82

0 3 8 -4

0 1 7

4 0 2 -5 0 6 0

W

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 8 -4

0 1 7

4 0 2 -5 0 6 0

0 0 0 0

0 0 0

0 0

0 0 0

0 0

D(0) (0)

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 8 -4

0 1 7

4 0 2 5 -5 0 -2

6 0

0 0 0 0

0 0 0

0 0

0 1 0 0 1

0 0

D(1) (1)

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 8 4 -4

0 1 7

4 0 5 11

2 5 -5 0 -2

6 0

0 0 0 2 0

0 0 0

0 0 2 2

0 1 0 0 1

0 0

D(2) (2)

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 8 4 -4

0 1 7

4 0 5 11

2 -1 -5 0 -2

6 0

0 0 0 2 0

0 0 0

0 0 2 2

0 3 0 0 1

0 0

D(3) (3)

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 -1 4 -4

3 0 -4 1 -1

7 4 0 5 3

2 -1 -5 0 -2

8 5 1 6 0

0 0 4 2 0

4 0 4 0 1

4 0 0 2 1

0 3 0 0 1

4 3 4 0 0

D(4) (4)

Graph Algorithms

Floyd-Warshall Algorithm - Example

0 3 -1 2 -4

3 0 -4 1 -1

7 4 0 5 3

2 -1 -5 0 -2

8 5 1 6 0

0 0 4 5 0

4 0 4 0 1

4 0 0 2 1

0 3 0 0 1

4 3 4 0 0

D(5) (5)

Graph AlgorithmsFloyd-Warshall Algorithm - Extracting the shortest paths

Graph Algorithms

Floyd-Warshall Algorithm - Complexity

T(V,E) = (n3) = (V3)

FloydWarshall(matrix W, integer n)for k 1 to n do

for i 1 to n do for j 1 to n do

dij(k) min(dij

(k-1), dik(k-1) + dkj

(k-1))return D(n)

3 for cycles, each executed exactly n times

Graph AlgorithmsAll-Pairs Shortest Paths -Johnson's algorithm

Graph Algorithms

All-Pairs Shortest Paths - Reweighting

Graph Algorithms

All-Pairs Shortest Paths - Reweighting

Graph Algorithms

All-Pairs Shortest Paths - Reweighting