การเรียงลำดับจำนวนเต็มเป็นไปได้ใน O (n) ในโมเดล transdichotomous หรือไม่?


9

สำหรับความรู้ของฉันไม่มีอัลกอริทึมกรณีที่เลวร้ายที่สุดที่แก้ปัญหาต่อไปนี้:O(n)

กำหนดลำดับความยาวnซึ่งประกอบด้วยจำนวนเต็ม จำกัด หาการเปลี่ยนแปลงที่ทุกองค์ประกอบน้อยกว่าหรือเท่ากับตัวตายตัวแทนของมัน

แต่มีข้อพิสูจน์ว่ามันไม่มีอยู่ในแบบจำลองการคำนวณแบบ transdichotomous ?


โปรดทราบว่าฉันไม่ได้ จำกัด ช่วงของจำนวนเต็ม ฉันไม่ได้ จำกัด การแก้ปัญหาเพื่อเปรียบเทียบทั้งสองประเภท


เท่าที่ฉันรู้อาจมีอัลกอริทึมเวลาO(n)สำหรับ SAT! ดังนั้นคำตอบคือไม่
Lembik

5
AFAIK นี่ยังคงเป็นปัญหาเปิดอยู่
Juho

2
ฉันไม่รู้ว่าจะมีคำตอบที่มีความหมายหรือไม่จนกว่าคุณจะระบุรูปแบบการคำนวณที่คุณใช้อยู่เพราะคุณไม่ได้ จำกัด คอมพิวเตอร์ของคุณในการเปรียบเทียบและการแลกเปลี่ยน มีเพียง RAM และการเปรียบเทียบสองหมายเลขอาร์กิวเมนต์จากเอนโทรปีให้เวลาถึงแม้สำหรับคอมพิวเตอร์ transdichotomous นิดถ้าแทนการแลกเปลี่ยนและการเปรียบเทียบการเรียงลำดับเป็นงานระดับประถมศึกษาก็สามารถทำได้ใน(1) ถ้าใส่จำนวนเต็มในสถานที่ที่เหมาะสมคือการดำเนินการประถม(N) คุณมีรูปแบบการเปรียบเทียบที่สลับการเปรียบเทียบที่เฉพาะเจาะจงหรือไม่? Ω(nlog(n))Θ(1)Θ(n)
Lieuwe Vinkhuijzen

2
@LieuweVinkhuijzen คำถามของฉันระบุโมเดลการคำนวณ transdichotomous ในภาษาอังกฤษแบบธรรมดา: รูปแบบการคำนวณที่ขนาดคำของเครื่องมีขนาดใหญ่พอที่จะถือจำนวนเต็มของปัญหา ดังนั้นการเปรียบเทียบจำนวนเต็มสองตัวใด ๆ ก็คือ O (1) แต่เป็นการบวกการคูณและอื่น ๆ ในรูปแบบของการคำนวณนี้สึกกร่อนผูกพันได้รับการตีดูฮั่น Yijie (2004), "ตายตัวเรียงลำดับใน O (n log บันทึก n) เวลาและพื้นที่เชิงเส้น"
orlp

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

คำตอบ:


4

จำนวนเต็มสามารถเรียงลำดับเสถียรในเวลาพร้อมพื้นที่เพิ่มเติมO(n)O(1)แม่นยำยิ่งขึ้นหากคุณมีจำนวนเต็มจำนวนในช่วงสามารถเรียงลำดับได้ในเวลา O (n)n[1,nc]

นี่แสดงให้เห็นเพียงไม่กี่ปีที่ผ่านมาโดยทีมงานรวมถึง Mihai Pătrașcu (ซึ่งน่าแปลกใจที่ไม่มีใครคุ้นเคยกับงานของเขา) มันเป็นผลลัพธ์ที่น่าทึ่งซึ่งทำให้ฉันประหลาดใจที่คนอื่นไม่รู้เพราะนั่นหมายความว่าปัญหาการเรียงลำดับจำนวนเต็ม (ตามหลักวิชา) ได้รับการแก้ไข

มีอัลกอริทึมที่ใช้งานได้จริง (ตามที่ระบุไว้ในกระดาษด้านบน) หากคุณได้รับอนุญาตให้แก้ไขคีย์ โดยทั่วไปคุณสามารถบีบอัดจำนวนเต็มเรียงมากกว่าที่คุณสามารถบีบอัดจำนวนเต็มไม่เรียงลำดับและพื้นที่พิเศษที่คุณได้รับจะเท่ากับหน่วยความจำพิเศษที่จำเป็นในการจัดเรียงฐานราก พวกเขายังให้อัลกอริทึมที่ไม่สามารถใช้งานได้ซึ่งรองรับคีย์แบบอ่านอย่างเดียว


1
จากสิ่งที่ฉันสามารถเข้าใจจากนามธรรมนี้ไม่ได้ทั่วไป - มันสามารถเรียงลำดับคำพูดถึงในขนาด(n) คำถามของฉันพูดถึงจำนวนเต็มที่ไม่ได้ จำกัด อย่างชัดเจน lognO(n)
orlp

@orlp อัลกอริทึมที่สามในกระดาษพูดถึงจำนวนเต็มความยาว
นามแฝง

1
บางทีฉันกำลังอ่านผิด แต่ฉันสามารถเห็นคำอธิบายของวิธีการลดการใช้หน่วยความจำของอัลกอริธึมการเรียงลำดับจำนวนเต็มแบบไม่ จำกัด ข้อความจากนามธรรม (เหมืองเน้น): "อีกคำถามที่น่าสนใจคือกรณีของพลที่นี่เรานำเสนอการเปลี่ยนแปลงกล่องดำจาก RAM ใดเรียงลำดับขั้นตอนวิธีขั้นตอนวิธีการเรียงลำดับซึ่งใช้เพียง O (1) พื้นที่พิเศษและมี. เดียวกัน เวลาทำงาน " c
orlp

3
ยกโทษให้ฉัน แต่ในสถานะปัจจุบันคำตอบนี้ไม่ตอบคำถามเลย ฉันอย่างชัดเจนบอกว่าเลขจะไม่กระโดด คำตอบนี้แก้ปัญหาที่แตกต่างอย่างสิ้นเชิง
orlp

1
จุดสุดท้ายคือตอนนี้ไม่ได้อยู่ในตัวอักษรขนาดเล็ก :)
orlp

-1

สำหรับจำนวนเต็มคุณสามารถใช้การจัดเรียง Radix มันสร้างที่เก็บข้อมูลแล้วเรียงลำดับรายการตัวเลขในโดยที่คือขอบเขตบนของขนาดเป็นบิตของจำนวนเต็มใด ๆ และจำนวนองค์ประกอบที่จะเรียงลำดับO(bn)bn

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


5
ยินดีต้อนรับ! สิ่งที่คุณพูดนั้นเป็นความจริงอย่างสมบูรณ์ แต่ฉันไม่คิดว่ามันจะตอบคำถาม คำถามถามเพื่อเป็นการพิสูจน์ว่าอัลกอริทึมที่ต้องการไม่มีอยู่ในรูปแบบเฉพาะของการคำนวณ เพียงแค่บอกว่าไม่มีวิธีการดังกล่าวเป็นที่รู้จักไม่ได้พิสูจน์ว่าไม่มีอยู่จริง
David Richerby

ที่จริงแล้วขคงที่ในปัญหาของเราฉันคิดว่าอัลกอริทึมนี้อยู่ใน o (n)
RFC 2549

2
คำถามบอกว่าไม่มีอะไรเกี่ยวกับเป็นค่าคงที่ แค่บอกว่าเรามีจำนวนตัวเลขเหล่านั้นอาจมีขนาดใหญ่โดยพลการ (นอกจากนี้ก็อาจจะเพียงแค่พิมพ์ผิดในความคิดเห็นของคุณ แต่ทราบว่าและเป็นสองสิ่งที่แตกต่างกันมาก.)bnO(n)o(n)
เดวิด Richerby

ใช่แน่นอนพิมพ์ผิด) ในคำถามของเขาในขณะที่คุณคิดว่าจำนวนที่เหมาะสมในคำยาว b มันจะกลายเป็นค่าคงที่
RFC 2549

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