一、B+树定义
二、B+树的插入
1、先搜索到某一叶子节点里面
2、检查是否有超过M
3、如果超过了就分裂(平均分,保证每个分裂的节点都大于M/2)
4、分裂了之后再检查上一个节点是否因为分裂又超生了,没有的话就把分裂的这个节点的中间的那个值放到上一个节点如果超生了还是放上去吧,然后这个节点再带着子节点分裂,再往上面检查这样
三、B+树的删除
反过来,主要看siblings
课堂讨论题:
把箱子根据初始容量编号成BST,插入物品的时候从上面开始搜索,搜索到的最小的能装下的箱子就装入。记录每个箱子的实时容量,这样就保证了“把最小的刚好都插入到缝隙”的想法
心得:
B+树由B树发展而来,主要运用于数据库的设计中。根据这一推广的思想,我们还发展出了R树,R树正是我们空间数据库所用到的数据结构。
实际上我们可以看到B树相比BST,具有更大的容量、更多的分支,也就是说更适合我们的多路的选择。类比一下,挺像我们的文件夹的层次。
B+树相比B树而言,有了更方便的操作:只有叶子节点会有我们所用到的元素,这其实是更为方便的。当然B树、B+树都在更便利的同时增大了操作的困难程度,例如节点分裂的问题,这些是我们之前的BST中所没有考虑的。
四、Inverted file index
主要涉及网页查询算法
最关键的部分在于recall等因子的计算,其余的知识点参考收藏的学长的博客
Precision:
R
R
R
R
+
I
R
\frac{R_R}{R_R+I_R}
RR+IRRR
其中RR为相关的数据,IR为不相关的,RN为漏选的相关的,IN为漏选的不相关的
recall:
R
R
R
R
+
R
N
\frac{R_R}{R_R+R_N}
RR+RNRR