Assignment Problem

gilson·2024년 12월 20일

작업자 iIi \in I 명에게 일 jJj \in J 개의 일을 최적으로 할당하는 문제는 II에서 JJ로 가는 일대일 대응(bijection) σ:IJ\sigma : I \to J 중에서 가장 비용이 적은 것을 찾는 문제이다.

작업자 ii 가 일 jj를 처리하는 비용을 c(i,j)c(i,j)라고 최적의 할당은

iIc(i,σ(i))\sum_{i\in I}c(i,\sigma(i))

이것을 그래프로 생각하면 IIJJ 에 대한 edge cost가 cc인 complete bipartite graph가 되고 모든 정정이 참여해햐 함으로 cost 비용이 최소가 perfect matching M을 찾는 것이다.

(i,j)Mc(i,j)\sum_{(i,j)\in M}c(i,j)

작업자-일 배분 표

j1j_1j2j_2j3j_3
i1i_1389
i2i_24127
i3i_3485

위의 표를 최소의 비용으로 일대일 매칭을 해야한다. 여기서, Hungarian Algorithm을 사용한다.

Hungarian Algorithm (Intuitive Representation)

기본개념은 같은 행(작업자)에 일정한 비용을 더하거나 빼더라도 할당을 위한 결과는 바뀌지 않는다는 것이다. 열(일)에도 동일한 개념이 적용된다. 그렇다면 적당한 값을 행/열에 빼거나 더해서 일대일 대응에서 0이 나오도록 하면 최적으로 매칭일 될 수 있다.

먼저 각 행에서 최소값을 빼고 다음으로 각 열에서 최소값을 뺀다

각 열에서 최소값을 땐다

j1j_1j2j_2j3j_3
i1i_1056-3
i2i_2083-4
i3i_3041-4

각 행에서 최소값을 땐다

j1j_1j2j_2j3j_3
i1i_1015-3
i2i_2042-4
i3i_3000-4
0-4-1

i3,j1i_3, j_1이 모두 0을 가지므로 이를 벗어나기 위해 i1,i1i_1,i_1에 1을 더빼준다

j1j_1j2j_2j3j_3
i1i_1-104-3-1
i2i_2-131-4-1
i3i_3000-4
0-4-1

음수가 있음으로 음수를 제거한다.

j1j_1j2j_2j3j_3
i1i_1004-3-1
i2i_2031-4-1
i3i_3100-4
+1-4-1

이제 모든 작업자와 일간의 매칭에서 0을 가지게 된다.

(i1j2i_1 \to j_2 ), (i2j1i_2 \to j_1 ), (i3j3i_3 \to j_3 )

따라서, 최적의 비용은 다음과 같다

j1j_1j2j_2j3j_3
i1i_1389
i2i_24127
i3i_3485

(i1j2i_1 \to j_2 )=8, (i2j1i_2 \to j_1 )=3, (i3j3i_3 \to j_3 )=5,

(i,j)Mc(i,j)=8+3+5=16σ={(1,2),(2,1),(3,3)}\sum_{(i,j)\in M}c(i,j) = 8+3+5=16 \\ \sigma = \{(1,2),(2,1),(3,3)\}

0개의 댓글