안정적인 결혼 문제


12

배경

이 있다고 가정 2*n결혼하는 사람들은 각 사람이 정확히에 매료되는 것을 가정 해 보자 n제약이 아래 다른 사람 :

  1. 매력은 대칭이다 ; 즉 사람 A이 사람에게 끌 리면 사람 은 B사람에게 B끌린다 A.
  2. 매력은 반전 이적이다 ; 사람이있는 경우 즉,은 A과 사람이 B각 사람에게 매력을 C, 다음 사람 A과 사람이 B서로에게 매력을하지 않습니다.

따라서 어트랙션 네트워크는 (무 방향) 완전한 이분 그래프를 형성합니다 Kn,n. 우리는 또한 각 사람이 자신이 끌리는 사람들의 순위를 매겼다 고 가정합니다. 이들은 그래프에서 간선 가중치로 표시 될 수 있습니다.

결혼은 페어링입니다 및 서로에게 끌린다. 각 결혼에서 한 사람이 파트너와 이혼하고 서로 결혼 할 수 있고 또 둘이 이전 파트너보다 더 높은 사람과 결혼 할 수있는 다른 결혼이있을 경우 결혼이 불안정 합니다.(A,B)AB

당신의 임무는 각 사람의 선호를 입력으로 취하고 각 결혼이 안정되도록 각 사람의 결혼을 출력하는 완전한 프로그램이나 기능을 작성하는 것입니다.

입력

입력은 편리한 형식 일 수 있습니다. 가중 그래프, 정렬 된 기본 설정 목록, 사전 / 연관 등. 선택적으로 총 인원 수를 입력으로 취할 수 있지만 다른 입력은 허용되지 않습니다.

산출

출력은 또한 편리한 형식 일 수 있습니다. 예를 들어, 튜플 목록, 최소 간선 표지 , 각 사람과 파트너를 연결하는 기능 등. 유일한 제약은 각 결혼이 안정적이며 다른 최적 성 요구 사항이 없다는 것입니다.

노트

  1. Wikipedia 또는이 Numberphile 비디오O(n^2) 에서이 문제를 해결하기 위한 자세한 정보와 알고리즘을 찾을 수 있습니다 . 그러나 모든 알고리즘을 자유롭게 사용할 수 있습니다.
  2. 표준 허점 은 금지되어 있습니다.
  3. 이것은 입니다. 최단 답변 (바이트)이 이깁니다.

15
매력은 대칭 하입니다!
Luis Mendo 2012

5
@LuisMendo 나는 비현실적인 단어 문제의
고풍스러운

2
발렌타인 데이 tho (UTC + 8)
busukxuan

답변:


7

수학, 28 바이트

생각하기에, 이것은 부정 행위입니다. 나는 이것을 이렇게 좋아한다.

Combinatorica`StableMarriage
  • 남녀에 대한 선호도의 가중치 매트릭스와 함께 호출해야합니다.
  • 커플 링에 대한 직접 삽입 값을 반환합니다.

(예, Combinatorica더 이상 사용되지 않지만보다 적은 바이트 비용 FindIndependentEdgeSet)


예 (GoT와 유사) : (공평하게-무게를 추측했지만 결과는 괜찮습니다)

여기에 이미지 설명을 입력하십시오

m = {{2, 4, 3, 1}, {1, 2, 4, 3}, {3, 2, 1, 4}, {4, 2, 1, 3}};
w = {{2, 3, 4, 1}, {3, 2, 1, 4}, {3, 2, 4, 1}, {4, 1, 2, 3}};
result = Combinatorica`StableMarriage[w, m];
MapThread[
  UndirectedEdge[Show[#1, ImageSize -> 130], 
    Show[#2, ImageSize -> 130]] &, {names1, 
   names2[[result]]}] // TableForm

인용구


3
쓸모없는 사람을 제외한 코드 골퍼 기능의 Mathematica의 서사적 라이브러리를 악용 한 +1
SIGSTACKFAULT

2
내가 하나 : 존재하지 않는다고 확신하는 경우에도 내장 기능을 허용하지의 습관을 필요
ngenisis

결코 과소 평가 매스 매 티카 내장 기능, D
줄리앙 클루
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.