30
ฉันจะจับคู่ถุงเท้าจากกองได้อย่างมีประสิทธิภาพได้อย่างไร
เมื่อวานฉันจับคู่ถุงเท้าจากผ้าที่สะอาดและคิดวิธีที่ฉันทำมันไม่มีประสิทธิภาพมาก ฉันทำการค้นหาที่ไร้เดียงสา - เลือกถุงเท้าหนึ่งอันและ "วนซ้ำ" กองเพื่อหาคู่ เรื่องนี้ต้องมีการทำซ้ำมากกว่า n / 2 * n / 4 n = 2 /8 ถุงเท้าโดยเฉลี่ย ในฐานะนักวิทยาศาสตร์คอมพิวเตอร์ฉันคิดว่าฉันจะทำอะไรได้บ้าง แน่นอนว่าการคัดแยก (ตามขนาด / สี / ... ) เป็นสิ่งสำคัญที่จะทำให้ได้โซลูชั่น O (NlogN) การแฮ็กหรือโซลูชันอื่น ๆ ที่ไม่ใช่สถานที่ไม่ใช่ตัวเลือกเพราะฉันไม่สามารถทำซ้ำถุงเท้าของฉันได้ (แม้ว่ามันอาจจะดีถ้าฉันทำได้) ดังนั้นคำถามคือโดยทั่วไป: ด้วยnถุงเท้าคู่หนึ่งที่ประกอบด้วย2nองค์ประกอบ (สมมติว่าถุงเท้าแต่ละคู่มีคู่ที่ตรงกันหนึ่งคู่) วิธีที่ดีที่สุดในการจับคู่พวกเขาให้มีประสิทธิภาพคืออะไรกับพื้นที่พิเศษลอการิทึมมากที่สุด? (ฉันเชื่อว่าฉันสามารถจำจำนวนข้อมูลนั้นได้หากจำเป็น) ฉันจะขอบคุณคำตอบที่กล่าวถึงประเด็นต่อไปนี้: วิธีแก้ปัญหาเชิงทฤษฎีทั่วไปสำหรับถุงเท้าจำนวนมาก จำนวนถุงเท้าที่แท้จริงนั้นไม่ใหญ่มากฉันไม่เชื่อคู่สมรสของฉันและฉันมีมากกว่า 30 คู่ (และมันค่อนข้างง่ายที่จะแยกแยะความแตกต่างระหว่างถุงเท้าของฉันและเธอ; สิ่งนี้สามารถใช้ได้เช่นกัน?) มันเทียบเท่ากับปัญหาความแตกต่างขององค์ประกอบหรือไม่