Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Master’s Programme in Computer Science
Juha Kärkkäinen
Based on slides by Veli Mäkinen
DESIGN AND ANALYSIS OF ALGORITHMS (DAA 2018)
17/09/2018 1 Design and Analysis of Algorithms 2018 week 3
Shortest paths and network flows
Week 3
Shortest paths
Some dynamic programming you might already have seen
Master’s Programme in Computer Science
RECURRENCES WITH REPEATING SUBSTRUCTURES
• Example: Fibonacci numbers
• Defined by recurrence: F(i) = F(i-2) + F(i-1) and F(0)=F(1)=1
• Recursive computation is slow (O(F(n)) time): F(i) = F(i-2)+F(i-1) = F(i-4)+F(i-3)+F(i-3)+F(i-2) = … because same values computed repeatedly.
• Memoization (storing computed values) is faster (O(n) time). Proper evaluation order helps F(0)=F(1)=1, F(2)=F(0)+F(1), F(3)=F(1)+F(2), …
• In general, a proper evaluation order is a topological order in a directed acyclic graph (DAG) denoting the recurrence dependencies:
17/09/2018 Design and Analysis of Algorithms 2018 week 3 4
1 1 2 3 5 …
Master’s Programme in Computer Science
SHORTEST S-T PATH IN A DAG Find shortest path from s to t in DAG G=(V,E)
• Base case: d(s) = 0
• Recurrence: d(v) = min{d(u)+c(u,v) : u is an in-neighbor of v}
• Output: d(t)
• Topological sort, compute each d(v) in |N-(v)| time, total O(|V|+|E|) time, where V and E are the set of vertices and edges of the DAG, respectively.
• Traceback to output an optimal path
17/09/2018 Design and Analysis of Algorithms 2018 week 3 5
s t
v u
…
N-(v)
… …
Master’s Programme in Computer Science
SHORTEST PATH IN A DAG (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 6
Topological sort
5
10
12
5
10
21
10
5 4 5
12
3
11
1. Topological sort
Master’s Programme in Computer Science
SHORTEST PATH IN A DAG (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 7
Topological sort
5
10
12
5
10
21
10
5 4 5
12
3
11
0 10 15 19 24 26
1. Topological sort
2. Compute distances
(from left to right)
Master’s Programme in Computer Science
SHORTEST PATH IN A DAG (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 8
Topological sort
5
10
12
5
10
21
10
5 4 5
12
3
11
0 10 15 19 24 26
1. Topological sort
2. Compute distances
3. Traceback
(from right to left)
Master’s Programme in Computer Science
SHORTEST PATH IN A DAG (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 10
Topological sort
5
10
12
5
10
21
10
5 4 5
12
3
11
26
Master’s Programme in Computer Science
SHORTEST S-T PATH IN A GENERAL GRAPH
• General directed graph
• May have cycles
• May have negative edge weights
• But no negative cycles (why?)
• Cannot use Dijkstra’s algorithms because of negative weights
• The standard algorithm is Bellman-Ford (Section 24.1 in book)
• Recurrence: d(v) = min{d(u,v) + c(u,v) : u in N-(v)}
• No trivial topological order because of cycles
18/09/2018 Design and Analysis of Algorithms 2018 week 3 11
Master’s Programme in Computer Science
DERIVING BELLMAN-FORD 1
• Make n=|V| copies of the graph and redirect all edges from copy (i-1) to copy i for i in [1..n-1], like in example below:
• In the resulting DAG find shortest path from any s to t
17/09/2018 Design and Analysis of Algorithms 2018 week 3 12
s t
0 1 2
s t
3
s s
Master’s Programme in Computer Science
DERIVING BELLMAN-FORD 2
Recurrence for Bellman-Ford
• Base case: d(s,k)=0, for all k, d(v,0)=∞ when v≠s
• Recurrence: d(v,k) = min{d(u,k-1) + c(u,v) : u in N-(v)}
• k = the number of the graph copy
• k = maximum number of edges allowed on the path from s to v
• Output: d(t) = d(t,|V|-1)
• Topological order by copy number
• Order within copy does not matter
• O(|V||E|) time
17/09/2018 Design and Analysis of Algorithms 2018 week 3 13
Network flows
An application of shortest path algorithms and a
fundamental problem to reduce other problems to
Master’s Programme in Computer Science
FLOWS
• Recall Kirchhoff’s laws from high-school physics
• Flow f in a directed graph (flow network):
• unique source s and unique target t
• flow f(e) defined on each edge e=(u,v), s.t. flow conservation property holds on each vertex v except s and t
• value of flow is imbalance at source and sink:
17/09/2018 Design and Analysis of Algorithms 2018 week 3 15
v
(flow conservation property)
)( )()( )(
),(),(),(),(tNu tNwsNw sNu
wtftufsufwsff
)( )(
),(),(vNu vNw
wvfvuf
Master’s Programme in Computer Science
FLOW NETWORK • Flow network is a directed graph
• No self loops or antiparallel edges: if (u,v) is an edge, (v,u) is not
• Capacities c(u,v) ≥ 0 for each edge (u,v)
• A flow is feasible if it satisfies capacity constraints: 0 ≤ f(u,v) ≤ c(u,v) for every edge (u,v)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 16
Unconstrained flow Flow with capacity constraint
Master’s Programme in Computer Science
A FEASIBLE FLOW (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 17
11/14
1/4
7/7
12/12
capacity flow
Flow value =11+8=15+4=19
Master’s Programme in Computer Science
MAXIMUM FLOW PROBLEM
• Given a flow network, find a feasible flow f maximizing |f|.
17/09/2018 Design and Analysis of Algorithms 2018 week 3 18
?/14
?/4
?/7
?/12
Flow value = max
Master’s Programme in Computer Science
FORD-FULKERSON METHOD (FIRST CONCEPTS)
• Idea: Given a feasible flow f, find another flow f’ s.t. augmenting f with f’ increases the flow value.
(f↑f’)(u,v) = f(u,v) + f’(u,v) - f’(v,u)
• Flow f’ is a feasible flow in a residual network Gf with capacities
• cf(u,v) = c(u,v) - f(u,v)
• cf(v,u) = f(u,v) (antiparallel edge)
• f↑ f’ is always a feasible flow and |f↑f’| = |f| + |f’| (see Lemma 26.1 in book)
18/09/2018 Design and Analysis of Algorithms 2018 week 3 19
Master’s Programme in Computer Science
RESIDUAL NETWORK (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 20
11/14
1/4
7/7
12/12
?/7
?/12
?/5
?/4
?/3
?/11
?/3
?/1 ?/11
?/8
?/15
Residual transform
Zero capacity edges
can be omitted
Master’s Programme in Computer Science
FORD-FULKERSON METHOD (SINGLE STEP)
• Let P be a simple s-t path in the residual network Gf.
• No edges with zero residual capacity
• P is called augmenting path
• Let cf(P) = min{cf(u,v) : (u,v) in P}
• Bottleneck capacity of P
• Let fP(u,v) = cf(P) if (u,v) is in P and fP(u,v)=0 otherwise
• Maximum augmenting flow along P
LEMMA (Lemma 26.3 in book)
• f↑fP is a feasible flow and |f↑fP| = |f| + cf(P)
19/09/2018 Design and Analysis of Algorithms 2018 week 3 21
Master’s Programme in Computer Science
FORD-FULKERSON METHOD (SINGLE STEP)
Proof sketch.
• Local changes in flow along P:
• → v → : inflow and outflow increase by cf(P)
• ← v → : outflow increases by cf(P) - cf(P) = 0
• → v ← : inflow increases by cf(P) - cf(P) = 0
• ← v ← : inflow and outflow decrease by cf(P)
• s →: ouflow increases by cf(P)
• s ←: inflow decreases by cf(P)
• → t: inflow increases by cf(P)
• ← t: ouflow decreases by cf(P)
• u → v: flow increases by cf(P) ≤ cf(u,v) = c(u,v)-f(u,v)
• u ← v: flow decreases by cf(P) ≤ cf(u,v) = f(u,v)
18/09/2018 Design and Analysis of Algorithms 2018 week 3 22
Flow
conservation
maintained
Flow value
increases
by cf(P)
Capacity
constraints
maintained
Master’s Programme in Computer Science
AUGMENTING PATH (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 23
11/14
1/4
7/7
12/12
?/7
?/12
?/5
?/4
?/3
?/11
?/3
?/1 ?/11
?/8
?/15
11/14
1/4
7/7
12/12
Master’s Programme in Computer Science
FORD-FULKERSON METHOD (ALL STEPS)
• Section 26.2 in book
• Start with a zero flow f.
• Repeat until flow f does not improve anymore
• Find an augmenting s-t path P in the residual graph and augment f with the bottleneck flow induced by path P.
• Running time is O(|f*||E|), where f* is the maximum flow in a graph with integral capacities.
• Worst case: always choose augmenting paths with tight bottleneck
18/09/2018 Design and Analysis of Algorithms 2018 week 3 24
1
Master’s Programme in Computer Science
FORD-FULKERSON METHOD (EXAMPLE)
17/09/2018 Design and Analysis of Algorithms 2018 week 3 25
11/14
1/4
7/7
12/12
?/7
?/12
?/5
?/4
?/3
?/11
?/3
?/1 ?/11
?/8
?/15
11/14
1/4
7/7
12/12
?/7
?/12
?/3
?/11
?/3
?/1 ?/11
?/1
?/19
No augmenting path to increase the flow.
Master’s Programme in Computer Science
EDMONDS-KARP
• Augmenting path = shortest s-t path in the residual graph
• Shortest = fewest edges
• Otherwise identical to Ford-Fulkerson
• O(|V||E|2) running time!
• Lecture blackboard or Theorem 26.8 in book
17/09/2018 Design and Analysis of Algorithms 2018 week 3 26
Master’s Programme in Computer Science
APPLICATIONS OF MAX FLOW
• Vertex-disjoint paths
• Find the maximum number of vertex disjoint paths from a set of source vertices to a set of sink vertices
• Maximum bipartite matching
• Bipartite graph: vertices partitioned into two distinct subsets, no edges within subset
• Matching: subset of edges with no common end vertices
• Find maximum matching in a bipartite graph
• Both problems have a reduction to max-flow
• See lecture blackboard and separate writeup
18/09/2018 Design and Analysis of Algorithms 2018 week 3 27