我偶然发现了Wikipedia page:
我读到了底部链接的课堂笔记pdf,但是它对数据结构本身有了一些手感,并详细介绍了sketch(x)
函数。我认为我的一些困惑是文章试图非常笼统,我想要一个可视化的具体例子。
此数据结构是否适合存储基于任意32位或64位整数键的数据?它与B树有何不同?有一节说它基本上是一个分支因子为B = (lg n)^(1/5)
的B树。对于具有32位密钥的完全填充的树,B将为2.这是否只是一个二叉树?这个数据结构是否打算使用更长的位串作为键?
我的谷歌搜索没有发现任何非常有用的东西,但我欢迎任何有关该主题的良好链接。这真的只是一种好奇心,所以我还不愿意在portal.acm.org
支付PDF费用。
答案 0 :(得分:8)
答案 1 :(得分:4)
我已经阅读了融合树纸。这些想法非常聪明,而且根据O符号来说,他可以为胜利提供理由。
我不清楚它在实践中取胜。恒定因素非常重要,芯片设计人员非常努力地管理廉价的本地参考。
他必须在他的虚拟B树中使用相当小的真实机器(B = 5代表32位,可能10代表64位代表)。许多指针非常适合缓存行。在几百个周期的第一个缓存行触摸(他无法避免)之后,你几乎可以在每个键的几个周期内通过键进行线性搜索,这意味着一个精心编码的B树传统实现看起来像它应该超越融合树木。 (我已经构建了这样的B树代码来支持我们的程序转换系统)。
他声称有一份申请表,但没有比较数字。
有人有确凿的证据吗? (实施和比较?)
答案 2 :(得分:3)
融合树背后的想法实际上相当简单。假设你有w位(比如64位)密钥,想法是将每个连续的64个密钥压缩(即草绘)到64个元素的数组中。草绘功能确保原始键和给定组的数组索引之间的恒定时间映射。然后搜索密钥将搜索包含密钥的组,即O(log(n / 64))。 如您所见,主要的挑战是草图绘制功能。