Algorithm 基数尝试、尝试和三元搜索尝试

Algorithm 基数尝试、尝试和三元搜索尝试,algorithm,trie,ternary-search-tree,radix-tree,Algorithm,Trie,Ternary Search Tree,Radix Tree,我目前正试图了解Trie的变体,我想知道是否有人能够澄清几点。(我对这个问题的答案感到非常困惑,尤其是在第一段中) 从我所读到的,以下是正确的吗?假设我们在数据结构中存储了n个元素,L是我们正在搜索的字符串的长度: Trie将其键存储在叶节点上,如果搜索命中率为正,则这意味着它将执行O(L)比较。然而,对于未命中,平均性能为O(log2(n)) 类似地,基数树(R=2^R)将键存储在叶节点,并将对正命中执行O(L)比较。然而,未命中将更快,并且平均发生在O(logR(n))中 三元搜索Trie

我目前正试图了解Trie的变体,我想知道是否有人能够澄清几点。(我对这个问题的答案感到非常困惑,尤其是在第一段中)

从我所读到的,以下是正确的吗?假设我们在数据结构中存储了n个元素,L是我们正在搜索的字符串的长度:

  • Trie将其键存储在叶节点上,如果搜索命中率为正,则这意味着它将执行O(L)比较。然而,对于未命中,平均性能为O(log2(n))

  • 类似地,基数树(R=2^R)将键存储在叶节点,并将对正命中执行O(L)比较。然而,未命中将更快,并且平均发生在O(logR(n))中

  • 三元搜索Trie本质上是一个BST,具有运算、=和每个节点中存储的字符。我们不比较节点上的整个密钥(如BST),而只比较该节点上密钥的一个字符。总的来说,假设我们的字母表大小是A,那么如果有命中,我们必须执行(最多)O(L*A)=O(L)比较。如果没有命中,我们平均有O(log3(n))

关于基数树,例如,如果我们的字母表是{0,1},我们设置R=4,对于二进制字符串0101,我们只需要两次比较,对吗?因此,如果字母表的大小是A,我们实际上只会执行L*(A/R)比较?如果是这样的话,我猜这就是O(L),但我很好奇这是不是正确的推理

谢谢你们的帮助