“板蓝根”一词在基数树中的意义

时间:2016-10-17 13:14:25

标签: data-structures tree radix-tree patricia-trie

虽然很难找到“基数树”的一致定义,但大多数接受的基数树定义表明它是一个压缩的前缀树。我正在努力理解的是在这种情况下术语“基数”的重要性。为什么压缩的前缀树如此命名(即Radix Tree),而未压缩的前缀树不称为 Radix 树?

1 个答案:

答案 0 :(得分:1)

维基百科可以回答这个问题,https://en.wikipedia.org/wiki/Radix

  

在数学数字系统中,基数或基数是数字   唯一数字,包括零,用于表示a中的数字   位置数字系统。例如,对于十进制系统(   今天使用最常见的系统)基数是十,因为它使用了   从0到9的十位数。

和树https://en.wikipedia.org/wiki/Radix_tree

  

数据结构,表示每个空间优化的trie   唯一的子节点与其父节点合并。结果是   每个内部节点的子节点数至少为   基数树的基数r,其中r是正整数,幂是x   2,x≥1

最后检查字典:

  

1.radix(名词)

     

一个原始单词,其他单词从中弹出。

基数树中的基数决定了树的子(或深度)数量与'稀疏'之间的平衡,或者有多少后缀是唯一的。

编辑 - 详细说明

  

每个内部节点的子节点数至少为基数r

让我们考虑“aba,异常,痤疮和深渊”这两个词。在常规前缀树(或trie)中,每个弧都会为单词添加一个字母,因此我们有:

-a-b-a-
   n-o-r-m-a-l-
   y-s-m-a-l-
  -c-n-e-

我的绘图有点误导 - 在尝试中字母通常位于弧上,因此' - '是一个节点,字母是边缘。请注意,许多内部节点有一个孩子!现在是紧凑(和明显)的形式:

-a-b  -a-
       normal-
       ysmal-
   cne-

现在我们有一个内部节点(在b后面)有3个孩子!基数是2的正幂,在这种情况下为2。为什么2而不说3?首先请注意,根有2个孩子。另外,假设我们想要添加一个单词。选项:

  • 分享b前缀 - 好吧,4大于2。
  • 分享b孩子的优势 - 说'异常'。那么插入的方式共享部分将分裂,我们将:

相关分支:

-normal-ly-
       -

normal现在是一个内部节点,但有2个子节点(一个叶子)。 - 另一种情况是删除痤疮,例如。但是现在compactness属性表示b之后的节点必须合并回来,因为它是唯一的子节点,所以树成为

树:

-ab-a
   -normal-ly-
          -
   -ysmal

所以,我们仍然保持孩子> 2。

希望这澄清!