Download - Maximum Flow
Maximum Flow
The Standard Maximum Flow Problem
서로 연결된 파이프들과 그 유량(flow-capacity)이 주어질 때, 주어진 시작점에서 종점까지 보낼 수 있는물의 최대량을 구하라
도시 X의 공장에서 만들어진 제품들을 트럭을 통해도시Y의 배송센터로 운송하려고 한다. 각 도시들은일방통행 도로로 연결되어 있고 각 도로가 수용할수 있는 차량 수의 한계가 주어질 때, 공장에서 배송센터로 보낼 수 있는 트럭의 최대 개수를 구하라
Rephrasing in terms of graph theory
네트워크 - 방향 그래프 (directed graph)
각 간선의 용량(capacity) c와 시작점 X, 종점Y가 주어질 때,
각 간선에 대해 다음 조건을 만족하는 유량(flow) f를 구하라
◦ f <= c
◦ 반드시 들어온 만큼 나가야 한다
◦ 시작점에서 나간 유량의 합(종점으로 들어온 유량의 합)은 최대화되어야 한다.
Residual networks
본래 네트워크와 정점의 개수가 같다
두 정점 사이에는 한 개 혹은 두 개의 간선이 존재할수 있다.
◦ 원래 방향: 용량이 유량 f와 용량 c의 차이와 같은 간선
◦ 반대 방향: 용량이 유량 f와 같은 간선
Augmenting paths
Residual network에서 시작점으로부터 종점까지의경로를 말함
그 경로의 용량(path capacity)은 경로를 구성하는 간선의 용량의 최소값
본래 네트워크의 유량을 증가시키는데 사용 가능
How to Solve It (1/N)
Figure 2b의 Residual network에서 Augmenting path를찾으면? 경로 X-A-C-Y
이 경로의 용량은 C-Y의 용량인 1
따라서 이 경로를 따라 유량을 1 증가시키는 것이 가능
How to Solve It (2/N)
Figure 3b의 Residual network에서 Augmenting path를찾으면? 경로 X-A-C-B-D-E-Y
이 경로의 용량은 C-B의 용량인 1
따라서 이 경로를 따라 유량을 1 증가시키는 것이 가능
How to Solve It (3/N)
Figure 1b의 Residual network에서 Augmenting path를찾으면? 존재하지 않음
The Ford-Fulkerson method
//Assumption 1: capacities and flows of the edges being integers
//Assumption 2: path-capacity being positive
Begin
x := 0
create the residual network G(x)
while there is some augmenting path from s to t in G(x)
begin
let P be a path from s to t in G(x)
min:= Capacity of P
Increase flow by min along P
Update G(x)
end
End { the flow x is now maximum }
Correctness of the Ford-Fulkerson
method Augmenting path가 없으면 maximum flow인가?
◦ Maximum flow라도 Augmenting path가 있다고 가정
유량을 더 증가시키는 것이 가능
이는 Maximum flow라는 가정에 모순
따라서 Augmenting path가 없으면 maximum flow
이다.
Choosing Good Augmenting Paths
Ford-Fulkerson algorithm을 사용하면 어떤 augmenting
path를 선택하든 maximum flow를 구할 수는 있음
그러나 augmenting path를 마구잡이로 선택하면 유량이 1씩만 증가해서 작업을 매우 많이 반복해야 할 수도 있음
선택의 기준
◦ 최단 거리(shortest path)
◦ 경로 용량이 최대인 경로 (maximum path capacity)
Reduction of multiple-source/
multiple sink 시작점이나 끝점이 여러 개 존재하는 경우
해결책
◦ ‘dummy’ vertex
super-source: 원래 시작점들로 간선이 뻗어있는 정점. 특별한 제약조건이 없다면 간선의 용량은 무한대
super-sink: 원래 종점들로부터 간선이 뻗어있는 정점. 역시용량은 특별한 제약조건이 없다면 무한대.
Eliminating vertex-capacities
정점에도 용량이 있는 경우
해결책
◦ 그 정점으로부터 정점 2개, 그 두 정점 사이를 연결하는 간선을 생성, 간선의 용량은 원래 정점의 용량과 같음
Maximum Bipartite Matching
이분된 그래프의 두 집합 사이의 원소들을 1대1 대응시키고 싶은 경우 (편의를 위해 왼쪽을 X, 오른쪽을 Y라고 함)
해결책
◦ super-source: 간선의 용량이 1. 만약 간선의 용량이 1보다 크다면A의 원소 하나에 B의 원소 여러 개를 대응시키는 것이가능
◦ super-sink