할당 문제를 해결하기 위한 헝가리안 알고리즘.
할당 문제란 일대일 대응을 만드는 것과 비슷하다. 예를들어 사람의 그룹 A가 있고 A 그룹에 속하는 사람들이 각각 업무를 하나씩 배정 받는다고 가정하자. 이때, 업무의 수는 그룹 A에 속하는 사람 수와 같고 그룹 A에 모든 사람은 빠짐 없이 업무를 1개씩 배정 받는다. 이때 각 사람은 적성이 존재하기 때문에 업무에 따라 효율이 다르다고 하면 그룹 A의 속하는 모든 사람의 업무 효율이 최대가 되도록 업무를 배정하는 경우를 구해야 된다고 하자.
위와 같은 문제를 풀 때, 모든 경우의 수는 (A그룹의 사람수)! 이다. 업무를 줄 세우는 방법과 같으므로 팩토리얼이 사용된다. 그러나 팩토리얼의 경우 연산량이 어마어마하다. O(n)과 O(n^2) 같은 다항식보다 훨씬 크고 심지어 O(2^n)과 같은 지수 함수보다 Time Compexity가 높은 O(n!)이다.
따라서 위와 같은 알고리즘 보다 훨씬 효율적인 알고리즘이 필요했고 이를 헝가리안 알고리즘이라고 한다.
'CS > 알고리즘' 카테고리의 다른 글
| 자료구조 특집 - 힙(Heap) (0) | 2022.07.19 |
|---|---|
| 2개의 기하 알고리즘 (CCW, 그라함 스캔) (0) | 2022.06.28 |
| 그래프(Graph) (0) | 2022.02.04 |
| 동적 계획법 (Dynamic Programming) (0) | 2022.01.23 |
| 이진 검색(Binary Search) (0) | 2022.01.17 |