20
최소비용흐름문제(minimum-cost flow problem) 입력 : 단순유향 네트워크 , 각 호 의 용량 , 단위 흐름 당 비 , 각 마디 의 균형 . 출력 : 호 비용의 합이 최소가 되는 가능 흐름. 위와 같은 문제를 표준형이라 할때, 각 호 의 흐름의 하한 가 주어진 문제 를 일반하한문제 라고 하고, 모든 마디의 균형이 0인 문제를 순환흐름문제 라고 한 다. 표준형과 일반하한문제, 순환흐름문제는 모두 동등한 모형임을 확인할 수 있다. 최소비용흐름문제의 정의 G =(N,A) (i, j ) 2 A u ij c ij i 2 N b(i) (i, j ) l ij 예 4.1 1

최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

최소비용흐름문제(minimum-cost flow problem)

입력 : 단순유향 네트워크 , 각 호 의 용량 , 단위 흐름 당 비용 , 각 마디 의 균형 .

출력 : 호 비용의 합이 최소가 되는 가능 흐름.

위와 같은 문제를 표준형이라 할때, 각 호 의 흐름의 하한 가 주어진 문제를 일반하한문제라고 하고, 모든 마디의 균형이 0인 문제를 순환흐름문제라고 한다.

표준형과 일반하한문제, 순환흐름문제는 모두 동등한 모형임을 확인할 수 있다.

최소비용흐름문제의 정의G = (N,A) (i, j) 2 A uij

cij i 2 N b(i)

(i, j) lij

예 4.1

1

Page 2: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

s-t 최단경로문제는 최소비용흐름문제로 모형화된다.

최단경로문제의 입력인 단순 유향 네트워크는 그대로 가져온다.

또한, 각 호에 대해 비용은 그대로 유지하고 용량을 무한대로 부여하자. 그리고 마디 s의 균형을 +1, 마디 t의 균형을 -1, 나머지 마디들의 균형을 0으로 설정하여 최소비용흐름문제를 만들자 :

이 최소비용흐름문제의 최적해에서, 흐름을 가진 호를 이용하여 만들 수 있는 s-t 경로는 모두 s-t 최단경로가 된다.

최단경로문제와 최소비용흐름문제

2

Page 3: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

예 :

코엑스는 국제회의에 필요한 만찬을 호텔 `오우버더래인보우'에 아웃소싱하였다. 이번 만찬은 국제회의가 가장 많은 10월 1일부터 열흘 동안 진행될 예정이다. 오우버더래인보우의 `culinary arts' 팀장 고라니 양은 오늘 오전 스태프들과 만찬 지원에 필요한 품목의 수급계획을 수립하려 한다. 그중 하나는 대형 원탁 식탁보이다. 식탁보의 구입 비용은 장당 15만원이고 세탁 비용은 장당 15,000원이다. 보통 세탁을 하면 이틀 후(다음 다음 날)에 사용 가능하다. 하지만 장당 10,000원의 비용을 추가하면 다음 날에 사용할 수 있다. 코엑스에서 보내 온 열흘 간의 만찬 참석자 수를 바탕으로 계산한 식탁보의 수는 다음과 같을 때 최소비용으로 식탁보를 수급하는 계획을 수립해보자.

최소비용흐름문제의 응용

3

Page 4: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

모형화 과정

1. 결정변수

- 각 일자에 얼마만큼의 식탁보를 구입할 것인가?

- 각 일자에 얼마만큼의 식탁보를 보통 세탁에 맡길 것인가?

- 각 일자에 얼마만큼의 식탁보를 ‘고속’ 세탁에 맡길 것인가?

2. 목적함수 :

- 모든 비용의 최소화.

3. 제약조건

- 식탁보 수요를 모두 충족.

최소비용흐름문제의 응용 (계속)

식탁보 구입 호

식탁보 세탁 호

식탁보 사용 호

5일간 모형1일

2일

3일

4일

5일

4

Page 5: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

최소비용흐름문제는 선형계획문제로 표현할 수 있다.

예 4.1의 최소비용흐름문제는 다음과 같은 선형계획문제가 된다.

최소비용흐름문제의 선형계획모형

min z = 5x12 +4x13 +7x14 +2x25 +10x34 +8x35 +5x45

sub.to x12 +x13 +x14 = 10,�x12 +x25 = 4,

�x13 +x34 +x35 = -3,�x14 �x34 +x45 = -4,

�x25 �x35 �x45 = -7,x12 4,

x13 10,x14 4,

x25 10,x34 5,

x35 5,x45 5,

xij � 0.

질량보존법칙

용량제약조건

5

Page 6: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

용량제약이 없는 경우의 최소비용흐름문제를 푸는 알고리듬을 공부하자.

유향네트워크의 경로 를 생각하자. 경로 에서 으로부터 를 향하여 호의 방향이 의 방향과 일치할 경우 정방향호, 반대인 경우 역방향호라고 하자.

이때, 경로 의 비용 를 다음과 같이 정의하자:

=정방향호의 비용 합 - 역방향호의 비용 합.

최소비용흐름문제 알고리듬

P := v1 � v2 � · · ·� vl v1vl

PP

P c(P )

c(P )

그림에서 경로 의 비용은 3 - 4 + 1 = 0이다.

P = i� j � k � l

6

Page 7: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

흐름 네트워크에 가능 흐름 가 흐르고 있다고 하자. 그리고 네트워크에 아래와 같은 회로 가 있다고 하자. 이때, 회로를 따라 가며 다음과 같이 흐름을 만큼 조정해보자.

이렇게 조정된 흐름은 각 마디에서 균형을 유지하게 된다.

조정된 흐름이 용량조건, 비음조건을 만족하게 하는 흐름 증가량 의 최대값? 2

목적함수의 변화는 다음과 같다 :

즉, 가 음수인 경우, 조정된 흐름은 목적함수를 감소시킨다. 이러한 회로를 음수흐름증가회로 혹은 음수회로라고 한다.

음수회로x

C := i� j � k � l � p� q � i✓ � 0

xij 1 + ✓,

xjk 2� ✓,

xkl 2 + ✓,

xlp 3� ✓,

xpq 4� ✓,

xqi 2 + ✓.

1 + ✓ � 0, 2� ✓ � 0, 2 + ✓ � 0, 3� ✓ � 0, 4� ✓ � 0, 2 + ✓ � 0.✓

✓ (cij � cjk + ckl � clp � cpq + cqi) = ✓c(C).

c(C)

7

Page 8: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

음수회로와 최적 조건은 다음과 같은 관계가 있다:

현재 가능흐름이 주어져있을 때, 음수회로가 존재한다면 최적이 아니다.

역으로, 음수회로가 더 이상 존재하지 않으면, 현재 가능흐름이 최적이다.

위 아이디어를 바탕으로, 각 반복단계에서, 현재 가능 흐름에 대한 음수회로를 찾아 앞서 진행한 것과 같은 - 조정으로 해를 개선시키는 알고리듬을 생각해보자.

단, 이러한 알고리듬은 매 반복단계마다 음수회로를 찾아야 한다. 하지만 네트워크 심플렉스 알고리듬은 특수한 형태의 흐름을 유지하여 음수회로를 신속히 찾을 수 있게 하였다.

음수회로 (계속)

8

Page 9: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

가능 흐름 에 대해 다음의 조건을 만족하는 걸침나무 가 존재하면 그 가능해를 걸침나무해 또는 나무해라고 부른다.

에 속하지 않는 호 의 흐름은 모두 0이다.

걸침나무해T

T (i, j)

x

나무해의 예 나무해가 아닌 가능 흐름

9

Page 10: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

(무한용량) 최소비용흐름문제가 최적해를 가지면, 반드시 나무해가 되는 최적해가 존재한다.

증명 : 나무해가 아닌 최적 흐름이 주어졌다고 하자. 이는 흐름의 크기가 0보다 큰 호로 이루어진 회로 가 존재한다는 것이다. 모든 호의 흐름의 크기가 0보다 크기 때문에, 회로의 어느 방향으로도 -조정이 가능하므로, 회로의 비용은 정확히 0이어야 한다.

이때, 회로 의 흐름을 역방향호 흐름의 최소값만큼 -조정하자. (역방향호가 없으면 회로의 방향을 반대로 바꾸면 된다.) 회로의 비용이 0이기 때문에, 이렇게 조정한 흐름도 최적 흐름이 되고, 회로 의 호 중 적어도 하나의 호의 흐름이 0이 되었다. 회로 밖에서 흐름이 0이었던 호들은 여전히 0이다. 즉, 흐름이 0보다 큰 회로가 하나 제거되었음을 알 수 있다.

이러한 과정을 반복하면, 흐름이 0보다 큰 호로 이루어진 회로를 모두 제거할 수 있다.

걸침나무해 (계속)

C

C

C

10

Page 11: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

네트워크 심플렉스 알고리듬은 매 반복단계마다 나무해를 유지한다. 현재 나무해에서 음수회로를 찾고 -조정을 하며 목적함수 값이 개선된 나무해를 얻는다.

현재 나무해에 대응하는 걸침나무를 라 하자. 네트워크 심플렉스 알고리듬은 에 속하지 않는 호를 추가했을 때 발생하는 회로만 고려한다. 회로의 방향은 추가한 호의 방향으로 정한다. 이러한 음수회로가 존재하지 않으면 현재해가 최적해이다.

네트워크 심플렉스 알고리듬

TT

이 예에서, 총 세개의 회로 :

- , 비용 -7

- , 비용 1

- , 비용 -14

가 음수회로인지 확인한다.

C1 := 1� 5� 4� 2� 1

C2 := 5� 2� 4� 5

C3 := 3� 6� 5� 2� 3

11

Page 12: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

보다 편리한 방법을 통해 회로의 비용을 구하자.

1) 마디를 임의로 하나 선택하여 뿌리 마디로 지정한다.

2) 걸침나무 에서, 뿌리마디에서 각 마디 까지의 경로의 비용을 라고 하자.

3) 그러면 호 가 에 추가되어 만들어진 회로의 비용은 다음과 같다:

네트워크 심플렉스 알고리듬 (계속)

c̄ij ⌘ cij + ⇡(i)� ⇡(j).

T

T(i, j)

i ⇡(i)

뿌리마디가 1일 때의 예 :

- , 비용 -7

- , 비용 1

- , 비용 -14

C1 := 1� 5� 4� 2� 1

C2 := 5� 2� 4� 5

C3 := 3� 6� 5� 2� 3

12

Page 13: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

회로 를 따라 -조정을 하자.

즉, 정방향호의 흐름은 만큼 증가시키고 역방향호의 흐름은 만큼 감소시킨다. 이때 목적함수는 -14 만큼 변한다.

는 역방향호의 흐름 중 최소값까지 증가시킬 수 있다. 이 경우 3이다.

만약 역방향호가 없다면? 목적함수를 무한히 감소시킬 수 있다.

네트워크 심플렉스 알고리듬 (계속)C3 := 3� 6� 5� 2� 3 ✓

✓ ✓✓

13

Page 14: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

-조정을 하면, 역방향호 중 하나의 흐름이 0으로 감소하고, 새로 추가한 호의 흐름의 크기는 가 된다.

예에서, 호 (2, 4)의 흐름이 0으로, 호 (3, 6)의 흐름이 3으로 바뀌었다.

걸침나무에서 (2, 4)를 제거하고, (3, 6)을 추가하여 새로운 나무해를 얻을 수 있다 :

이때, 는 재계산하도록 한다.

현재 나무해는 최적일까?

네트워크 심플렉스 알고리듬 (계속)✓

14

Page 15: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

지금까지의 논의를 정리하면 다음과 같다.

네트워크 심플렉스 알고리듬

단계 0 : (초기화) 초기 나무해를 구하고, 임의로 뿌리마디를 선택한다.

단계 1 : (주 반복단계) 알고리듬이 종료할 때까지 다음을 반복한다:

1) 현재 나무해의 를 구한다.

2) 현재 걸침나무 에 속하지 않는 호 중에서 를 만족하는 것을 선택한다. 그런 호가 없으면 현재 해는 최적해이다.

3) 위에서 선택한 호 를 에 첨가했을 때 생기는 음수회로를 따라 역방향호가 없으면 최적해는 존재하지 않는다. 알고리듬을 종료한다.

4) 역방향호 흐름의 최소값을 구하여 -조정을 하여 새로운 나무해를 구한다. 만약 흐름이 0으로 떨어진 역방향호가 여러개라면 임의로 하나를 선택하여 에서 삭제한다.

네트워크 심플렉스 알고리듬 (계속)

T

T

T

(i, j)

(i, j) c̄ij < 0

15

Page 16: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

최소비용 걸침나무문제(minimum spanning tree problem)

입력 : 무향 네트워크 , 각 호 의 비용 .

출력 : 호 비용의 합이 최소가 되는 걸침나무 .

최소비용 걸침나무문제의 정의

G = (N,A) e 2 A ce

T

16

Page 17: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

다음과 같은 자연스러운 알고리듬을 생각해보자 :

프림의 알고리듬 (Prim’s algorithm)

단계 0 : (초기화) 임의의 마디 을 선택하여 .

단계 1 : (주 반복단계) 가 모든 마디를 포함할 때까지 다음을 반복한다:

1) 양 끝 마디 중에서 하나만 에 포함된 호의 집합을 라 하자.

2) 에서 가장 비용이 작은 호를 하나 선택하여 에 첨가한다.

각 단계마다 가능한 가장 비용이 작은 호를 현재 나무에 추가하고, 한번 추가한 호는 다시 제거하지 않는다. 이러한 성질을 만족하는 알고리듬을 ‘greedy’ 알고리듬이라 한다.

최소비용 걸침나무문제는 ‘greedy’ 알고리듬이 항상 최적해를 구하는 특수성을 지니고 있다.

프림의 알고리듬

r T ({r}, ;)

T

T S

S T

17

Page 18: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

프림의 알고리듬을 다음 예에 적용해보자. 처음 마디 이다.

프림의 알고리듬

마디 1에 연결된 호 중 저렴한 호를 택한다.

마디 1, 3에 연결된 호 중 저렴한 호를 택한다.

r = 1

18

Page 19: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

또다른 ‘greedy’ 알고리듬을 생각해보자 :

크라스칼의 알고리듬 (Kruskal’s algorithm)

단계 0 : (초기화) .

단계 1 : (주 반복단계) 가 모든 마디를 포함할 때까지 다음을 반복한다:

에 추가했을 때 단순회로가 발생하지 않는 호 중에서, 비용이 가장 작은 호를 에 추가한다.

‘greedy’ 알고리듬을 하나 더 설계하여 보자! 어떤 방법이 가능할까?

크라스칼의 알고리듬

T

T (;, ;)

T

T

19

Page 20: 최소비용흐름문제의 정의 - polytope.snu.ac.krpolytope.snu.ac.kr/courses/ms2013/chap3-network-mincost.pdf · 네트워크 심플렉스 알고리듬은 매 반복단계마다

최소비용 스타이너나무문제(minimum Steiner tree problem)

입력 : 단순 네트워크 , 각 호 의 비용 , 마디의 부분집합 .

출력 : 을 연결하는 나무 중에서 호 비용의 합이 최소가 되는 것.

최소비용 걸침나무문제와 다른 점은 이 주어졌다는 것 뿐이다. 하지만 이 차이로 인해, 최적해를 신속히 구할 수 있는 알고리듬이 없다고 여겨지고 있다.

최소비용 스타이너나무문제G = (N,A) e 2 A ce

M ✓ N

M

M = {1, 2, 4, 6, 7}인 예

M

20