繁体   English   中英

B+树插入顺序

[英]B+ tree insertion order

有没有办法找到B+树的原始插入顺序?

我有这棵树:

{ [ (1 2) 3 (5 6 7) ] 8 [ (9 10) 11 (12 13) 14 (14 16 17) 18 ( 19 20) ] }

示例树

不。

例如,在您的情况下,最后两个插入可能是7, 1717, 7并且绝对无法分辨哪个是哪个。 确实, 5, 6, 7三者中的一个是在另外两个之后插入的,没有记录哪个是哪个。

这也可以从鸽巢原理中直接看出。 首先,让我们为可以有多少k路 B 树设置一个上限,其中有n东西。

任何具有n事物的b-tree的结构都可以编码为节点大小的流。 从顶层节点的大小,你知道有多少第二层节点,第二层第三层也是如此。 一个节点可以有1..k东西。 节点不能多于元素。 因此,我们可以通过首先指定有多少个节点,然后指定节点的大小来指定 B 树。 (并非所有数字集都是 B 树。)对于 B 树的每个大小s ,都有k^s <= k^n个。 因此nk^n是可以有多少k路 B 树的上限。 这是指数增长。

但是可以插入元素的顺序数是n! . 此函数的增长速度严格快于指数增长,因此您无法从 B 树中恢复顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM