ผูกพันกับพื้นที่สำหรับอัลกอริทึมการเลือก?


11

มีอัลกอริทึมการเลือกที่แย่ที่สุดที่รู้จักกันดีในการค้นหาองค์ประกอบที่ใหญ่ที่สุดของในอาร์เรย์ของจำนวนเต็ม มันใช้วิธีการมัธยฐานของมัธยฐานเพื่อหาเดือยที่ดีพอแบ่งพาร์ติชันอาร์เรย์ที่เข้ามาและจากนั้นทำต่อไปเรื่อย ๆ เพื่อค้นหาองค์ประกอบที่ใหญ่ที่สุดของk kO(n) kk

เกิดอะไรขึ้นถ้าเราไม่ได้รับอนุญาตให้สัมผัสอาร์เรย์ใส่เท่าใดพื้นที่พิเศษจะต้องเพื่อที่จะหาสิ่งที่ 'TH องค์ประกอบที่ใหญ่ที่สุดในเวลาหรือไม่ เราสามารถหาองค์ประกอบที่ใหญ่ที่สุดของในพื้นที่พิเศษและยังคงรันไทม์ไหม? ยกตัวอย่างเช่นการหาองค์ประกอบสูงสุดหรือต่ำสุดใช้เวลาเวลาและพื้นที่ O ( n ) k O ( 1 ) O ( n ) O ( n ) O ( 1 )kO(n)kO(1)O(n)O(n)O(1)

โดยสังหรณ์ใจฉันไม่สามารถจินตนาการได้ว่าเราจะทำได้ดีกว่าพื้นที่แต่มีข้อพิสูจน์เรื่องนี้หรือไม่?O(n)

สามารถชี้ให้คนที่จะมีการอ้างอิงหรือเกิดขึ้นกับข้อโต้แย้งว่าทำไม 'TH องค์ประกอบจะต้องพื้นที่ที่จะพบได้ในเวลาหรือไม่O ( n ) O ( n )n/2O(n)O(n)


คำตอบ:


13

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

Munro และ Raman เสนออัลกอริทึมสำหรับการเลือกที่ทำงานในเวลาในขณะที่ใช้หน่วยเก็บข้อมูลพิเศษO ( 1 / ε ) เท่านั้น (เซลล์) อัลกอริทึมนี้ทำให้อินพุตไม่เปลี่ยนแปลง คุณสามารถเลือกขนาดเล็ก ๆε > 0O(n1+ε)O(1/ε)ε>0

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

อะไรคือสิ่งที่แตกต่างกันไปขั้นตอนวิธีคลาสสิกเป็นทางเลือกของพีให้( k )เป็นอัลกอริทึมที่เลือกแก้สำหรับε = 1 / k อัลกอริทึมA ( k ) แบ่งอาร์เรย์ในบล็อกที่มีขนาดเท่ากันและระบุบล็อกที่มีองค์ประกอบหลายอย่างอยู่ในอันดับซึ่งอยู่ระหว่างตัวกรอง (มีอยู่โดยหลักการของนกพิราบหลุม) บล็อกนี้แล้วจะสแกนหาองค์ประกอบเดือยที่ดีด้วยความช่วยเหลือของอัลกอริทึม( k - 1 ) สมอ recursion เป็นที่น่ารำคาญ( 1 )พีA(k)ε=1/kA(k)A(k-1)A(1)ขั้นตอนวิธี ขนาดบล็อกที่ถูกต้อง (และการคำนวณ) ช่วยให้คุณมีเวลาในการทำงานและความต้องการด้านพื้นที่ตามที่ระบุไว้ข้างต้น

Btw ขั้นตอนวิธีการที่คุณกำลังมองหาถูกตั้งชื่อเมื่อเร็ว ๆ นี้ขั้นตอนวิธีการคงทำงานพื้นที่

ฉันไม่ได้ตระหนักถึงขอบเขตที่ต่ำกว่า

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