헝가리어 방법에 대한 정당성 (Kuhn-Munkres)


14

웹에서 찾은 강의 노트를 기반으로 최소 중량의이 분체 완전 매칭 문제에 대한 Kuhn-Munkres 알고리즘의 구현을 작성했습니다. 수천 개의 정점에서도 실제로 잘 작동합니다. 그리고 그 배후의 이론은 정말 아름답다는 데 동의합니다. 그러나 나는 아직도 왜 그런 길이로 가야하는지 궁금합니다. 이 강의 노트는 왜 우리가 단순히 원시 선형 프로그램을 가져와 단순한 방법으로 전달할 수 없는지 설명하지 않습니다. 물론 나는 그것이 예측 가능한 성능의 문제라고 생각하지만, 명시 적으로 언급하지 않았기 때문에 확실하지 않습니다. 최초의 폴리 토프의 극단 점은 0-1로 입증되었으므로 이중을 공식화하지 않고도 단순한 구현에 직접 공급할 수있는 것 같습니다. 아니면 단순한가요?

답변:


16

(댓글에서 이동했습니다.)

물론 범용 LP 솔버를 사용하여 모든 LP를 해결할 수 있지만 특수 알고리즘은 일반적으로 성능 이 훨씬 뛰어납니다.

그것은 이론적 인 점근 적 성능 보장뿐만 아니라 실제 실제 성능에 관한 것입니다. 헝가리어 방법과 같은 알고리즘은 매우 간소화되어 정확하고 효율적으로 구현하기가 비교적 쉽습니다.

또한 정확한 유리수 대 부동 소수점 숫자를 사용하는 것과 같은 문제를 피할 수 있습니다. 정수로 모든 것을 쉽게 할 수 있습니다.


14

그 대답은 일반적인 의미에서는 맞지만, 과제 문제에 초기 심플 렉스를 적용 할 때 무엇이 ​​잘못되었는지 구체적으로 이해하는 것이 도움이됩니다. 제곱 비용 행렬 c_ij의 NxN 대입 문제를 고려하십시오. 해당 LP에는 풀어야 할 N ^ 2 변수 x_ij가 있습니다. 이 x_ij를 정사각 행렬 X라고 생각하면 실현 가능한 솔루션은 X가 순열 행렬이어야하며, LP의 2N-1 제약 조건에 의해 시행됩니다 (각 행마다 하나씩 2N 제약 조건이있는 것처럼 보일 수 있습니다. 각 열마다 하나씩이지만 모두 독립적 인 것은 아니며 그중 하나를 삭제합니다. LP 제약은 따라서 (2N-1) x (N ^ 2) 행렬 A를 형성한다.

이제 기본 솔루션은 (2N-1) 기본 변수 세트를 선택하여 형성됩니다. 그러나이 기본 해법도 실현 가능하게하려면 해당 변수 중 N 개만 값 1을 가질 수 있고 다른 하나 (N-1)는 0을 가질 수 있습니다. 따라서 모든 실현 가능한 해는 변성됩니다. 이러한 퇴화의 문제점은 0 인 (N-1) 기본 변수 중 어느 것이라도 (N ^ 2-2N + 1) 비 기본 변수, 소위 "축퇴 피벗 (degenerate pivot)"으로 교체 될 수 있다는 것입니다. 목적 함수의 값에 영향을 미칩니다 [하나의 0 변수를 다른 변수로 바꾸고 있습니다]. N이 크면, 기본 심플 렉스 알고리즘은 솔루션을 개선하지 않는 축을 피벗하는 데 많은 시간을 낭비합니다. 이것이 순진 원시 심플 렉스 알고리즘이 할당 문제를 해결하기 위해 직접 사용되지 않는 이유의 요점입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.