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

秒啊,数学之美

在这里插入图片描述

虽然没全搞懂,但是搞懂到这儿就已经有很开心的感觉,得到了正反馈,后面有机会继续研究吧!学无止境!耐住性子好好读文章,终究会读懂的,不要害怕,不要着急,奥利给!

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