พื้นหลัง
สมมติว่ามี2*n
คนแต่งงานและสมมติว่าแต่ละคนจะถูกดึงดูดให้n
คนอื่น ๆ ภายใต้ข้อ จำกัด ที่:
- สถานที่น่าสนใจคือสมมาตร ; เช่นถ้าคนที่
A
จะดึงดูดให้คนB
คนนั้นเป็นที่ดึงดูดให้กับบุคคลB
A
- แรงดึงดูดใจคือการต่อต้าน ; เช่นถ้าบุคคล
A
และบุคคลB
แต่ละคนดึงดูดให้บุคคลC
แล้วบุคคลA
และบุคคลB
จะไม่ดึงดูดซึ่งกันและกัน
ดังนั้นเครือข่ายของสถานที่ท่องเที่ยวรูปแบบ (ไม่มีทิศทาง) ฝ่ายกราฟสมบูรณ์ Kn,n
นอกจากนี้เรายังสมมติว่าแต่ละคนจัดอันดับคนที่พวกเขาสนใจ สิ่งเหล่านี้อาจแสดงเป็นน้ำหนักขอบในกราฟ
การแต่งงานคือการจับคู่(A,B)
ที่A
และB
ดึงดูดซึ่งกันและกัน การแต่งงานไม่แน่นอนหากมีการแต่งงานอีกครั้งที่คน ๆ หนึ่งจากการแต่งงานแต่ละครั้งสามารถหย่าร้างคู่ครองของพวกเขาและแต่งงานกันและทั้งสองจบลงด้วยคนที่พวกเขาอันดับสูงกว่าอดีตคู่ของพวกเขา
เป้าหมาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์ซึ่งใช้ความชอบของแต่ละคนในฐานะอินพุตและเอาท์พุตการแต่งงานสำหรับแต่ละคนเช่นว่าการแต่งงานแต่ละครั้งมีเสถียรภาพ
อินพุต
อินพุตอาจอยู่ในรูปแบบที่สะดวก เช่นกราฟถ่วงน้ำหนักรายการการตั้งค่าเรียงลำดับพจนานุกรม / การมอบหมาย ฯลฯ คุณสามารถเลือกที่จะใส่จำนวนผู้ใช้ทั้งหมดเป็นอินพุต แต่ไม่อนุญาตให้ป้อนข้อมูลอื่น
เอาท์พุต
เอาต์พุตยังสามารถอยู่ในรูปแบบที่สะดวกได้ เช่นรายการของสิ่งอันดับ, ปกขอบน้อยที่สุด, ฟังก์ชั่นที่เชื่อมโยงกับคู่ของพวกเขาแต่ละคน, ฯลฯ โปรดทราบว่าข้อ จำกัด เพียงอย่างเดียวคือการแต่งงานแต่ละครั้งมีเสถียรภาพ, ไม่มีข้อกำหนดอื่น ๆ
หมายเหตุ
- คุณสามารถค้นหาข้อมูลเพิ่มเติมและ
O(n^2)
อัลกอริทึมเพื่อแก้ปัญหานี้ในWikipediaหรือวิดีโอ Numberphileนี้ อย่างไรก็ตามคุณสามารถใช้อัลกอริทึมใด ๆ ได้ฟรี - ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ