นี่คือพื้นหลังสำหรับคำถามนี้ เพื่อนและฉันกำลังเล่นเกมที่ทุกคนต้องการให้ของขวัญแก่คนอื่น เพื่อที่จะตัดสินว่าใครควรให้ของขวัญกับใครเราจึงตัดสินใจจับสลาก แต่ปัญหาคือบางคนอาจจะให้ของขวัญด้วยตัวเองซึ่งก็ไม่ใช่เรื่องตลก คุณจะเห็นได้ว่าจำนวนผู้โชคร้ายเช่นนี้คือ 1 ดังนั้นจึงเกิดขึ้นค่อนข้างบ่อย
สำหรับจุดประสงค์นี้การจัดเรียงแบบน่าจะเหมาะอย่างยิ่ง หากฉันสามารถสร้าง dearrangement ได้อย่างเป็นธรรมฉันก็สามารถเลือกหนึ่ง dearrangement และใช้มันเพื่อตัดสินใจว่าใครให้ของขวัญกับใคร
การสร้าง dearrangement แบบสุ่มสามารถทำได้ด้วยวิธีลาสเวกัส แต่ปัญหาคือมันคาดว่าจะมีเวลาพหุนามเท่านั้น ดังนั้นฉันมาถึงปัญหานี้ในการค้นหาการทำลายล้างของฉัน ถ้าฉันสุ่มเลือก i ใน [1, D_n] และใช้อัลกอริธึมเวลาพหุนามกรณีเลวร้ายที่สุด (อย่างมีประสิทธิภาพ) เพื่อให้ได้ i-th dearrangement ก็เสร็จแล้ว