1
ความเข้มข้นที่คมชัดสำหรับการเลือกผ่านการแบ่งแบบสุ่ม?
อัลกอริธึมธรรมดาทั่วไปสำหรับการค้นหาองค์ประกอบค่ามัธยฐานในอาร์เรย์ของจำนวนคือ:AAAnnn ตัวอย่างองค์ประกอบจากพร้อมการเปลี่ยนเป็นn3/4n3/4n^{3/4}AAABBB จัดเรียงและค้นหาอันดับองค์ประกอบและของBBB|B|±n−−√|B|±n|B|\pm \sqrt{n}lllrrrBBB ตรวจสอบว่าและอยู่บนด้านตรงข้ามของค่ามัธยฐานของและว่ามีมากที่สุดองค์ประกอบในระหว่างและสำหรับบางคนคงเหมาะสม0 ล้มเหลวหากสิ่งนี้ไม่เกิดขึ้นlllrrrAAACn−−√CnC\sqrt{n}AAAlllrrrC>0C>0C > 0 มิฉะนั้นหาค่ามัธยฐานโดยการจัดเรียงองค์ประกอบของระหว่างและAAAlllrrr ไม่ยากที่จะเห็นว่าสิ่งนี้ทำงานในเวลาเชิงเส้นและประสบความสำเร็จกับความน่าจะเป็นสูง (เหตุการณ์ที่ไม่ดีทั้งหมดเป็นความเบี่ยงเบนขนาดใหญ่ห่างจากความคาดหวังของทวินาม) อัลกอริธึมสำรองสำหรับปัญหาเดียวกันซึ่งเป็นธรรมชาติมากกว่าที่จะสอนให้นักเรียนที่เห็นการเรียงลำดับอย่างรวดเร็วเป็นสิ่งที่อธิบายไว้ที่นี่: การเลือกแบบสุ่ม นอกจากนี้ยังเป็นเรื่องง่ายที่จะเห็นว่าสิ่งนี้มีระยะเวลาที่คาดว่าจะเป็นเส้นตรง: พูดว่า "รอบ" เป็นลำดับของการเรียกซ้ำที่สิ้นสุดเมื่อมีการแบ่ง 1 / 4-3 / 4 จากนั้นสังเกตว่าความยาวที่คาดหวังของ รอบที่มากที่สุด 2. (ในการดึงครั้งแรกของรอบความน่าจะเป็นของการแยกที่ดีคือ 1/2 และหลังจากนั้นเพิ่มขึ้นตามจริงแล้วอัลกอริทึมถูกอธิบายเพื่อให้ความยาวรอบถูกครอบงำโดยตัวแปรสุ่มทางเรขาคณิต) ดังนั้นตอนนี้คำถาม: เป็นไปได้หรือไม่ที่จะแสดงว่าการเลือกแบบสุ่มทำงานในเวลาเชิงเส้นที่มีความน่าจะเป็นสูงหรือไม่? เรามีรอบและแต่ละรอบมีความยาวอย่างน้อยด้วยความน่าจะเป็นที่มากที่สุดดังนั้นการรวมกันทำให้เวลาในการทำงานคือกับความน่าn)O(logn)O(logn)O(\log n)2 - k + 1 O ( n บันทึกบันทึกn ) 1 - 1 / O ( บันทึกn )kkk2−k+12−k+12^{-k+1}O(nloglogn)O(nloglogn)O(n\log\log n)1−1/O(logn)1−1/O(logn)1-1/O(\log …