ฉันได้รับแบบฝึกหัดโชคไม่ดีที่ฉันไม่ประสบความสำเร็จ
มีชุดของรูปสี่เหลี่ยมเป็นและสี่เหลี่ยมผืนผ้า{0} การใช้อัลกอริธึมการกวาดล้างบนเครื่องบินกำหนดว่าครอบคลุมโดยชุดหรือไม่
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับหลักการของอัลกอริทึมบรรทัดกวาดดูที่นี่
ให้เริ่มต้นจากจุดเริ่มต้น. เริ่มแรกเรารู้จักอัลกอริทึมการกวาดบรรทัดเป็นอัลกอริทึมสำหรับการค้นหาจุดตัดเซกเมนต์ของบรรทัดที่ต้องการโครงสร้างข้อมูลสองแบบ:
- ชุดของคะแนนเหตุการณ์ (จัดเก็บจุดสิ้นสุดของส่วนและจุดแยก)
- สถานะ (โครงสร้างแบบไดนามิกสำหรับชุดเซกเมนต์ของเส้นการกวาดที่ตัดกัน)
แนวคิดทั่วไป:สมมติว่าบรรทัดการกวาดเป็นเส้นแนวตั้งที่เริ่มเข้าใกล้ชุดของสี่เหลี่ยมจากด้านซ้าย ทั้งหมดเรียงพิกัดของรูปสี่เหลี่ยมและเก็บไว้ในในการเพิ่มการสั่งซื้อ - ควรใช้เวลาn) เริ่มต้นจากจุดเหตุการณ์แรกสำหรับทุก ๆ จุดกำหนดชุดของรูปสี่เหลี่ยมที่ตัดกันที่พิกัดกำหนดระบุส่วนต่อเนื่องของรูปสี่เหลี่ยมผืนผ้าแยกและตรวจสอบว่าพวกเขาครอบคลุมที่พิกัดปัจจุบันทั้งหมดหรือไม่ ด้วยเป็นต้นไม้ไบนารีมันจะใช้เวลาn) หากส่วนใดส่วนหนึ่งของยังคงเปิดอยู่ไม่ได้ครอบคลุมอย่างสมบูรณ์
รายละเอียด:แนวคิดของอัลกอริทึมการตัดเซกเมนต์คือเซ็กเมนต์ที่อยู่ติดกันตัดกัน จากข้อเท็จจริงนี้เราได้สร้างสถานะและดูแลรักษาตลอดขั้นตอนวิธี ฉันพยายามค้นหาความคิดที่คล้ายกันในกรณีนี้และจนถึงขณะนี้โดยไม่ประสบความสำเร็จสิ่งเดียวที่ฉันสามารถพูดได้ก็คือสี่เหลี่ยมสองรูปตัดกันถ้าพิกัดและตรงกันของพวกเขาทับซ้อนกัน
ปัญหาคือวิธีการสร้างและดูแลรักษาและความซับซ้อนของการสร้างและดูแลรักษาคืออะไร ฉันคิดว่าต้นไม้ Rมีประโยชน์อย่างมากในกรณีนี้ แต่เนื่องจากฉันพบว่ามันยากมากที่จะกำหนดสี่เหลี่ยมผืนผ้าขอบเขตขั้นต่ำโดยใช้ต้นไม้ R
คุณมีความคิดเกี่ยวกับวิธีการแก้ปัญหานี้และโดยเฉพาะอย่างยิ่งวิธีการสร้างหรือไม่?