ความซับซ้อนในการค้นหาสูงสุดแบบสองมิติ (MIT OCW 6.006)


9

ในวิดีโอการบรรยายสำหรับMIT OCW 6.006เวลา 43:30

ได้รับ m×n มดลูก A กับ m คอลัมน์และ n แถวซึ่งเป็นอัลกอริธึมการค้นหาสูงสุดแบบสองมิติซึ่งค่าสูงสุดคือค่าใด ๆ ที่มากกว่าหรือเท่ากับเพื่อนบ้านที่อยู่ติดกันอธิบายว่า:

หมายเหตุ: หากมีความสับสนในการอธิบายคอลัมน์ผ่าน nฉันขอโทษ แต่นี่เป็นวิธีที่วิดีโอการบรรยายอธิบายและฉันพยายามที่จะสอดคล้องกับวิดีโอ มันทำให้ฉันสับสนมาก

  1. เลือกคอลัมน์กลาง n/2// มีความซับซ้อนΘ(1)

  2. ค้นหาค่าสูงสุดของคอลัมน์ n/2// มีความซับซ้อน Θ(m) เพราะมี m แถวในคอลัมน์

  3. ตรวจสอบขอบเขต แถวเพื่อนบ้านของค่าสูงสุดหากมีค่ามากกว่าจะพบจุดสูงสุดมิฉะนั้นจะเรียกเก็บเงินคืนT(n/2,m)// มีความซับซ้อนT(n/2,m)

จากนั้นเพื่อประเมินการสอบถามซ้ำผู้สอนการบรรยายกล่าว

T(1,m)=Θ(m) เพราะมันพบค่าสูงสุด

(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m)

ฉันเข้าใจส่วนถัดไปเวลา 52:09 น. ในวิดีโอซึ่งเขาบอกว่าต้องปฏิบัติต่อ mเหมือนค่าคงที่เนื่องจากจำนวนแถวไม่เคยเปลี่ยนแปลง แต่ฉันไม่เข้าใจว่าสิ่งที่นำไปสู่ผลิตภัณฑ์ต่อไปนี้:

(E2)T(n,m)=Θ(m)Θ(logn)

ฉันคิดอย่างนั้นตั้งแต่ m ถือว่าเป็นค่าคงที่จึงถือว่าเป็นเหมือน Θ(1) และกำจัดใน (E1)ข้างบน. แต่ฉันมีเวลายากที่จะข้ามไป(E2). เป็นเพราะเรากำลังพิจารณากรณีของT(n/2) ด้วยค่าคงที่ m?

ฉันคิดว่าสามารถ "เห็น" แนวคิดโดยรวมก็คือ Θ(logn)จะทำการดำเนินการที่แย่ที่สุดสำหรับจำนวนแถว m สิ่งที่ฉันพยายามคิดก็คือจะอธิบายการกระโดดได้อย่างไร(E1) ถึง (E2) เพื่อคนอื่น ๆ เช่นได้รับความเข้าใจที่แท้จริง

คำตอบ:


1

เท่าที่ฉันเข้าใจมันต้องใช้ Θ(m) เวลาในการประเมินองค์ประกอบทั้งหมดในคอลัมน์ที่กำหนดและระบุว่าองค์ประกอบใดเป็นสูงสุดทั่วโลก ที่ไหนΘ(lg(n)) เข้ามาคือในสถานการณ์กรณีที่เลวร้ายที่สุดอัลกอริทึมจะต้องประเมิน lg(n)คอลัมน์ในเมทริกซ์ก่อนค้นหาจุดสูงสุด การทำงานโดยรวมก็จะเป็นΘ(mlg(n))

ตัวอย่างเช่นเมทริกซ์ของคุณมี 32 คอลัมน์และ 8 แถว

  1. คุณใช้คอลัมน์กลางพูดคอลัมน์ 16 คุณประเมินมันและพบว่ายอดสูงสุดทั่วโลกของคอลัมน์ถูกแทนที่โดยองค์ประกอบทางด้านขวา คุณวางคอลัมน์ 1-16 และเน้นคอลัมน์ 17-32
  2. ค้นหาคอลัมน์กลางของเมทริกซ์ที่เหลือซึ่งเป็นคอลัมน์ 24 และคุณประเมินค่าสูงสุดทั่วโลก (นี่คือการประเมินคอลัมน์ที่สองของคุณ) คุณพบว่าคุณต้องย้ายไปทางขวา ดร็อปคอลัมน์ 17-24, เน้นที่ 25-32
  3. ค้นหาตรงกลาง (คอลัมน์ 28) - คุณประเมิน (การประเมินคอลัมน์ที่สาม) และคุณพบว่าคุณต้องย้ายไปทางขวา ดร็อปคอลัมน์ 25 - 28 และมุ่งเน้นที่ 29 - 32
  4. ประเมินคอลัมน์ 30 (การประเมินที่สี่) พบว่าคุณต้องย้ายไปทางขวาวางคอลัมน์ 29-30
  5. ประเมินหนึ่งในคอลัมน์ที่เหลือ (การประเมินคอลัมน์ที่ห้า) และคุณทำเสร็จแล้ว

โดยรวมแล้วคุณประเมินผลคอลัมน์ห้าคอลัมน์เสร็จแล้ว 5 =lg(32) = lg(n) โดยที่ n คือจำนวนคอลัมน์ในเมทริกซ์และ lg เป็นล็อกฐาน 2


2

การวิเคราะห์ที่คุณร่างดูเหมือนจะไม่ถูกต้อง ความซับซ้อนที่ถูกต้องคือO(m) ที่ไหน mเป็นมิติที่ใหญ่กว่าของเมทริกซ์ (แถวหรือคอลัมน์) ดูการวิเคราะห์ที่ถูกต้องอื่น ๆ นี้สำหรับรายละเอียดเพิ่มเติม / ดีขึ้น ส่วนหนึ่งของความผิดพลาดไม่ได้กำหนดความสัมพันธ์ที่เกิดซ้ำT(n,m) ในแง่ของ T(n,m)เท่านั้น (ซึ่งจัดการอย่างถูกต้องในกระดาษ) กระดาษแสดง / ใช้ชุดอนันต์:

T(n)=T(n2)+cnT(n)=T(1)+cn(1+12+14+18+)=O(n)


1
ในความเป็นจริงแล้วคำตอบนี้เป็นคำถามที่ไม่ถูกต้อง! สหกรณ์พูดคุยเกี่ยวกับขั้นตอนวิธีการในการสวดวิดีโอMIT OCW 6.006ในขณะที่คำตอบนี้พูดเกี่ยวกับขั้นตอนวิธีการที่แตกต่างกัน โดยเฉพาะอย่างยิ่งการวิเคราะห์ที่สรุปโดย OP นั้นถูกต้องเกี่ยวกับอัลกอริทึมในวิดีโอนั้น
John L.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.