Arka fon
Evlenecek 2*ninsanlar olduğunu varsayalım ve her bireyin aşağıdaki nkısıtlamalar altında tam olarak diğer insanlara çekildiğini varsayalım :
- Cazibe simetrik ; yani kişi kişiye
Açekilirse, kişiBkişiyeBçekilirA. - Cazibe antitransistir ; yani kişi
Ave kişininBher biri kişiye ilgi duyuyorsaC, kişiAve kişiBbirbirine çekilmez.
Böylece çekim ağı (yönlendirilmemiş) tam iki taraflı grafiği oluşturur Kn,n . Ayrıca, her bir kişinin ilgilendiği insanları sıraladığını varsayıyoruz. Bunlar grafikte kenar ağırlıkları olarak gösterilebilir.
Bir evlilik bir eşleştirme olduğunu ve birbirlerine çekti. Her evlilikten bir kişinin eşinden boşanabileceği ve birbirleriyle evlenebileceği ve her ikisinin de eski eşlerinden daha üst sıralarda yer aldığı biriyle sonuçlanabileceği başka bir evlilik varsa evlilik kararsızdır .(A,B)AB
Hedef
Göreviniz, her bir kişinin tercihlerini girdi olarak alan ve her bir evliliğin sabit olacağı şekilde her bir kişi için bir evlilik çıkaran eksiksiz bir program veya işlev yazmaktır.
Giriş
Giriş herhangi bir uygun biçimde olabilir; örneğin, ağırlıklı grafik, sıralı tercih listesi, sözlük / dernek, vb. İsteğe bağlı olarak toplam kişi sayısını girdi olarak alabilirsiniz, ancak başka girdiye izin verilmez.
Çıktı
Çıktı ayrıca herhangi bir uygun formatta olabilir; örneğin, tuples listesi, minimal kenar örtüsü , her bir kişiyle partnerini ilişkilendiren bir işlev, vb.
notlar
O(n^2)Bu sorunu Wikipedia veya bu Numberphile videosunda çözmek için daha fazla bilgi ve bir algoritma bulabilirsiniz . Ancak, herhangi bir algoritmayı kullanmakta özgürsünüz.- Standart boşluklar yasaktır.
- Bu kod golfü . En kısa cevap (bayt cinsinden) kazanır.

