일반 무 방향 그래프로 헝가리어 알고리즘의 일반화?


14

헝가리어 알고리즘은 다항식 시간에서 최대 중량의 이분법 매칭 문제 를 해결 하고 중요한 초기 이중 법 의 추후 개발을 예상 하는 조합 최적화 알고리즘입니다 . 이 알고리즘은 1955 년 Harold Kuhn에 의해 개발 및 출판되었으며,이 알고리즘은 헝가리의 두 수학자 인 Dénes Kőnig와 Jenő Egerváry의 초기 작업을 기반으로했기 때문에 "헝가리어 알고리즘"이라는 이름을 부여했습니다. Munkres는 1957 년에 알고리즘을 검토하여 실제로 폴리 타임임을 확인했습니다. 그 이후로 알고리즘은 Kuhn-Munkres 알고리즘이라고도합니다.

헝가리어에는 기본 이중 법에 대한 기본 개념이 포함되어 있지만 선형 프로그래밍 (LP) 기계를 사용하지 않고도 최대 중량 이분법 일치 문제를 직접 해결합니다. 따라서 다음 질문에 대한 답변 으로 Jukka Suomela 는 다음과 같이 말했습니다.

물론 범용 LP 솔버를 사용하여 모든 LP를 해결할 수 있지만 특수 알고리즘은 일반적으로 성능이 훨씬 뛰어납니다. [...] 종종 정확한 유리수 대 부동 소수점 숫자를 사용하는 것과 같은 문제를 피할 수 있습니다. 정수로 모든 것을 쉽게 할 수 있습니다.

다시 말해, 주어진 2 분자 그래프의 최대 가중치를 완벽하게 맞추기 위해 LP 솔버에서 유리 / 부동 소수점 솔루션을 반올림하는 방법에 대해 걱정할 필요가 없습니다.

내 질문은 다음과 같습니다

원래 헝가리어 알고리즘의 정신과 유사하게 LP 기계를 사용하지 않고 일반 무 방향 그래프에서 작동하는 헝가리어 알고리즘의 일반화가 있습니까?

나는 원래의 복잡한 종이 대신에 현대적이고 읽기 쉬운 박람회를 선호합니다. 그러나 어떤 포인터라도 대단히 감사하겠습니다!

많은 감사와 메리 크리스마스 !!!


업데이트 : 아래 질문에 Arman이 질문에 잘 대답했습니다. Edmonds 's Blossom Algorithm (가중 사례의 경우)을 연구하는 또 다른 좋은 소스는 Korte와 Vygen조합 최적화의 11 장 이라고 지적하고 싶습니다 . Google 도서는 실제로 알고리즘을 이해하는 데 필요한 거의 모든 부분을 보여줍니다.


2
Edmonds의 매칭 알고리즘은 어떻습니까? en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm
Arman

1
@Arman-저도 그렇게 생각했습니다. 링크 덕분에 Wikipedia는 놀랍게도 에드몬드의 꽃송이 알고리즘을 자세히 설명했습니다.
Abraham Flaxman

2
그건 그렇고, Edmonds의 매칭 알고리즘은 Primal-Dual 방법을 기반으로합니다.
Arman

1
고마워 아르 만 위키 백과 링크는 또한 Edmonds 알고리즘의 가중치 버전에 대한 "Lovász, László; Plummer, Michael (1986). 나는 그 책을 정말로 확인해야한다. 귀하의 의견에 감사드립니다! 알고리즘이 헝가리어 알고리즘을 일반화하는 방법에 대해 높은 수준으로 설명 할 수있는 사람이라면 누구나 대답 할 수 있습니다.
Dai Le

1
나는 그것이 좋은 대답이라고 생각합니다 :). 아르 만, 당신은 그것을 추가해야합니다
Suresh Venkat

답변:


16

Edmonds의 일치 알고리즘 (Bloomology Algorithm이라고도 함)은 일반 그래프에서 최대 일치를 해결합니다. 실제로는 대체 경로 방법의 일반화입니다. (이 방법의 이름은 확실하지 않지만 König-Hall 방법이어야합니다.) 기본적으로 확장 경로를 찾습니다 (wikipedia 페이지 : http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm ). 확장 경로가 더 이상 없으면 현재 일치 및 중지됩니다. 일반적인 그래프에서 홀수 사이클에서 유일한 문제가 발생합니다. Edmonds의 매칭 알고리즘에서 홀수 사이클이 수축 (꽃다발)되고 솔루션을 갖도록 다시 소비됩니다.

Blossom Algorithm과 Primal Dual 방법 사이에도 대응 관계가 있습니다. 홀수주기는 소수 극단 점을 유발합니다. 따라서 각 홀수주기마다 소위 꽃 불평등을 추가합니다.

이 방법으로 최소 가중치 완벽 일치 및 최대 가중치 일치 문제도 처리 할 수 ​​있습니다.

알고리즘에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm http://www.cs.berkeley.edu/~karp/greatalgo/lecture05.pdf를 참조하십시오 .

수학적 공식화 및 해당 기본 이중 법에 대해서는 http://webdocs.cs.ualberta.ca/~mreza/courses/CombOpt09/lecture4.pdf를 참조하십시오 .


9

2 년 전, (가중치되지 않은) 꽃송이 알고리즘을 연구 할 때 Tarjan과 Zwick이 각각 2 개의 훌륭한 음표를 찾았습니다. 그들은 비가 중 사례를 매우 직관적으로 보이게 만들었고 재귀를 사용하여 Mathematica에서 구현할 수있었습니다. 꽤 잘 작동합니다.

내가 찾은 메모는

http://www.cs.tau.ac.il/~zwick/grad-algo-06/match.pdfhttp://www.cs.dartmouth.edu/~ac/Teach/CS105-Winter05/Handouts/ tarjan-blossom.pdf

그들은 재귀 적으로 생각한 다음, 재귀 적으로 프로그램 할 수있는 매우 간단한 용어로 그것을 모두 증류시킨다.

가중 사례에서 모두 작동해야한다고 생각합니다. 지금 구현하려고합니다.


그리고 나는 자유 소프트웨어에 누군가에 의해 감시 될 수있다 데모가 : 첫 번째 쇼는 <... 잘 꽃을 demonstrations.wolfram.com/... > < demonstrations.wolfram.com/TheHungarianMaximumMatchingAlgorithm > < demonstrations.wolfram.com/ PlacingDominoesOnACheckerboard >
Stan Wagon

그리고 Korte / Vygen에 주어진대로 가중치가없는 꽃을 프로그램했습니다. 나는 그의 코드에 몇 가지 속도 향상이 가능하다는 것을 알지만 (예 : 아무것도 아닌 최대 매칭으로 시작), 좋은 점은 그의 절차 코드가 작업 코드로 쉽게 번역 할 수있는 형태로 제공된다는 것입니다. 다음 : 가중 꽃, 훨씬 어렵습니다.
Stan Wagon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.