Latar Belakang
Misalkan ada 2*n
orang yang akan menikah, dan anggap lebih jauh bahwa setiap orang tertarik pada n
orang lain persis di bawah batasan yang:
- Ketertarikan itu simetris ; yaitu jika orang
A
tertarik pada orangB
, maka orangB
tersebut tertarik pada orang tersebutA
. - Ketertarikan bersifat antitransitif ; yaitu jika orang
A
dan orangB
saling tertarik kepada orangC
, maka orangA
dan orangB
tersebut tidak saling tertarik.
Dengan demikian jaringan tarik-menarik membentuk grafik bipartit lengkap (tidak terarah)Kn,n
. Kami juga berasumsi bahwa setiap orang memiliki peringkat orang yang mereka sukai. Ini dapat direpresentasikan sebagai bobot tepi dalam grafik.
Sebuah pernikahan adalah pasangan (A,B)
mana A
dan B
tertarik satu sama lain. Pernikahan tidak stabil jika ada pernikahan lain di mana satu orang dari setiap pernikahan dapat menceraikan pasangan mereka dan menikah satu sama lain dan keduanya berakhir dengan seseorang yang mereka peringkat lebih tinggi dari mantan pasangan mereka.
Tujuan
Tugas Anda adalah menulis program atau fungsi lengkap yang mengambil preferensi setiap orang sebagai input dan menghasilkan pernikahan untuk setiap orang sehingga setiap pernikahan stabil.
Memasukkan
Input mungkin dalam format apa pun yang nyaman; misalnya, grafik tertimbang, daftar preferensi yang diurutkan, kamus / asosiasi, dll. Anda dapat memilih jumlah total orang sebagai input, tetapi tidak ada input lain yang diizinkan.
Keluaran
Output juga bisa dalam format apa pun yang nyaman; misalnya daftar tupel, penutup tepi minimal , fungsi yang menghubungkan setiap orang dengan pasangannya, dll. Perhatikan bahwa satu-satunya kendala adalah bahwa setiap pernikahan stabil, tidak ada persyaratan optimal lainnya.
Catatan
- Anda dapat menemukan lebih banyak informasi dan
O(n^2)
algoritma untuk menyelesaikan masalah ini di Wikipedia atau video Numberphile ini . Namun, Anda bebas menggunakan algoritma apa pun. - Celah standar dilarang.
- Ini adalah kode-golf . Jawaban terpendek (dalam byte) menang.