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


39

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

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

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

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


2
ฉันไม่เข้าใจคำถาม: อัลกอริธึมเรียงตามลำดับดูเหมือนจะสอดคล้องกับคำขอของคุณ เช่นการจัดเรียงผสานเป็นอัลกอริทึมการเรียงลำดับแบบคลาสสิกและไม่ได้ทำการเปรียบเทียบมากกว่าการเปรียบเทียบต่อองค์ประกอบ บางทีคุณกำลังถามเกี่ยวกับอัลกอริทึมการเรียงลำดับแบบขนาน ? logn
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(log2n)
Chao Xu

1
(a1,,an)(b1,,bn)nlgn

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

คำตอบ:


17

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

O(logn)O(1)

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


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

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

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