我在实现一篇论文中的算法,其中部分需要使用“哈希树”。由于我从未听说过这种数据结构,我查阅了相关资料。结果发现,哈希树这个名称具有歧义,可以用来指代三种不同的数据结构。它们是:
在阅读了每种数据结构的描述后,我相当确定这篇论文使用的是默克尔树,但我希望得到第二种意见。
相关论文是快速挖掘关联规则的算法,我所提到的具体部分可以在第4页的第2.1.2节找到。
我引用了相关文本的一段如下:
候选项集Ck存储在哈希树中。哈希树的节点要么包含一个项集列表(叶节点),要么包含一个哈希表(内部节点)。在内部节点中,哈希表的每个桶指向另一个节点。哈希树的根节点定义在深度1。深度为d的内部节点指向深度为d+1的节点。项集存储在叶子中。当我们添加一个项集c时,我们从根节点开始,沿着树向下,直到到达一个叶节点。在深度为d的内部节点,我们通过对项集的第d个项目应用哈希函数来决定要遵循的分支。所有节点最初都被创建为叶节点。当一个叶节点中的项集数量超过指定阈值时,该叶节点被转换为内部节点。
还应该注意的是,这种特定数据结构在其他基于Apriori算法的数据挖掘论文中也有提及,例如在这篇关于周期性关联规则的论文中。由于这是经常使用的数据结构,我想阅读的关于它的内容不仅仅是几篇论文中的两段文字。
回答:
哈希树和默克尔树是相同的。因此,如果论文提到哈希树,那就是默克尔树,反之亦然。为了澄清Apriori算法中使用的哈希或默克尔树的概念,请参阅第344页和第345页:https://www-users.cs.umn.edu/~kumar/dmbook/ch6.pdf。