cse 421 algorithms

17
CSE 421 Algorithms Richard Anderson Lecture 21 Shortest Path Network Flow Introduction

Upload: kelsie-wilkinson

Post on 31-Dec-2015

14 views

Category:

Documents


1 download

DESCRIPTION

CSE 421 Algorithms. Richard Anderson Lecture 21 Shortest Path Network Flow Introduction. Announcements. Friday, 11/18, Class will meet in CSE 305 Reading 7.1-7.3, 7.5-7.6 Section 7.4 will not be covered. Find the shortest paths from v with exactly k edges. 7. y. v. 5. 1. -2. -2. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CSE 421 Algorithms

CSE 421Algorithms

Richard AndersonLecture 21

Shortest PathNetwork Flow Introduction

Page 2: CSE 421 Algorithms

Announcements

• Friday, 11/18, Class will meet in CSE 305

• Reading 7.1-7.3, 7.5-7.6– Section 7.4 will not be covered

Page 3: CSE 421 Algorithms

Find the shortest paths from v with exactly k edges

v

x z

y

1

7

5 -2

1

-2 3

3

Page 4: CSE 421 Algorithms

Express as a recurrence

• Optk(w) = minx [Optk-1(x) + cxw]

• Opt0(w) = 0 if v=w and infinity otherwise

Page 5: CSE 421 Algorithms

Algorithm, Version 1

foreach w

M[0, w] = infinity;

M[0, v] = 0;

for i = 1 to n-1

foreach w

M[i, w] = minx(M[i-1,x] + cost[x,w]);

Page 6: CSE 421 Algorithms

Algorithm, Version 2

foreach w

M[0, w] = infinity;

M[0, v] = 0;

for i = 1 to n-1

foreach w

M[i, w] = min(M[i-1, w], minx(M[i-1,x] + cost[x,w]))

Page 7: CSE 421 Algorithms

Algorithm, Version 3

foreach w

M[w] = infinity;

M[v] = 0;

for i = 1 to n-1

foreach w

M[w] = min(M[w], minx(M[x] + cost[x,w]))

Page 8: CSE 421 Algorithms

Algorithm 2 vs Algorithm 3

i v x y z

i v x y z

v

x z

y

1

7

5 -2

1

-2 3

3

Page 9: CSE 421 Algorithms

Correctness Proof for Algorithm 3

• Key lemma – at the end of iteration i, for all w, M[w] <= M[i, w];

• Reconstructing the path:– Set P[w] = x, whenever M[w] is updated from vertex x

v

x z

1

7

5 -2

1

-2 3

3

y

Page 10: CSE 421 Algorithms

Negative Cost Cycle examplev

x z

1

7

3 -2

3

-2 3

-2

y i v x y z

Page 11: CSE 421 Algorithms

If the pointer graph has a cycle, then the graph has a negative cost cycle• If P[w] = x then M[w] >= M[x] + cost(x,w)

– Equal after update, then M[x] could be reduced

• Let v1, v2,…vk be a cycle in the pointer graph with (vk,v1) the last edge added– Just before the update

• M[vj] >= M[vj+1] + cost(vj+1, vj) for j < k• M[vk] > M[v1] + cost(v1, vk)

– Adding everything up• 0 > cost(v1,v2) + cost(v2,v3) + … + cost(vk, v1)

v2 v3

v1 v4

Page 12: CSE 421 Algorithms

Negative Cycles

• If the pointer graph has a cycle, then the graph has a negative cycle

• Therefore: if the graph has no negative cycles, then the pointer graph has no negative cycles

Page 13: CSE 421 Algorithms

Finding negative cost cycles

• What if you want to find negative cost cycles?

Page 14: CSE 421 Algorithms

Network Flow

Page 15: CSE 421 Algorithms

Network Flow Definitions

• Capacity

• Source, Sink

• Capacity Condition

• Conservation Condition

• Value of a flow

Page 16: CSE 421 Algorithms

Flow Example

u

s t

v

20

20

30

10

10

Page 17: CSE 421 Algorithms

Residual Graph

u

s t

v

15/20

20/20

15/30

0/10

5/10

u

s t

v

5

15

10

5 20

15

15

5