69
CS 4102: Algorithms Lecture 22: Network Flow David Wu Fall 2019

CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

CS 4102: AlgorithmsLecture 22: Network Flow

David WuFall 2019

Page 2: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Review: All-Pairs Shortest Path

2

Thus far: single-source shortest path algorithms (Dijkstra, Bellman-Ford)

All-pairs shortest-paths: find shortest path between every pair of nodes

10

2

11

95

8

3

7

3

1

8

12

9

Page 3: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Review: All-Pairs Shortest Path

Naïvely: Run single-source shortest paths algorithm for each node 𝑠 (to compute shortest path from 𝑠 to every other node in the graph)

• If edge weights are all non-negative, can use Dijkstra (running time 𝑂 𝑉 𝐸 log 𝑉

• If edge weights can be negative, can use Bellman-Ford (running time 𝑂 𝑉 ( 𝐸

When 𝐸 = Ω 𝑉 ( , both of these algorithms are 𝑂 𝑉 + log 𝑉 or 𝑂 𝑉 ,

3

Page 4: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Floyd-Warshall All-Pairs Shortest Paths

4

Finds all-pairs shortest paths in Θ( 𝑉 +) using dynamic programmingAlso works if graph has negative-weight edges

Same observation as before: Every subpath of a shortest path is itself a shortest path (optimal substructure)• Namely if shortest path from 𝑖 to 𝑗 goes through 𝑘, then the 𝑖 → 𝑘 and 𝑘 → 𝑗 subpaths must themselves be a shortest path

Two possibilities for node 𝑘:

Shortest path from 𝑖 to 𝑗 includes 𝑘

Shortest path from 𝑖 to 𝑗 excludes 𝑘OR

Short(𝑖, 𝑗, 𝑘 − 1)

Short(𝑖, 𝑘, 𝑘 − 1) + Short(𝑘, 𝑗, 𝑘 − 1)

𝑖𝑗

𝑘

𝑖

𝑗𝑘

Short 𝑖, 𝑗, 𝑘 = weight of shortest path from 𝑖 → 𝑗 using nodes 1,… , 𝑘 as intermediate hops

Page 5: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Floyd-Warshall All-Pairs Shortest Paths

5

Finds all-pairs shortest paths in Θ( 𝑉 +) using dynamic programmingAlso works if graph has negative-weight edges

Same observation as before: Every subpath of a shortest path is itself a shortest path (optimal substructure)• Namely if shortest path from 𝑖 to 𝑗 goes through 𝑘, then the 𝑖 → 𝑘 and 𝑘 → 𝑗 subpaths must themselves be a shortest path

Short(𝑖, 𝑗, 𝑘 − 1)Short(𝑖, 𝑘, 𝑘 − 1) + Short(𝑘, 𝑗, 𝑘 − 1)Short 𝑖, 𝑗, 𝑘 = min

Short 𝑖, 𝑗, 𝑘 = weight of shortest path from 𝑖 → 𝑗 using nodes 1,… , 𝑘 as intermediate hops

Page 6: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Floyd-Warshall All-Pairs Shortest Paths

6

allocate short[n][n][n] (initialized to ∞)for (i, j) in E:

short[i][j][0] = w[i][j]

for i = 1,...,n:

short[i][i][0] = 0

for k = 1,...,n:

for i = 1,...,n:

for j = 1,...,n:

short[i][j][k] = min(short[i][k][k-1] + short[k][j][k-1], short[i][j][k-1])

𝒌 = 𝟎: shortest path cannot use any intermediate nodes (must be direct path)

𝒌 = 𝟎: shortest path from node to itself is always 0

Short(𝑖, 𝑗, 𝑘 − 1)Short(𝑖, 𝑘, 𝑘 − 1) + Short(𝑘, 𝑗, 𝑘 − 1)Short 𝑖, 𝑗, 𝑘 = min

Page 7: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Floyd-Warshall All-Pairs Shortest Paths

7

allocate short[n][n] (initialized to ∞)for (i, j) in E:

short[i][j] = w[i][j]

for i = 1,...,n:

short[i][i] = 0

for k = 1,...,n:

for i = 1,...,n:

for j = 1,...,n:

short[i][j] = min(short[i][k] + short[k][j], short[i][j])

𝒌 = 𝟎: shortest path cannot use any intermediate nodes (must be direct path)

𝒌 = 𝟎: shortest path from node to itself is always 0

Observation: short[i][j][k] only depends on values for short[][][k – 1], so we can just use a single two-dimensional array

Short(𝑖, 𝑗, 𝑘 − 1)Short(𝑖, 𝑘, 𝑘 − 1) + Short(𝑘, 𝑗, 𝑘 − 1)Short 𝑖, 𝑗, 𝑘 = min

In this case, the initialization step is constructing the adjacency matrix of the graph

(this step is not needed if graph already represented in this form!)

Page 8: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Floyd-Warshall All-Pairs Shortest Paths

8

allocate short[n][n] (initialized to ∞)for (i, j) in E:

short[i][j] = w[i][j]

for i = 1,...,n:

short[i][i] = 0

for k = 1,...,n:

for i = 1,...,n:

for j = 1,...,n:

short[i][j] = min(short[i][k] + short[k][j], short[i][j])

𝒌 = 𝟎: shortest path cannot use any intermediate nodes (must be direct path)

𝒌 = 𝟎: shortest path from node to itself is always 0

Very simple implementation!

Running time: 𝑂 𝑛+ = 𝑂 𝑉 +

Short(𝑖, 𝑗, 𝑘 − 1)Short(𝑖, 𝑘, 𝑘 − 1) + Short(𝑘, 𝑗, 𝑘 − 1)Short 𝑖, 𝑗, 𝑘 = min

Page 9: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Today’s Keywords

GraphsNetwork flowFord-FulkersonEdmonds-KarpMax-Flow Min-Cut Theorem

9

CLRS Readings: Chapter 25, 26

Page 10: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Homework

HW7 due today, 11pm• Graph algorithms• Written (use LaTeX!) – Submit both zip and pdf (two separate attachments)!

HW10B due today, 11pm• No late submissions allowed (no exceptions)

HW8 out today, due Thursday, November 21, 11pm• Programming assignment (Python or Java)• Graph algorithms

10

Page 11: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Network Flow

11Railway map of Western USSR, 1955

Question: What is the maximum throughput of the

railroad network?

Page 12: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Flow Networks

Graph 𝐺 = (𝑉, 𝐸)Source node 𝑠 ∈ 𝑉Sink node 𝑡 ∈ 𝑉Edge capacities 𝑐 𝑒 ∈ ℝK

Max flow intuition: If 𝑠 is a faucet, 𝑡 is a drain, and 𝑠 connects to 𝑡 through a network of pipes 𝐸 with capacities 𝑐(𝑒), what is the maximum amount of water which can flow from the faucet to the drain?

12

3

3

3

2

𝑠𝑡

1

2

1 3 2

2

3

Page 13: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Assignment of values 𝑓 𝑒 to edges• “Amount of water going through that pipe”

Capacity constraint• 𝑓 𝑒 ≤ 𝑐(𝑒)• “Flow cannot exceed capacity”

Flow constraint• ∀𝑣 ∈ 𝑉 − {𝑠, 𝑡}, inRlow 𝑣 = outRlow(𝑣)• inRlow 𝑣 = ∑V∈W 𝑓(𝑥, 𝑣)• outRlow 𝑣 = ∑V∈W 𝑓(𝑣, 𝑥)• Water going in must match water coming out

Flow of 𝐺: |𝑓| = outRlow 𝑠 − inRlow(𝑠)• Net outflow of 𝑠

13

flow / capacity

3 in this example

Network Flow

1/3

1/3

2/3

2/2

𝑠𝑡

0/1

2/2

1/1

2/31/2

1/2

2/3

Page 14: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Maximum Flow Problem

Of all valid flows through the graph, find the one that maximizes:

𝑓 = outRlow 𝑠 − inRlow(𝑠)

14

3

3

3

2

𝑠𝑡

1

2

1

32

2

30/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/3

Page 15: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Greedy Approach

15

30

20

𝑠 𝑡

10 20

10

Greedy choice: saturate highest capacity path first

Page 16: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Greedy Approach

16

30

20

𝑠 𝑡

10 20

10

Greedy choice: saturate highest capacity path first

Page 17: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Greedy Approach

17

20/30

20/20

𝑠 𝑡

10 20/20

10

Greedy choice: saturate highest capacity path first

Flow: 20

Page 18: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Greedy Approach

18

10/30

20/20

𝑠 𝑡

10/10 20/20

10/10

Greedy choice: saturate highest capacity path first

Maximum Flow: 30

Observe: highest capacity path is not saturated in optimal solution

Page 19: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

19

1/3

1/3

2/3

2/2

𝑠𝑡

0/1

2/2

1/1

2/31/2

1/2

2/3

Flow 𝑓 in 𝐺

Given a flow 𝑓 in graph 𝐺, the residual graph 𝐺Z models additional flow that is possible• Forward edge for each edge in 𝐺 with weight set to remaining capacity 𝑐 𝑒 − 𝑓(𝑒)

• Models additional flow that can be sent along the edge

Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

Page 20: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

20

1/3

1/3

2/3

2/2

𝑠𝑡

0/1

2/2

1/1

2/31/2

1/2

2/3

Flow 𝑓 in 𝐺 Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Given a flow 𝑓 in graph 𝐺, the residual graph 𝐺Z models additional flow that is possible• Forward edge for each edge in 𝐺 with weight set to remaining capacity 𝑐 𝑒 − 𝑓(𝑒)

• Models additional flow that can be sent along the edge• Backward edge by flipping each edge 𝑒 in 𝐺 with weight set to flow 𝑓(𝑒)

• Models amount of flow that can be removed from the edge

Page 21: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

21

1/3

1/3

2/3

2/2

𝑠𝑡

0/1

2/2

1/1

2/31/2

1/2

2/3

Flow 𝑓 in 𝐺

Consider a path from 𝑠 → 𝑡 in 𝐺Z using only edges with positive (non-zero) weightConsider the minimum-weight edge 𝑒 along the path: we can increase the flow by 𝑤(𝑒)• Send 𝑤(𝑒) flow along all forward edges (these have at least 𝑤(𝑒) capacity)

Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Page 22: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

22

1/3

1/3

2/3

2/2

𝑠𝑡

0/1

2/2

1/1

2/31/2

1/2

2/3

Flow 𝑓 in 𝐺

Consider a path from 𝑠 → 𝑡 in 𝐺Z using only edges with positive (non-zero) weightConsider the minimum-weight edge 𝑒 along the path: we can increase the flow by 𝑤(𝑒)• Send 𝑤(𝑒)flow along all forward edges (these have at least 𝑤(𝑒) capacity)• Remove 𝑤(𝑒)flow along all backward edges (these contain at least 𝑤(𝑒) units of flow)

Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Page 23: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

23

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

2/31/2

1/2

3/3

Flow 𝑓 in 𝐺 Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Observe: Flow has increased by 𝑤(𝑒)

Consider a path from 𝑠 → 𝑡 in 𝐺Z using only edges with positive (non-zero) weightConsider the minimum-weight edge 𝑒 along the path: we can increase the flow by 𝑤(𝑒)• Send 𝑤(𝑒)flow along all forward edges (these have at least 𝑤(𝑒) capacity)• Remove 𝑤(𝑒)flow along all backward edges (these contain at least 𝑤(𝑒) units of flow)

Page 24: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

24

Consider a path from 𝑠 → 𝑡 in 𝐺Z using only edges with positive (non-zero) weightConsider the minimum-weight edge 𝑒 along the path: we can increase the flow by 𝑤(𝑒)• Send 𝑤(𝑒) flow along all forward edges (these have at least 𝑤(𝑒) capacity)• Remove 𝑤(𝑒) flow along all backward edges (these contain at least 𝑤(𝑒) units of flow)

Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Observe: Flow has increased by 𝑤(𝑒)

Why does this respect flow constraints?• Incoming edge to a node always

corresponds to increased flow to the node (more incoming flow from forward edge or less outgoing flow from backward edge)

• Outgoing edge to a node always corresponds to decreased flow to the node

Page 25: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Residual Graphs

25

Consider a path from 𝑠 → 𝑡 in 𝐺Z using only edges with positive (non-zero) weightConsider the minimum-weight edge 𝑒 along the path: we can increase the flow by 𝑤(𝑒)• Send 𝑤(𝑒) flow along all forward edges (these have at least 𝑤(𝑒) capacity)• Remove 𝑤(𝑒) flow along all backward edges (these contain at least 𝑤(𝑒) units of flow)

Residual graph 𝐺Z

𝑠𝑡

21

1

112

11

1

21

2

1

2

212

1

Observe: Flow has increased by 𝑤(𝑒)

Why does this respect flow constraints?• Incoming edge to a node always

corresponds to increased flow to the node (more incoming flow from forward edge or less outgoing flow from backward edge)

• Outgoing edge to a node always corresponds to decreased flow to the node

Capacity constraints satisfied by construction of the residual network

Page 26: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Algorithm

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

26

Ford-Fulkerson approach: take any augmenting path(will revisit this later)

Page 27: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

27

0/3

0/3

0/3

0/2

𝑠𝑡

0/1

0/2

0/1

0/30/2

0/2

0/3

Initially: 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸

3

3

3

𝑠𝑡

1

2

1

32

2

Residual graph 𝐺Z

3

2

Page 28: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

28

0/3

0/3

0/3

0/2

𝑠𝑡

0/1

0/2

0/1

0/30/2

0/2

0/33

3

𝑠𝑡

1

2

1

32

2

Residual graph 𝐺Z

Increase flow by 1 unit

33

2

Page 29: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

29

0/3

1/3

1/3

0/2

𝑠𝑡

0/1

1/2

1/1

0/30/2

1/2

0/33

3

𝑠𝑡

1

2

1

32

2

Residual graph 𝐺Z

Increase flow by 1 unit

33

2

Page 30: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

30

0/3

1/3

1/3

0/2

𝑠𝑡

0/1

1/2

1/1

0/30/2

1/2

0/32

2

𝑠𝑡

1

1

32

1

11

1

1

1

Residual graph 𝐺Z

33

2

Page 31: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

31

0/3

1/3

1/3

0/2

𝑠𝑡

0/1

1/2

1/1

0/30/2

1/2

0/32

2

𝑠𝑡

1

1

32

1

11

1

1

1

Residual graph 𝐺Z

Increase flow by 1 unit

33

2

Page 32: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

32

0/3

2/3

1/3

0/2

𝑠𝑡

0/1

2/2

1/1

0/30/2

1/2

1/32

2

𝑠𝑡

1

1

32

1

11

1

1

1

Residual graph 𝐺Z

Increase flow by 1 unit

33

2

Page 33: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

33

0/3

2/3

1/3

0/2

𝑠𝑡

0/1

2/2

1/1

0/30/2

1/2

1/31

2

𝑠𝑡

1

32

1

221

1

1

2 1

Residual graph 𝐺Z

Increase flow by 1 unit

3

2

Page 34: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

34

0/3

2/3

1/3

0/2

𝑠𝑡

0/1

2/2

1/1

0/30/2

1/2

1/3

Residual graph 𝐺Z

1

2

𝑠𝑡

1

32

1

221

1

1

2 13

2

Page 35: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

35

0/3

2/3

1/3

1/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

1/2

2/3

Residual graph 𝐺Z

1

2

𝑠𝑡

1

32

1

221

1

1

2 1

Increase flow by 1 unit

3

2

Page 36: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

36

0/3

2/3

1/3

1/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

1/2

2/3

Residual graph 𝐺Z

1

2

𝑠𝑡

1

32

1

121

1

1

2 2

Increase flow by 1 unit

3

11

Page 37: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

37

0/3

2/3

1/3

1/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

1/2

2/3

Residual graph 𝐺Z

1

2

𝑠𝑡

1

32

1

121

1

1

2 23

11

Page 38: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

38

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/3

Residual graph 𝐺Z

1

2

𝑠𝑡

1

32

1

121

1

1

2 2

Increase flow by 1 unit

3

11

Page 39: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Example

39

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/3

Residual graph 𝐺Z

No more augmenting paths

1

1

𝑠𝑡

1

3212

1

2

2

2 23

2

Maximum flow: 4

Page 40: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Running Time

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

40

Initialization: 𝑂 𝐸

Page 41: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Running Time

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

41

Initialization: 𝑂 𝐸Construct residual network: 𝑂 𝐸

Page 42: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Running Time

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

42

Initialization: 𝑂 𝐸Construct residual network: 𝑂 𝐸Finding augmenting path in residual network: 𝑂 𝐸 using BFS/DFS

We only care about nodes reachable from the source 𝑠 (so the number of nodes

that are “relevant” is at most 𝐸 )

Page 43: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Running Time

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

43

Initialization: 𝑂 𝐸Construct residual network: 𝑂 𝐸Finding augmenting path in residual network: 𝑂 𝐸 using BFS/DFS

How many iterations are needed?• For integer-valued capacities, min-weight of each augmenting path is 1, so

number of iterations is bounded by 𝑓∗ , where 𝑓∗ is max-flow in 𝐺• For rational-valued capacities, can scale to make capacities integer• For irrational-valued capacities, algorithm may never terminate!

• Extra credit: Construct a graph where this happens

Page 44: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Ford-Fulkerson Running Time

Define an augmenting path to be an 𝑠 → 𝑡 path in the residual graph 𝐺Z (using edges of non-zero weight)

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path 𝑝 in 𝐺Z:

• Let 𝑐 = min]∈^

𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

44

Initialization: 𝑂 𝐸Construct residual network: 𝑂 𝐸Finding augmenting path in residual network: 𝑂 𝐸 using BFS/DFS

For graphs with integer capacities, running time of Ford-Fulkerson is

𝑂 𝑓∗ ⋅ 𝐸Highly undesirable if 𝑓∗ ≫ |𝐸| (e.g., graph is small, but capacities are ≈ 2+()

As described, algorithm is not polynomial-time!

Page 45: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

45

0/1

0/100

𝑠 𝑡

0/100 0/100

0/100

1

100

𝑠 𝑡

100 100

100

Page 46: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

46

0/1

0/100

𝑠 𝑡

0/100 0/100

0/100

1

100

𝑠 𝑡

100 100

100

Increase flow by 1 unit

Page 47: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

47

1/1

1/100

𝑠 𝑡

0/100 1/100

0/100

1

100

𝑠 𝑡

100 100

100

Increase flow by 1 unit

Page 48: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

48

1/1

1/100

𝑠 𝑡

0/100 1/100

0/100

1

99

𝑠 𝑡

100 99

100

11

Page 49: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

49

1/1

1/100

𝑠 𝑡

0/100 1/100

0/100

1

99

𝑠 𝑡

100 99

100

11

Increase flow by 1 unit

Page 50: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

50

0/1

1/100

𝑠 𝑡

1/100 1/100

1/100

1

99

𝑠 𝑡

100 99

100

11

Increase flow by 1 unit

Page 51: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

51

0/1

1/100

𝑠 𝑡

1/100 1/100

1/100

1

99

𝑠 𝑡

99 99

99

11

1

1

Page 52: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Worst-Case Ford-Fulkerson

52

0/1

1/100

𝑠 𝑡

1/100 1/100

1/100

1

99

𝑠 𝑡

99 99

99

11

1

1

Observation: each iteration increases flow by 1 unitTotal number of iterations: 𝑓∗ = 200

Page 53: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Can We Avoid this?

Edmonds-Karp Algorithm: choose augmenting path with fewest hopsRunning time: Θ min 𝐸 𝑓∗ , 𝑉 𝐸 ( = 𝑂 𝑉 𝐸 (

53

Ford-Fulkerson max-flow algorithm:• Initialize 𝑓 𝑒 = 0 for all 𝑒 ∈ 𝐸• Construct the residual network 𝐺Z• While there is an augmenting path in 𝐺Z, let 𝑝 be the path with fewest hops:• Let 𝑐 = min

]∈^𝑐Z(𝑒) (𝑐Z(𝑒) is the weight of edge 𝑒 in the residual network 𝐺Z)

• Add 𝑐 units of flow to 𝐺 based on the augmenting path 𝑝• Update the residual network 𝐺Z for the updated flow

How to find this? Use breadth-first search (BFS)!

Edmonds-Karp = Ford-Fulkerson using BFS to find augmenting path

Proof: See CLRS (Chapter 26.2)

Page 54: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Correctness of Ford-Fulkerson

Consider cuts which separate 𝑠 and 𝑡• Let 𝑠 ∈ 𝑆, 𝑡 ∈ 𝑇, such that 𝑉 = 𝑆 ∪ 𝑇

Cost 𝑆, 𝑇 of cut 𝑆, 𝑇 : sum of the capacities of edges from 𝑆 to 𝑇

54

3

3

3

2

𝑠𝑡

1

2

1

32

2

3

𝑆 𝑇𝑆, 𝑇 = 5

Page 55: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow / Min-CutClaim: Maximum flow in a flow network 𝐺 always upper-bounded by the cost any cut that separates 𝑠 and 𝑡Proof: “Conservation of flow”

• All flow from 𝑠 must eventually get to 𝑡• To get from 𝑠 to 𝑡, all flow must cross the cut somewhere

Conclusion: Max-flow in 𝐺 is at most the cost of the min-cut in 𝐺• max

Z𝑓 ≤ min

j,k𝑆, 𝑇

55

3

3

3

2

𝑠𝑡

1

2

1

32

2

3

𝑆 𝑇

Page 56: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem

Let 𝑓 be a flow in a graph 𝐺

56

𝑓 is a maximum flow in 𝐺

there are no augmenting paths in the

residual graph 𝐺Z

there exists a cut (𝑆, 𝑇) of 𝐺 where

𝑓 = ‖𝑆, 𝑇‖

Statements are equivalent!

Implications:• Correctness of Ford-Fulkerson: Ford-Fulkerson terminates when there are no more

augmenting paths in the residual graph 𝐺Z, which means that 𝑓 is a maximum flow• Max-flow min-cut duality: the maximum flow in a network coincides with the minimum cut

of the graph (maxZ

𝑓 = minj,k

𝑆, 𝑇 )

• Finding either the minimum cut or the maximum flow yields solution to the other• Special case of more general principle (duality in linear programming)

Page 57: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Duality Example

57

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠𝑡

1

3212

1

2

2

2 23

2

Flow graph Residual graph

no more augmenting paths

Max flow: 4

𝑆

𝑇

Page 58: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Duality Example

58

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠𝑡

1

3212

1

2

2

2 23

2

Flow graph Residual graph

no more augmenting paths𝑆

𝑇

Max flow: 4Min cut: 4

When there are no more augmenting paths in the graph, there is a cut whose cost matches the flow

Page 59: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

Let 𝑓 be a flow in a graph 𝐺

59

𝑓 is a maximum flow in 𝐺

there are no augmenting paths in the

residual graph 𝐺Z

there exists a cut (𝑆, 𝑇) of 𝐺 where

𝑓 = ‖𝑆, 𝑇‖

Proof:• Suppose 𝑓 is a max flow in 𝐺 and there is an augmenting path in 𝐺Z• If there is an augmenting path in 𝐺Z, then we can send additional units of flow though

the network along the augmenting path• This contradicts optimality of 𝑓

Page 60: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

Let 𝑓 be a flow in a graph 𝐺

60

𝑓 is a maximum flow in 𝐺

there are no augmenting paths in the

residual graph 𝐺Z

there exists a cut (𝑆, 𝑇) of 𝐺 where

𝑓 = ‖𝑆, 𝑇‖

Proof:• Take any flow 𝑓m• Consider the cut 𝑆, 𝑇 of 𝐺; then, 𝑓m ≤ 𝑆, 𝑇 = 𝑓• Thus, 𝑓m ≤ 𝑓 , so 𝑓 must be a maximum flow

Page 61: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

Let 𝑓 be a flow in a graph 𝐺

61

𝑓 is a maximum flow in 𝐺

there are no augmenting paths in the

residual graph 𝐺Z

there exists a cut (𝑆, 𝑇) of 𝐺 where

𝑓 = ‖𝑆, 𝑇‖

Page 62: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

62

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠𝑡

1

3212

1

2

2

2 23

2

no more augmenting paths𝑆

𝑇Flow graph Residual graph

No augmenting paths means there is no path from 𝑠 to 𝑡 in 𝐺Z• Let 𝑆 be set of nodes reachable from 𝑠 in 𝐺Z• Let 𝑇 = 𝑉 − 𝑆

Page 63: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

63

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠𝑡

1

3212

1

2

2

2 23

2

no more augmenting paths𝑆

𝑇Claim: 𝑆, 𝑇 = 𝑓• Total flow 𝑓 is amount of outgoing flow from 𝑆 to 𝑇 minus the amount of incoming flow from 𝑇 to 𝑆

Page 64: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

64

0/3

2/3

2/3

2/2

𝑠

𝑢𝑣

𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠

𝑢𝑣

𝑡

1

3212

1

2

2

2 23

2

no more augmenting paths𝑆

𝑇Claim: 𝑆, 𝑇 = 𝑓• Total flow 𝑓 is amount of outgoing flow from 𝑆 to 𝑇 minus the amount of incoming flow from 𝑇 to 𝑆• Outgoing flow: Consider edge 𝑢, 𝑣 where 𝑢 ∈ 𝑆 and 𝑣 ∈ 𝑇

• Then, 𝑓 𝑢, 𝑣 = 𝑐 𝑢, 𝑣 . Otherwise, there is a forward edge 𝑢, 𝑣 with positive weight in 𝐺Z and 𝑣 ∈ 𝑆

Page 65: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

65

0/3

2/3

2/3

2/2

𝑠

𝑥

𝑦

𝑡

0/1

2/2

0/1

0/30/2

2/2

2/31

1

𝑠

𝑥

𝑦

𝑡

1

3212

1

2

2

2 23

2

no more augmenting paths𝑆

𝑇Claim: 𝑆, 𝑇 = 𝑓• Total flow 𝑓 is amount of outgoing flow from 𝑆 to 𝑇 minus the amount of incoming flow from 𝑇 to 𝑆• Outgoing flow: Consider edge 𝑢, 𝑣 where 𝑢 ∈ 𝑆 and 𝑣 ∈ 𝑇

• Then, 𝑓 𝑢, 𝑣 = 𝑐 𝑢, 𝑣 . Otherwise, there is a forward edge 𝑢, 𝑣 with positive weight in 𝐺Z and 𝑣 ∈ 𝑆• Incoming flow: Consider edge 𝑦, 𝑥 where 𝑦 ∈ 𝑇 and 𝑥 ∈ 𝑆

• Then, 𝑓 𝑦, 𝑥 = 0. Otherwise, there is a backward edge 𝑥, 𝑦 with positive weight in 𝐺Z and 𝑦 ∈ 𝑆

Page 66: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem Proof

66

0/3

2/3

2/3

2/2

𝑠𝑡

0/1

2/2

0/1

0/30/2

2/2

2/3𝑆

𝑇Claim: 𝑆, 𝑇 = 𝑓• Total flow 𝑓 is amount of outgoing flow from 𝑆 to 𝑇 minus the amount of incoming flow from 𝑇 to 𝑆• Outgoing flow: Consider edge 𝑢, 𝑣 where 𝑢 ∈ 𝑆 and 𝑣 ∈ 𝑇

• Then, 𝑓 𝑢, 𝑣 = 𝑐 𝑢, 𝑣 . Otherwise, there is a forward edge 𝑢, 𝑣 with positive weight in 𝐺Z and 𝑣 ∈ 𝑆• Incoming flow: Consider edge 𝑦, 𝑥 where 𝑦 ∈ 𝑇 and 𝑥 ∈ 𝑆

• Then, 𝑓 𝑦, 𝑥 = 0. Otherwise, there is a backward edge 𝑥, 𝑦 with positive weight in 𝐺Z and 𝑦 ∈ 𝑆

𝑓 = pq∈j,r∈k

𝑓 𝑢, 𝑣 − ps∈k,V∈j

𝑓 𝑦, 𝑥

= 𝑆, 𝑇

= pq∈j,r∈k

𝑐 𝑢, 𝑣

Page 67: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Max-Flow Min-Cut Theorem

Let 𝑓 be a flow in a graph 𝐺

67

𝑓 is a maximum flow in 𝐺

there are no augmenting paths in the

residual graph 𝐺Z

there exists a cut (𝑆, 𝑇) of 𝐺 where

𝑓 = ‖𝑆, 𝑇‖

Statements are equivalent!

Implications:• Correctness of Ford-Fulkerson: Ford-Fulkerson terminates when there are no more

augmenting paths in the residual graph 𝐺Z, which means that 𝑓 is a maximum flow• Max-flow min-cut duality: the maximum flow in a network coincides with the minimum cut

of the graph (maxZ

𝑓 = minj,k

𝑆, 𝑇 )

Page 68: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Other Max Flow Algorithms

Ford-Fulkerson• Θ 𝐸 𝑓∗

Edmonds-Karp (Ford-Fulkerson using BFS to choose augmenting path)• Θ( 𝐸 ( 𝑉 )

Push-Relabel (Tarjan)• Θ( 𝐸 𝑉 ()

Faster Push-Relabel (also Tarjan)• Θ( 𝑉 +)

68

Page 69: CS 4102: Algorithmsjh2jf/courses/fall2019/cs...Review: All-Pairs Shortest Path 2 Thus far:single-sourceshortest path algorithms (Dijkstra, Bellman-Ford) All-pairs shortest-paths: find

Minimum-Cost Maximum-Flow Problem

Not all paths are created equal!

69

3

3

3

2

𝑠𝑡

1

2

1

32

2

3

2 5

211

3 4

7

1 2

1

A cost is associated with each unit of flow sent along an edgeGoal: Maximize flow while minimizing cost

Much harder problem!Can solve using linear programming