< 학습목표 >
- 개념: 불안정한 짝(unstable pair)와 안정적인 매칭(stable matching)의 개념을 이해하고,
- 구현: Gale-Shapley 알고리즘이 어떻게 불안정한 짝을 피하고 안정성을 보장하는지 알고,
- 응용: 실제 문제나 응용 사례에서 이 알고리즘을 적용할 수 있어야 합니다.
Stable matching
Def. A stable matching is a perfect matching with no unstable pairs.
Stable Matching 문제의 핵심은 이미 형성된 매칭이 있고, 그 매칭이 불안정한지 또는 안정적인지를 판단하는 것이에요.
따라서, h와 s가 처음부터 서로에게 매칭되어 있다면 그 관계는 안정적일 수 있습니다. 하지만 문제가 되는 상황은 h와 s가 이미 다른 상대와 매칭되어 있는 경우입니다. 그 상황에서 두 명이 서로를 더 선호하면, 현재의 매칭은 불안정한 것이고, 그 매칭을 깨고 서로와 매칭되면 더 나은 결과가 된다는 것입니다.
결론적으로, h와 s가 서로 가장 선호하는 경우에 서로 이미 매칭되어 있다면 안정적이지만, 서로 다른 상대와 매칭되어 있는데 더 선호하는 상대를 찾으면 그 매칭은 불안정한 상황이 되는 것입니다.
Perfect matching
Def. A matching M is a set of ordered pairs h-s with h ∈ H and s ∈ S s.t.
- Each hoshpital h ∈ H appears in at most one pair of M.
Unstable pair
Def. Given a perfect matching M, hospital h and student s form an unstable pair if both.
Key point. An unstable pair h-s could each improve by joint action.
Gale-Shapley deferred acceptance algorithm for Stable Matching Marriage
The Gale-Shapley algorithm, solves the stable matching problem, where you have an equal number of men and women, and each person ranks the people of the opposite gender by their preferences.
The goal if to find a stable matching - a situation where no pair of individuals would both prefer to be with each other over their current partners.
예제 )
Males:
Adam, Ben, Cian, David, Ethan
Females:
Tina, Wendy, Xena, Yasmine, Zara
선호도 조사가 다음과 같다고 하자. (선호하는 순서대로 적음)
A | T X Z Y W |
B | W X Y Z T |
C | W X Z T Y |
D | Z X Y W T |
E | Y W X T Z |
T | A C E B D |
W | B C A D E |
X | C E A B D |
Y | D A B C E |
Z | B E A D C |
(A, T), (B, W), (C,X), (D,Z), (E, Y)
이 표는 Gale-Shapley 알고리즘을 사용하여 Stable Matching Problem을 해결하는 과정에서 사용하는 남성과 여성의 선호도 리스트를 보여줍니다. 남성과 여성 각각이 상대방 그룹을 선호하는 순서대로 나열되어 있습니다. 이 정보들을 바탕으로 Gale-Shapley 알고리즘을 실행해보겠습니다.
남성의 선호도:
- A: Tina > Xena > Zara > Yasmine > Wendy
- B: Wendy > Xena > Yasmine > Zara > Tina
- C: Wendy > Xena > Zara > Tina > Yasmine
- D: Zara > Xena > Yasmine > Wendy > Tina
- E: Yasmine > Wendy > Xena > Tina > Zara
여성의 선호도:
- Tina: Adam > Cian > Ethan > Ben > David
- Wendy: Ben > Cian > Adam > David > Ethan
- Xena: Cian > Ethan > Adam > Ben > David
- Yasmine: David > Adam > Ben > Cian > Ethan
- Zara: Ben > Ethan > Adam > David > Cian
Gale-Shapley 알고리즘 실행 과정:
- 1일차: 각 남성은 가장 선호하는 여성에게 제안합니다.
- A: Tina에게 제안 (Tina는 A를 임시로 수락)
- B: Wendy에게 제안 (Wendy는 B를 임시로 수락)
- C: Wendy에게 제안 (Wendy는 C를 B보다 더 선호하므로 B를 거절하고 C를 임시로 수락)
- D: Zara에게 제안 (Zara는 D를 임시로 수락)
- E: Yasmine에게 제안 (Yasmine은 E를 임시로 수락)
- 2일차: 거절당한 남성은 다음 선호 여성에게 제안합니다.
- B: Xena에게 제안 (Xena는 B를 임시로 수락)
- 나머지 남성들은 여전히 현재 매칭이 유지됨.
- 3일차: 모든 남성이 짝을 찾았으며, 현재 매칭은 안정적입니다.
최종 매칭 결과:
- A: Tina
- B: Xena
- C: Wendy
- D: Zara
- E: Yasmine
이 매칭은 안정적인 매칭입니다. 불안정한 짝(unstable pair)이 없으며, 더 선호하는 상대를 가진 남성이나 여성이 서로 짝을 맺으려고 하지 않는 상태입니다.
Gale-Shapley 알고리즘은 이렇게 각 남성과 여성이 선호도를 바탕으로 제안과 수락을 반복하여 안정적인 매칭을 찾습니다.
'python' 카테고리의 다른 글
알고리즘 _ 1주차 정리 (0) | 2024.09.06 |
---|