Dot Algo∙ DS/알고리즘 개념
2022. 1. 1.
[알고리즘] 이분 매칭 (Bipartite Matching) 알고리즘 (Java)
매칭 문제 (Matching Problem) N명의 유치원생이 소풍을 가는데, 단독 행동을 막기 위해 둘씩 짝을 이뤄 같이 다니게 하려고 한다. 단 서로 사이가 안 좋은 학생끼리 짝을 지어 주면 떨어져서 따로 다니기 때문에, 사이가 좋은 학생끼리만 짝을 지어 주고 싶다. 이런 규칙 하에서 모든 학생에게 짝을 지어 줄 수 있을까? 불가능하다면 최대 몇 쌍이나 만들 수 있을까? 그래프로 간단하게 표현할 수 있다. 각 학생을 표현하는 정점을 만든 뒤, 사이 좋은 학생들을 간선으로 연결한다. 이때 서로 짝을 이룬 학생들을 연결하는 간선들을 모아 보면, 이들은 끝점을 공유하지 않는 간선의 집합이 된다. 이런 간선의 집합을 이 그래프의 매칭(matching)이라고 부른다. (a) 굵은 회색으로 표시한 간선들은 끝점..