Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

BSP Trees เป็นโครงสร้างค้นหาหลายมิติ (Multi-Dimensional Search Structure)

บทนำ: จาก 1D ไปสู่ Multi-D

Spatial Search Structures มาจากไอเดียเดียวกับ Symbolic Data (เช่นรายชื่อ) ในยุค 60-70s: เรียงลำดับ + Binary Search = O(log n) แทน O(n) ของ Sequential Search

ถ้าต้องการ Insert/Delete พร้อมรักษาลำดับ → ต้องใช้ Dynamic Structure (Pointers) → Binary Search Tree (BST)

BST บน Real Line (1D)

BST แทน Set ของ Integers A = {1,2,5,6,7,9} บน Real Line
ค้นหาจุด: Insert จุด → ตาม Path ของ Nested Intervals ที่มีจุด → Balanced Tree = O(log n) Steps
Tree เอง Encode ส่วนของ Search Algorithm (ตัดสินใจลำดับการค้นหา)

Partitioning Trees = Generalization ของ BST ไป Multi-D

  • สร้าง Partitioning Tree ≈ Geometric Version ของ Quick Sort
  • Insert/Delete = Merge Trees ≈ Merge Sorted Lists ใน Merge Sort
  • แตกต่าง: จุดใน >1D ไม่แบ่ง Space ได้ → ต้องใช้ Hyperplanes แทน
  • Hyperplanes แบ่ง Region เป็น 2 Half-spaces เสมอ ไม่ว่าจะกี่มิติ

สรุป

BSP Trees นำแนวคิด BST (1D) ขยายไป Multi-D โดยใช้ Hyperplanes แทน Points การ Partition แบบ Recursive สร้างโครงสร้างที่รองรับ Spatial Queries ได้อย่างมีประสิทธิภาพ