Bipartite Maximum Matching

2015. 8. 21. 13:32알고리즘 문제풀기/그래프

이분 그래프에서 Maximum matching에서 가장 중요한 아이디어 중 하나는 alternating path이다.


매칭중인 상황에서, 기존의 간선을 몇 개 끊고 다른 방법으로 이으면 더 많이 매칭시킬 수 있는 경우가 있다.
이 때 이러한 '개선'을 어떻게 생각할 수 있을까?

매칭되지 않는 간선으로 시작하고 끝나며, 매칭되지 않은 간선과 매칭된 간선을 번갈아가며 사용하는 경로를 생각해보자.
이 경로에는 매칭되지 않은 간선이 매칭된 간선보다 하나 더 많다.
만약 시작점과 끝점이 매칭되지 않은 점들이라면, 여기서 매칭을 늘릴 수 있겠다.
매칭되지 않은 간선을 매칭시키고, 매칭된 간선들의 매칭을 풀면 된다.
매칭은 한 개 늘어나게 된다.

(이는 그래프를 모든 간선의 플로우를 1로 생각한 네트워크 플로우에서의 augmenting path로도 생각할 수 있는 부분이다. 이 때 bipartite한 양쪽을 각각 source와 sink로 설정하면 된다.)

alternating path가 존재하지 않는 매칭은 maximum matching이다. 즉 greedy하게 alternating path를 찾아나가면 maximum matching을 찾을 수 있다.

'알고리즘 문제풀기 > 그래프' 카테고리의 다른 글

König's theorem  (1) 2015.08.22
DFS를 사용한 Bipartite Maximum Matching  (0) 2015.08.21
Matching과 Vertex cover  (0) 2015.08.21
Sparse Table을 이용한 LCA의 VlgV 시간 해법  (0) 2015.06.03
트리의 기초  (0) 2013.08.27