b-k-d樹 原理 圖文解析

背景

前文介紹了 k-d樹k-d-b樹 今天再來這個b-k-d樹已經幾乎沒啥可以參考的資料了
只能硬啃兩篇文章了
一個是:medium
一個是發明者的論文

挺好的,人還是要耐着性子讀一些難啃的東西

開始介紹

關鍵點

這個b-k-d樹是基於k-d-b樹再做的改進,整體的結構是個森林。。(多個k-d-b樹)

在這裏插入圖片描述

前文介紹,k-d-b樹在做靜態查詢的時候效果特別好,但是動態插入就不好了。

爲了解決這種問題,作者研究了這種炸天的算法,用一個森林來做。。

仔仔細細地看插入算法:

在這裏插入圖片描述

在內存中有一個完全二叉樹作爲buffer,size=M。外部存儲(硬盤)裏保存的第i棵樹,要麼是空的,要麼是2^i * M 這麼大

1、每次插入的時候,如果buffer沒滿,那就直接在內存裏插入

2、如果內存沒滿,return;如果滿了,找到第一個空的樹,將前面所有做merge!

舉個例子!

像上面這個圖,內存M滿了

  • 第0棵樹,size=2^0 * M = M
  • 第1棵樹,size=2^1 * M = 2M
  • 第2棵樹,空的,這時候merge的話,就正好是 M+M+2M = 2^2 * M = 4M

秒啊,數學之美

在這裏插入圖片描述

雖然沒全搞懂,但是搞懂到這兒就已經有很開心的感覺,得到了正反饋,後面有機會繼續研究吧!學無止境!耐住性子好好讀文章,終究會讀懂的,不要害怕,不要着急,奧利給!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章