1. 程式人生 > >利用球樹搜尋最近鄰

利用球樹搜尋最近鄰

  • 使用球樹找出給定目標的最近鄰方法是首選自上而下貫穿整棵樹找出包含目標點所在的葉子,並在這個球裡面找出與目標點最近鄰的點,這將確定出目標點距離它的最近鄰點的一個上限值,
  • 然後跟KD樹查詢一樣,檢查兄弟結點,如果目標點到兄弟結點中心的距離超過兄弟結點的半徑與當前的上限值之和,那麼兄弟結點裡不可能存在一個更近的點,否則的話,必須進一步檢查位於兄弟結點一下的子樹。
  • 檢查完兄弟結點後,我們向父結點回溯,繼續搜尋最近鄰值。當回溯到根節點時,此時的最小近鄰值就是最終的搜尋結果。
  • 從上面的描述可以看出,KD樹在搜尋路徑優化時使用的時候兩點之間的距離來判斷,而球樹使用的是兩邊之和大於第三邊來判斷,相對來說球樹的判斷更加複雜,但是卻避免了更多的搜尋。