Download - Maximum Flow

Transcript
Page 1: Maximum Flow

Maximum Flow

Page 2: Maximum Flow

The Standard Maximum Flow Problem

서로 연결된 파이프들과 그 유량(flow-capacity)이 주어질 때, 주어진 시작점에서 종점까지 보낼 수 있는물의 최대량을 구하라

도시 X의 공장에서 만들어진 제품들을 트럭을 통해도시Y의 배송센터로 운송하려고 한다. 각 도시들은일방통행 도로로 연결되어 있고 각 도로가 수용할수 있는 차량 수의 한계가 주어질 때, 공장에서 배송센터로 보낼 수 있는 트럭의 최대 개수를 구하라

Page 3: Maximum Flow

Rephrasing in terms of graph theory

네트워크 - 방향 그래프 (directed graph)

각 간선의 용량(capacity) c와 시작점 X, 종점Y가 주어질 때,

각 간선에 대해 다음 조건을 만족하는 유량(flow) f를 구하라

◦ f <= c

◦ 반드시 들어온 만큼 나가야 한다

◦ 시작점에서 나간 유량의 합(종점으로 들어온 유량의 합)은 최대화되어야 한다.

Page 4: Maximum Flow

Residual networks

본래 네트워크와 정점의 개수가 같다

두 정점 사이에는 한 개 혹은 두 개의 간선이 존재할수 있다.

◦ 원래 방향: 용량이 유량 f와 용량 c의 차이와 같은 간선

◦ 반대 방향: 용량이 유량 f와 같은 간선

Page 5: Maximum Flow

Augmenting paths

Residual network에서 시작점으로부터 종점까지의경로를 말함

그 경로의 용량(path capacity)은 경로를 구성하는 간선의 용량의 최소값

본래 네트워크의 유량을 증가시키는데 사용 가능

Page 6: Maximum Flow

How to Solve It (1/N)

Figure 2b의 Residual network에서 Augmenting path를찾으면? 경로 X-A-C-Y

이 경로의 용량은 C-Y의 용량인 1

따라서 이 경로를 따라 유량을 1 증가시키는 것이 가능

Page 7: Maximum Flow

How to Solve It (2/N)

Figure 3b의 Residual network에서 Augmenting path를찾으면? 경로 X-A-C-B-D-E-Y

이 경로의 용량은 C-B의 용량인 1

따라서 이 경로를 따라 유량을 1 증가시키는 것이 가능

Page 8: Maximum Flow

How to Solve It (3/N)

Figure 1b의 Residual network에서 Augmenting path를찾으면? 존재하지 않음

Page 9: Maximum Flow

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 }

Page 10: Maximum Flow

Correctness of the Ford-Fulkerson

method Augmenting path가 없으면 maximum flow인가?

◦ Maximum flow라도 Augmenting path가 있다고 가정

유량을 더 증가시키는 것이 가능

이는 Maximum flow라는 가정에 모순

따라서 Augmenting path가 없으면 maximum flow

이다.

Page 11: Maximum Flow

Choosing Good Augmenting Paths

Ford-Fulkerson algorithm을 사용하면 어떤 augmenting

path를 선택하든 maximum flow를 구할 수는 있음

그러나 augmenting path를 마구잡이로 선택하면 유량이 1씩만 증가해서 작업을 매우 많이 반복해야 할 수도 있음

선택의 기준

◦ 최단 거리(shortest path)

◦ 경로 용량이 최대인 경로 (maximum path capacity)

Page 12: Maximum Flow

Reduction of multiple-source/

multiple sink 시작점이나 끝점이 여러 개 존재하는 경우

해결책

◦ ‘dummy’ vertex

super-source: 원래 시작점들로 간선이 뻗어있는 정점. 특별한 제약조건이 없다면 간선의 용량은 무한대

super-sink: 원래 종점들로부터 간선이 뻗어있는 정점. 역시용량은 특별한 제약조건이 없다면 무한대.

Page 13: Maximum Flow

Eliminating vertex-capacities

정점에도 용량이 있는 경우

해결책

◦ 그 정점으로부터 정점 2개, 그 두 정점 사이를 연결하는 간선을 생성, 간선의 용량은 원래 정점의 용량과 같음

Page 14: Maximum Flow

Maximum Bipartite Matching

이분된 그래프의 두 집합 사이의 원소들을 1대1 대응시키고 싶은 경우 (편의를 위해 왼쪽을 X, 오른쪽을 Y라고 함)

해결책

◦ super-source: 간선의 용량이 1. 만약 간선의 용량이 1보다 크다면A의 원소 하나에 B의 원소 여러 개를 대응시키는 것이가능

◦ super-sink


Top Related