การรวมรายการของวัตถุที่บอบบาง


19

พื้นหลัง:เจ้าเสี่ยวโพสต์คำถามต่อไปนี้เวลาที่ผ่านมา " มีการเปรียบเทียบที่รู้จักกันใด ๆ เรียงลำดับขั้นตอนวิธีการที่ไม่ได้ลดไปยังเครือข่ายการเรียงลำดับเช่นว่าแต่ละองค์ประกอบจะถูกเปรียบเทียบครั้ง?O(logn) " ดูเหมือนว่าเราติดอยู่กับปัญหาเล็กน้อย ฉันได้พูดคุยปัญหาเดียวกันกับ Valentin Polishchuk ในปี 2009 และเราไปถึงไหนแล้ว

เพื่อให้ได้แนวคิดใหม่ ๆ ฉันพยายามหาคำถามที่ง่ายที่สุดที่มีรสชาติคล้ายกันและไม่น่ารำคาญ ดังนั้นคำถามต่อไปนี้


คำถาม:คุณจะได้รับรายการที่เรียงสองรายการโดยแต่ละรายการมีองค์ประกอบnรายการ คุณสามารถรวมรายการต่างๆเพื่อให้แต่ละองค์ประกอบเปรียบเทียบเฉพาะO(1)ครั้งได้หรือไม่

โดยปกติเอาต์พุตควรเป็นรายการที่เรียงลำดับซึ่งมีองค์ประกอบทั้งหมด2n

[สิ่งนี้กลายเป็นเรื่องไม่สำคัญคำตอบคือ "ไม่"]


คำถามที่ 2:คุณได้รับสองรายการที่เรียงลำดับโดยแต่ละรายการมีองค์ประกอบnรายการ คุณสามารถรวมรายการต่างๆเพื่อให้แต่ละองค์ประกอบมีการเปรียบเทียบO(1)ครั้งเท่านั้นหากคุณได้รับอนุญาตให้ยกเลิกองค์ประกอบส่วนเล็ก ๆ ได้หรือไม่

ผลลัพธ์ที่ได้ควรเป็นรายการที่เรียงลำดับที่มีองค์ประกอบ2nT(n)และ "ถังขยะ" ที่มีองค์ประกอบT(n)คุณสามารถทำให้ค่าขนาดเล็กแค่ไหน การได้รับนั้นไม่สำคัญ สิ่งที่ต้องการควรทำได้ในลักษณะที่ตรงไปตรงมา แต่คุณจะได้ไหมT(n)T(n)=nT(n)=n/100T(n)=o(n)


หมายเหตุ:

  • เราใช้รูปแบบการเปรียบเทียบที่นี่ อัลกอริทึมที่กำหนดเท่านั้นเราสนใจในการรับประกันกรณีที่เลวร้ายที่สุด

  • โปรดทราบว่ารายการทั้งสองมีองค์ประกอบอย่างแน่นอน ถ้าเรามีหนึ่งรายการที่มีองค์ประกอบnรายการและอีกหนึ่งรายการมี1องค์ประกอบคำตอบนั้นชัดเจนว่า "ไม่" แต่ถ้าทั้งสองรายการมีความยาวมันก็ดูเหมือนว่าหนึ่งอาจจะสามารถที่จะทำบางอย่าง "สมดุลภาระ"nn1

  • เวลานี้อัลกอริทึมชนิดใดก็ได้ที่ถูกต้อง หากอัลกอริทึมของคุณใช้เครือข่ายการเรียงลำดับเป็นแบบเอกสารสำเร็จรูปจะถือว่าสมบูรณ์แบบ

  • สำหรับจุดเริ่มต้นนี่คืออัลกอริทึมแบบง่ายที่เปรียบเทียบแต่ละองค์ประกอบเป็นจำนวนมากที่สุด 200 เท่า: ใช้อัลกอริธึมผสานแบบมาตรฐาน แต่บำรุงรักษาเคาน์เตอร์สำหรับส่วนหัวของรายการ เมื่อคุณไปถึง 200 ให้ทิ้งองค์ประกอบ ตอนนี้สำหรับแต่ละองค์ประกอบที่คุณทิ้งคุณได้วางองค์ประกอบ 200 รายการในอาร์เรย์ผลลัพธ์เรียบร้อยแล้ว ดังนั้นคุณมีความ 100T(n)=n/100


8
คุณบอกว่า "ถ้าเรามีรายการหนึ่งรายการที่มีองค์ประกอบ n รายการและอีกรายการที่มี 1 รายการคำตอบก็คือไม่ชัดเจน" กรณีที่มีองค์ประกอบ n ในแต่ละรายการไม่ใช่ปัญหาทั่วไปหรือไม่ ตัวอย่างเช่นหากเราสัญญาว่าองค์ประกอบทั้งหมดในรายการที่สองยกเว้นองค์ประกอบแรกนั้นใหญ่กว่าองค์ประกอบทั้งหมดในรายการแรกสิ่งนี้จะไม่ลดปัญหาแรกหรือไม่
Robin Kothari

@Robin: ใช่ฉันไม่ได้ถามคำถามที่ไม่สำคัญเลยขอบคุณ การสังเกตของคุณดูเหมือนว่าจะให้ผูกพันลดลงถ้าเรายืนยันในการมีทุกองค์ประกอบเรียง ให้ฉันเพิ่มคำถามเล็กน้อย ...Ω(logn)
Jukka Suomela

และในสิ่งมหัศจรรย์คนกรณีที่สิ่งที่เป็นจุดของความหมายที่แปลกดูเหมือนจะอยู่ในคำถามที่ 2: ถ้าเราสามารถทำให้มีขนาดเล็กมากบางทีเราอาจจะใช้สิ่งที่ต้องการ merge sort ไปเกือบจะแก้ปัญหาเดิมและกังวลเกี่ยวกับส่วนเล็ก ๆ ขององค์ประกอบในถังขยะในภายหลัง T(n)
Jukka Suomela

คำตอบ:


5

ไม่อัลกอริทึมดังกล่าวไม่สามารถอยู่ได้

สมมติเปรียบเทียบต่อองค์ประกอบที่จะได้รับอนุญาตt

2t2t+1t+1

nn/2tn/2t

to(n)

ในบันทึกด้านข้างดูเหมือนว่าเป็นไปได้ที่จะจับคู่ขอบเขตนี้ด้วยอัลกอริธึมที่เปรียบเทียบองค์ประกอบทั้งหมดกับบันทึกขนาดของส่วนโดยรอบของรายการอื่น หากเป็นที่สนใจฉันจะพยายามหารายละเอียด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.