最大流问题的增广路算法概要
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
25
Complexity of Ford-Fulkerson
• With standard (decimal or binary) representation of integers, Ford-Fulkerson is an exponential time algorithm.
26
java MaxFlow 111111 #|1111111111111111|1111111111111||| #||1111111111|111111111111|| #|1111|||11111111111111| #||111111111|||11111111111111111111 #|||1111111||1111 #|||||
• We have at most |f| improvement steps (iterations of the while-loop) and this bound cannot be improved for the general Ford-Fulkerson method.
• How fast can we implement a single improvement step?
• A balanced city council must be formed by including exactly one member from each club and at most uk members from party Pk.来自百度文库
17
18
Local search checklist
• In case of floating point capacities, who knows?
12
Integrality Theorem (26.11)
If a flow network has integer valued capacities, there is a maximum flow with an integer value on every edge. The FordFulkerson method will yield such a maximum flow. The integrality theorem is often extremely important when “programming” and modeling using the max flow formalism.
22
Polynomial time algorithms
• Defintion: A polynomial time algorithm is an algorithm than runs in time polynomial in n, where n is the number of bits of the input. • How we intend to encode the input influences if we have a polynomial algorithm or not. Usually, some “standard encoding” is implied.
S
T c(S,T)=26
3
Lemma 26.5 + Corollary 26.6
• Let f be a flow in G and let (S,T) be a cut in G. Then |f| = f(S,T). • Let f be a flow in G and let (S,T) be a cut in G. Then |f| · c(S,T). This is a weak duality theorem.
13
Reduction: Maximum Matching ! Max Flow
What is the maximum cardinality matching in G?
14
G
15
s
t
G’
All capacities are 1
16
Finding a balanced set of Representatives
Remarks
• The solution values agree, not the solutions themselves – flows and cuts are completely different objects.
• Given a max flow we can easily find a min cut (follows from proof of max flow-min cut theorem). Going the other way is less obvious.
4
Max Flow – Min Cut Theorem
Let f be a flow in G. The following three conditions are equivalent: 1. f is a maximum flow 2. Gf contains no augmenting path 3. There is a cut (S,T) so that |f|=c(S,T)
7
Consequence
• The Ford-Fulkerson method is partially correct, i.e., if it terminates it produces the flow with the maximum value.
8
Local search checklist
5
Max Flow – Min Cut Theorem
• The value of the maximum flow in G is equal to the capacity of the minimum cut in G.
• This is a strong duality theorem.
6
• We always have a legal flow, i.e., one of value at most |f|. • Hence we can have at most |f| iterations.
10
Correctness of Ford-Fulkerson
• Since Ford-Fulkerson is partially correct and it terminates if capacities are integers it is a correct algorithm for finding the maximum flow if capacities are integers.
28
Edmonds-Karp
Edmonds-Karp algorithm for Max Flow:
Implement Ford-Fulkerson by always choosing the shortest possible augmenting path, i.e., the one with fewest possible edges.
The max flow problem
7 5 10 -2 2
11
1 5
4
9
1
Ford-Fulkerson method
Ford-Fulkerson(G) f=0 while(9 simple path p from s to t in Gf) f := f + fp output f
2
A cut
٧
٧
٧
9
Termination
• Suppose all capacities are integers. • We start with a flow of value 0.
• In each iteration, we get a new flow with higher integer value.
27
Complexity of Ford-Fulkerson
• With unary (4 ~ 1111) representation of integers, FordFulkerson is a polynomial time algorithm. • Intuition: When the input is longer it is easier to be polynomial time as a function of the input length. • An algorithm which is polynomial if integer inputs are represented in unary is called a pseudo-polynomial algorithm. • Intuitively, a pseudo-polynomial algorithm is an algorithm which is fast if all numbers in the input are small.
21
Complexity
• Assume |V|-1 · |E|. Otherwise the graph is not connected. • Then, Ford-Fulkerson can be implemented to run in time at most O(|E| |f|).
• Is this fast?
• In this course: Polynomial ¼ Fast Exponential ¼ Slow
23
How to encode max flow instance?
java MaxFlow ??????????
24
How to encode max flow instance?
java MaxFlow 6#0|16|13|0|0|0#0|0|10|12|0|0 #0|4|0|0|14|0#0|0|9|0|0|20 #0|0|0|7|0|4|#0|0|0|0|0|0
٧
٧
٧
٧
19
Complexity of Ford-Fulkerson
• We have at most |f| improvement steps (iterations of the while-loop). • Is this the best possible bound?
20
Complexity
(Ahuja, Application 6.2)
• A city has clubs C1, C2,…,Cn and parties P1, P2,…,Pm. A citizen may be a member of several clubs but may only be a member of one party.
Design: • How do we find the first feasible solution? • Neighborhood design? • Which neighbor to choose? Analysis: • Partial correctness? (termination )correctness) • Termination? • Complexity?
• Exercise: It is also correct if capacities are rationals.
11
Does Ford-Fulkerson always terminate?
• In case of irrational capacities, not necessarily! (Exercise) • But we can’t give irrational capacities as inputs to digital computers anyway.
Design: • How do we find the first feasible solution? • Neighborhood design? • Which neighbor to choose? Analysis: • Partial correctness? (termination )correctness) • Termination? • Complexity?