먼저 해당 기준에 따라 남성과 여성의 우선 순위를 설정 한 다음 Stable marriage problem 알고리즘을 적용하여 가능한 최대 페어링을 만듭니다.
각 남성의 경우 위의 기준에 따라 별개의 정렬 목록 (기본 설정 목록)을 만들고 여성의 경우 그 반대의 경우도 마찬가지입니다. 이것은 사용자 정의 비교기로 수와 암 배열을 여러 번 정렬하는 것입니다.
이제 남성과 여성 각각에 대한 기본 설정 목록이 있습니다. 안정된 결혼 알고리즘을 실행할 준비가되었습니다. 최대 쌍을 얻을 수 있습니다. 안정적인 결혼 문제의 일반적인 의사 코드는 다음과 같습니다 제대로 알고리즘을 구현하는 경우, 시간 복잡도는 최악의 경우 평균 경우에 O(nlogn)
및 O(n^2)
될 것
function stableMatching {
Initialize all m ∈ M and w ∈ W to free
while ∃ free man m who still has a woman w to propose to {
w = first woman on m’s list to whom m has not yet proposed
if w is free
(m, w) become engaged
else some pair (m', w) already exists
if w prefers m to m'
m' becomes free
(m, w) become engaged
else
(m', w) remain engaged
}
}
.
이 문제는 상세하지 않습니다. 나이는 엄격한 제한 사항으로 주어 지는데 괜찮습니다. 당신은 다른 두 가지 기준 (인종 및 공통 관심사)을 주지만 둘의 상대적 가중치를 지정하지 않으며 일치가 허용 될 수있는 최소값을주지 않습니다. 성냥이 안정적 일 것을 요구하는 경우 안정된 결혼이 적용될 수 있습니다. 그렇지 않다면 배정 문제가 있지만 체중 기능을 지정하지 않았습니다. – tjhighley
예 나이는 제한이 없습니다. 다른 요인들에 대해서는 동일한 체중을 가지기 때문에 더 일반적인 요인들이 쌍을 이루는 것이 더 좋습니다. 다른 종족과 공통 관심사가 없어도 페어링의 마지막 옵션이어야합니다. –