이분 매칭 계산기
사람과 일처럼 두 무리 사이에 이을 수 있는 짝 목록을 넣으면 겹치지 않게 가장 많이 짝짓는 방법을 찾습니다. 같은 크기가 되는 최소 정점 덮개(쾨니그 정리)와 최대 독립 집합까지 함께 뽑아 검산할 수 있습니다.
한 줄에 「왼쪽 오른쪽」. 한 줄에 상대를 여럿 적어도 됩니다. 정점 40개까지.
왼쪽 4개 · 오른쪽 3개
3쌍
짝을 못 지은 것이 왼쪽 1개, 오른쪽 0개입니다. 이보다 많이 짝지을 방법은 없습니다.
짝지은 결과
| 왼쪽 | 짝 | 이을 수 있었던 상대 |
|---|---|---|
| 지원자A | 기획 | 개발, 기획 |
| 지원자B | 개발 | 개발 |
| 지원자C | 디자인 | 기획, 디자인 |
| 지원자D | — 없음 | 디자인 |
왼쪽을 하나씩 보며 빈 상대가 있으면 잡고, 다 차 있으면 그 상대의 지금 짝에게 다른 자리를 찾아 달라고 부탁합니다. 부탁이 연쇄적으로 성공하면 자리를 밀어내며 짝이 정확히 하나 늘어납니다. 더 늘릴 길이 하나도 없을 때 그 매칭이 최대입니다.
최소 정점 덮개
덮개에 드는 정점
개발, 기획, 디자인
나머지(최대 독립 집합)
지원자A, 지원자B, 지원자C, 지원자D
| 간선 | 덮는 정점 |
|---|---|
| 지원자A — 개발 | 개발 |
| 지원자A — 기획 | 기획 |
| 지원자B — 개발 | 개발 |
| 지원자C — 기획 | 기획 |
| 지원자C — 디자인 | 디자인 |
| 지원자D — 디자인 | 디자인 |
모든 간선이 덮개의 정점을 적어도 하나 지나갑니다. 그 덮개의 크기가 최대 매칭의 크기와 정확히 같다는 것이 쾨니그 정리입니다. 이분 그래프에서만 성립하는 정리이고, 매칭 쪽과 덮개 쪽은 서로 다른 계산이라 둘이 같은지 보는 것이 그대로 검산이 됩니다.
계산 방법
- 1이을 수 있는 짝을 한 줄에 「왼쪽 오른쪽」 형식으로 적습니다.
- 2한 사람이 여러 곳에 갈 수 있으면 한 줄에 상대를 여럿 적습니다.
- 3최대 몇 쌍을 지을 수 있는지 확인합니다.
- 4짝을 못 지은 쪽이 누구인지 표에서 봅니다.
- 5최소 정점 덮개가 모든 간선을 덮는지, 크기가 매칭과 같은지 확인합니다.
자주 묻는 질문
두 무리로 나뉘어 있고 같은 쪽끼리는 이어지지 않는 그래프에서 겹치지 않게 짝을 최대한 많이 짓는 문제입니다. 사람과 일, 지원자와 자리, 기계와 작업처럼 「한 사람은 한 곳, 한 자리에는 한 명」인 배정이 모두 여기에 해당합니다.
더 늘릴 「증가 경로」가 하나도 없으면 최대입니다. 왼쪽을 하나씩 보며 빈 상대가 있으면 잡고, 다 차 있으면 그 상대의 지금 짝에게 다른 자리를 찾아 달라고 부탁합니다. 부탁이 연쇄적으로 성공하면 자리를 밀어내며 짝이 정확히 하나 늘어나고, 그런 길이 더는 없을 때가 최대입니다.
이분 그래프에서 최대 매칭의 크기와 최소 정점 덮개의 크기가 정확히 같다는 정리입니다. 정점 덮개란 모든 간선을 적어도 한쪽 끝으로 덮는 정점 집합입니다. 일반 그래프에서는 성립하지 않고 이분 그래프에서만 성립합니다.
최소 정점 덮개의 여집합입니다. 모든 간선이 덮개를 지나가므로 덮개를 뺀 나머지끼리는 이어질 수 없기 때문입니다. 일반 그래프에서는 독립 집합 문제가 NP-난해인데 이분 그래프에서는 매칭 한 번으로 풀립니다.
안정 매칭은 양쪽에 선호 순위가 있고 서로 지금 짝보다 상대를 더 좋아하는 쌍이 없게 짝짓습니다. 이분 매칭은 순위 없이 「이을 수 있다·없다」만 있고 오직 개수를 최대로 합니다. 목적이 다른 문제입니다.
있습니다. 왼쪽 전체에 원천을, 오른쪽 전체에 싱크를 붙이고 모든 간선의 용량을 1로 두면 최대 유량이 곧 최대 매칭의 크기가 됩니다. 다만 이 도구는 증가 경로를 직접 밟아 어느 자리를 밀어냈는지 보이는 쪽을 택했습니다.
계산하지 않고 막습니다. 같은 이름이 왼쪽에도 오른쪽에도 있으면 이분 그래프가 아니게 되어 최대 매칭 계산도 쾨니그 정리도 성립하지 않기 때문입니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 정답지는 모든 짝을 만들어 보는 전수 탐색입니다. 간선을 쓰거나 말거나 하는 모든 경우를 훑어 가장 큰 매칭을 찾으며, 증가 경로를 전혀 쓰지 않는 방법이라 서로를 검산합니다. 일곱 가지 예제와 무작위 그래프 200개에서 확인했습니다.
- 쾨니그 정리 자체가 두 번째 검산입니다. 매칭 쪽과 덮개 쪽은 서로 다른 계산이므로 크기가 다르면 어딘가 틀린 것이고, 뽑아 낸 덮개가 실제로 모든 간선을 덮는지도 함께 검사해 화면에 표시합니다.
- 최소 덮개도 전수 탐색으로 따로 구해 대조했습니다. 정점의 모든 부분집합을 훑어 간선을 모두 덮는 가장 작은 것을 찾은 값과 같습니다.
- 짝이 실제로 겹치지 않는지, 그리고 입력에 있는 간선만 쓰는지도 검사합니다. 크기만 맞고 배정이 엉망인 경우를 걸러 내기 위해서입니다.
- 최대 독립 집합이 덮개의 여집합이고 그 안에서 서로 이어진 두 정점이 없다는 것도 테스트로 고정했습니다.
- 이름이 양쪽에 겹치는 입력은 계산하지 않고 이유를 답합니다. 이분 그래프가 아니면 여기서 쓰는 정리들이 통째로 무너지기 때문입니다.
- 정점은 모두 합쳐 40개까지 다룹니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.