バックグラウンド
2*n
結婚する人がいると仮定し、さらに、各人が次n
のような制約の下で正確に他の人に惹かれると仮定します。
- 引力は対称的です。すなわち人
A
が人に引き付けられるならば、人はB
人B
に引き付けられA
ます。 - 魅力は反推移的です。人ならば、すなわち
A
人がB
一人一人に魅了されC
、その後、人A
と人がB
お互いに惹かれていません。
したがって、アトラクションのネットワークは(無向)完全な2部グラフを 形成しますKn,n
。また、各人が自分が惹かれている人をランク付けしたと仮定します。これらは、グラフのエッジの重みとして表されます。
結婚はペアリングであるとお互いに魅了されています。各結婚の1人がパートナーと離婚し、お互いに結婚する可能性がある別の結婚がある場合、結婚は不安定です。(A,B)
A
B
ゴール
あなたの仕事は、各人の好みを入力として、各結婚が安定するように各人の結婚を出力する完全なプログラムまたは機能を書くことです。
入力
入力は任意の便利な形式にすることができます。たとえば、重み付きグラフ、設定の順序付きリスト、辞書/関連付けなど。オプションで、総人数を入力として使用できますが、他の入力は許可されません。
出力
出力は任意の便利な形式にすることもできます。たとえば、タプルのリスト、最小エッジカバー、各人にパートナーを関連付ける機能など。唯一の制約は、各結婚が安定していることであり、他の最適化要件はないことに注意してください。
ノート
- ウィキペディアまたはこのNumberphileビデオで、この
O(n^2)
問題を解決するための詳細情報とアルゴリズムを見つけることができます。ただし、任意のアルゴリズムを自由に使用できます。 - 標準的な抜け穴は禁止されています。
- これはcode-golfです。最短回答(バイト単位)が優先されます。
15
アトラクションは対称的です!
—
ルイスメンドー
@LuisMendo私は非現実的な単語の問題の
—
名高い
それはバレンタインデーです(ここではUTC + 8)
—
busukxuan