การเลือกแบบสุ่ม


14

อัลกอริทึมการเลือกแบบสุ่มมีดังต่อไปนี้:

อินพุต: อาร์เรย์ของn (แตกต่างกันเพื่อความง่าย) ตัวเลขและตัวเลขk [ n ]Ank[n]

เอาท์พุท: "อันดับองค์ประกอบ" ของA (กล่าวคือหนึ่งในตำแหน่งkถ้าAถูกจัดเรียง)kAkA

วิธี:

  • หากมีองค์ประกอบหนึ่งในให้ส่งคืนA
  • เลือกองค์ประกอบ ("pivot") อย่างสม่ำเสมอโดยการสุ่มp
  • คำนวณชุดและR = { a A : a > p }L={aA:a<p}R={aA:a>p}
  • ถ้ากลับยศkองค์ประกอบของL|L|kkL
  • มิฉะนั้นส่งคืนอันดับองค์ประกอบของRk|L|R

ฉันถูกถามคำถามต่อไปนี้:

สมมติว่าดังนั้นคุณกำลังมองหาค่ามัธยฐานและปล่อยให้อัลฟ่า( 1 / 2 , 1 ) จะคงที่ ความน่าจะเป็นที่การเรียกซ้ำครั้งแรกคือชุดที่มีค่ามัธยฐานมีขนาดมากที่สุดα n ?k=n/2α(1/2,1)αn

ฉันถูกบอกว่าคำตอบคือโดยมีเหตุผล "เดือยที่เลือกควรอยู่ระหว่าง1 - αและαคูณอาร์เรย์เดิม"2α11αα

ทำไม? ในฐานะที่เป็น , สิ่งที่องค์ประกอบได้รับการแต่งตั้งเป็นเดือยเป็นทั้งขนาดใหญ่หรือขนาดเล็กกว่ามากกว่าครึ่งหนึ่งองค์ประกอบเดิม ค่ามัธยฐานจะอยู่ใน subarray ที่ใหญ่กว่าเสมอเนื่องจากองค์ประกอบใน subarray ที่แบ่งพาร์ติชันนั้นน้อยกว่าเดือยα(0.5,1)

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

ถ้าเดือยอยู่ในช่วงครึ่งหลังของอาเรย์ดั้งเดิม (มากกว่าครึ่งขององค์ประกอบ) ค่ามัธยฐานจะครึ่งแรกที่ใหญ่กว่าแน่นอนด้วยเหตุผลเดียวกันทุกอย่างก่อนที่เดือยจะถือว่าเล็กกว่า

ตัวอย่าง:

3 4 5 8 7 9 2 1 6 10

ค่ามัธยฐานคือ 5

สมมติว่าเดือยที่เลือกคือ 2 ดังนั้นหลังจากการวนซ้ำครั้งแรกมันจะกลายเป็น:

1 2 .... ส่วนที่ใหญ่กว่า ....

เฉพาะ1และ2ถูกสลับหลังจากการวนซ้ำครั้งแรก หมายเลข 5 (ค่ามัธยฐาน) ยังคงอยู่ในครึ่งแรกที่มากขึ้น (ที่สอดคล้องกับเดือย 2) ประเด็นคือค่ามัธยฐานมักจะอยู่ที่ครึ่งที่มากกว่าจะมีโอกาสได้อยู่ใน subarray ขนาดเล็กได้อย่างไร


เราไม่ได้นั่งบรรยายของคุณดังนั้นโปรดอธิบายวิธีการ
กราฟิลส์

โดยไม่ทราบว่าอัลกอริทึม precises ที่คุณกำลังพูดถึงคำถามของคุณไม่สามารถอ่านได้ ดูเหมือนว่าคุณจะใช้ในหลาย ๆ ความสามารถ ฉันพยายามแก้ไข แต่ไม่แน่ใจว่าฉันเข้าใจความหมาย โปรดแก้ไขเพื่อให้คำถามชัดเจน โหวตให้ปิดจนกว่าจะถึงตอนนั้น .5
ราฟาเอล

เป็นอัลกอริธึมการเลือกโดยใช้วิธีการสุ่มซึ่งตรงข้ามกับวิธีการที่กำหนด
Amumu

มีหลายวิธีในการเลือกองค์ประกอบแบบสุ่ม
Raphael

2
@ Amumu: ฉันแก้ไขเพื่ออธิบายอัลกอริทึม ในฟอรัมเช่นนี้ทุกคนจะไม่ทราบว่าคุณกำลังพูดถึงอะไรและมีวิธีการสุ่มเลือกที่แตกต่างกันมากในการวิเคราะห์ที่ง่ายกว่า
Louis

คำตอบ:


12

สมมติว่าอาเรย์ของคุณมีองค์ประกอบตัว ดังที่คุณได้บันทึกไว้ค่ามัธยฐานจะอยู่ในส่วนที่ใหญ่กว่าเสมอหลังจากพาร์ติชันแรก ส่วนที่มีขนาดใหญ่มีขนาดที่มากที่สุดα nถ้าส่วนหนึ่งมีขนาดเล็กมีขนาดอย่างน้อย( 1 - α ) n นี้เกิดขึ้นเมื่อคุณเลือกเดือยที่ไม่ได้เป็นหนึ่งในที่เล็กหรือใหญ่ที่สุด( 1 - α ) nองค์ประกอบ เพราะα > 1 / 2คุณรู้ว่าสิ่งเหล่านี้เป็นชุดเคลื่อนดังนั้นความน่าจะเป็นของการกดปุ่มหนึ่งใน pivots ที่ไม่ดีเป็นเพียง2 - 2 αและ1 -nαn(1α)n(1α)nα>1/222α 112+2α=2α1


ขอบคุณสำหรับคำตอบ. ฉันยังมีบางสิ่งที่ไม่ชัดเจน ดังนั้นα> 1/2 มีอะไรเกี่ยวข้องกับเซตที่แยกออกจากกัน? ฉันคิดว่าเมื่อเรามีชุดไม่ต่อเนื่องเสมอกับวิธีนี้โดยไม่คำนึงถึงขนาด subarray
Amumu

1α<1/2(1α)n<n(1α)n

สิ่งสุดท้ายสิ่งหนึ่ง: เดือยที่ไม่ดี / สิ่งที่ดีต้องทำอย่างไร เท่าที่ฉันรู้เดือยที่ดีโดยทั่วไปจะอยู่ในช่วง 25-75 (ซึ่งแยกอาร์เรย์ดั้งเดิมในจาก 25% -75%) และที่ไม่ดีอยู่นอกช่วงนั้นและที่เลวร้ายยิ่งมักจะเริ่มต้นหรือสิ้นสุดของเดิม แถว แต่นี่?
Amumu

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