อัลกอริทึมการเรียงลำดับเช่นว่าองค์ประกอบแต่ละรายการมีการเปรียบเทียบ


39

มีอัลกอริธึมการเรียงลำดับการเปรียบเทียบใด ๆ ที่รู้จักซึ่งไม่ลดการจัดเรียงเครือข่ายเช่นนั้นแต่ละองค์ประกอบถูกเปรียบเทียบครั้งหรือไม่O(log⁡n)

เท่าที่ฉันรู้วิธีเดียวที่จะเรียงลำดับด้วยการเปรียบเทียบในแต่ละองค์ประกอบคือการสร้างเครือข่ายการเรียงลำดับ AKS สำหรับอินพุตnและเรียกใช้อินพุตบนเครือข่ายการเรียงลำดับO(log⁡n)n

AKS นั้นไม่ใช่เรื่องง่ายที่จะนำไปใช้และมีปัจจัยคงที่ที่ใช้ไม่ได้ดังนั้นจึงมีแรงจูงใจในการค้นหาอัลกอริธึมอื่น ๆ

อัลกอริทึมที่มีการเปรียบเทียบต่อรายการซึ่งดูเหมือนจะไม่ได้บ่งบอกถึงเครือข่ายการเรียงลำดับที่จะนำเสนอที่นี่ (iirc นี่เป็นครั้งแรกที่นำเสนอโดยRob Johnsonในการสัมมนาอัลกอริทึมของ Stony Brook)O(log2⁡n)


2
ฉันไม่เข้าใจคำถาม: อัลกอริธึมเรียงตามลำดับดูเหมือนจะสอดคล้องกับคำขอของคุณ เช่นการจัดเรียงผสานเป็นอัลกอริทึมการเรียงลำดับแบบคลาสสิกและไม่ได้ทำการเปรียบเทียบมากกว่าการเปรียบเทียบต่อองค์ประกอบ บางทีคุณกำลังถามเกี่ยวกับอัลกอริทึมการเรียงลำดับแบบขนาน ? log⁡n
— Jeremy

4
@ Jeremy: ถ้าคุณผสานสองรายการและ( ข1 , . . . , ขn )คุณอาจจะจบลงเมื่อเทียบ1กับแต่ละของข1 , . . , b n , นั่นคือ, Ω ( n )การเปรียบเทียบต่อหนึ่งองค์ประกอบ และนี่เป็นเพียงขั้นตอนเดียว "ผสาน" แน่นอนว่าค่าเฉลี่ย(a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)จำนวนการเปรียบเทียบนั้นค่อนข้างเล็ก แต่คำถามก็เกี่ยวกับความซับซ้อนของตัวพิมพ์ใหญ่ที่สุด
— Jukka Suomela

6
ฉันเชื่อว่าเป็นไปได้ เครือข่ายการเรียงลำดับเป็นข้อมูลที่หลงลืมและมีวิธีการเปรียบเทียบที่กำหนดไว้ล่วงหน้า แต่อัลกอริทึมการเรียงลำดับอาจสามารถเลือกระหว่างชุดปฏิบัติการที่แตกต่างกันขึ้นอยู่กับข้อมูล หนึ่งสามารถปรับเปลี่ยนการจัดเรียงผสานลงในอัลกอริทึมด้วยการเปรียบเทียบสำหรับแต่ละองค์ประกอบและดูเหมือนจะไม่ได้บ่งบอกถึงเครือข่ายการเรียงลำดับreddit.com/comments/9jqsi/…O(log2⁡n)
— Chao Xu

1
(a1,…,an)(b1,…,bn)nlg⁡n

2
ขณะนี้มีคำถามที่เกี่ยวข้องใหม่ (แต่หวังว่าง่ายกว่ามาก): cstheory.stackexchange.com/questions/8073/…
— Jukka Suomela

คำตอบ:


17

เมื่อพูดถึงเรื่องนี้กับ Michael T. Goodrich ดูเหมือนว่าอัลกอริทึมการเรียงลำดับแบบขนานโดย Cole สำหรับ EREW PRAM ทำงานได้ ดู

O(log⁡n)O(1)

มีการกำหนดส่วนขยายของอัลกอริทึมนั้นสำหรับเครื่องตัวชี้แบบขนาน


เราอยากรู้ว่าคุณเป็นใคร! : D
— Tayfun จ่าย

@someone คือ Sergio Cabello
— ใครบางคน

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