การพิสูจน์ความซับซ้อนของเวลาสำหรับการนำทรีเซ็กเมนต์ของปัญหาผลรวมระยะไกล


10

ผมเข้าใจว่าต้นไม้ส่วนที่สามารถใช้ในการหาผลรวมของอาร์เรย์ย่อยของ และที่สามารถทำในนี้เวลาตามกวดวิชาที่นี่AO(logn)

แต่ฉันไม่สามารถพิสูจน์ได้ว่าเวลาสอบถามย่อมเป็นn) ลิงค์นี้ (และอื่น ๆ อีกมากมาย) บอกว่าเราสามารถพิสูจน์ได้ว่าในแต่ละระดับจำนวนสูงสุดของโหนดประมวลผลเป็นและอื่น ๆn)O(เข้าสู่ระบบn)4O(4เข้าสู่ระบบn)=O(เข้าสู่ระบบn)

แต่เราจะพิสูจน์เรื่องนี้ได้อย่างไรโดยความขัดแย้ง?

และถ้าเป็นเช่นนั้นถ้าเราจะใช้เซกเมนต์ต้นไม้เพื่อหาผลรวมของอาร์เรย์มิติที่สูงขึ้นการพิสูจน์จะขยายออกไปได้อย่างไร?

ตัวอย่างเช่นฉันสามารถคิดถึงการหาผลรวมย่อยของเมทริกซ์ย่อยโดยแบ่งเมทริกซ์ดั้งเดิมออกเป็น 4 ส่วน (คล้ายกับช่วงเวลาแบ่งครึ่งในอาร์เรย์เชิงเส้น) สร้างต้นไม้เซ็กเมนต์ Quadrant แต่หลักฐานพิสูจน์ฉัน


โครงสร้างของเซกเมนต์ทรีคือ O (n), การสืบค้นคือ O (log n) และการอัพเดทคือ O (log N) ประโยชน์ที่จะได้รับจากการรวมอาเรย์นั้นขึ้นอยู่กับความซับซ้อนในการอัพเดท
Nurlan

คำตอบ:


11

การเรียกร้องคือว่ามีมากที่สุด 2โหนดที่ขยายในแต่ละระดับ เราจะพิสูจน์สิ่งนี้ด้วยความขัดแย้ง

พิจารณาต้นไม้ส่วนที่ระบุด้านล่าง

ต้นไม้แบ่งส่วน

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

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