Trie和B +树如何比较按字典顺序排序的字符串[按数十亿的顺序]? 它也应该支持范围查询。
来自perf。以及实现复杂性的观点。
Trie和B +树如何比较按字典顺序排序的字符串[按数十亿的顺序]? 它也应该支持范围查询。
来自perf。以及实现复杂性的观点。
我会说这取决于你的意思 范围。
如果您的范围表示为 所有单词以。开头那么一个 Trie
是我说的正确选择。另一方面, Trie
不适合像这样的请求 XX和ZZ之间的所有单词。
注意,分支因子 B+ Tree
影响其性能(中间节点的数量)。如果 h
是树的高度,然后是n最大 ~~ bH。因此h ~~ log(n最大)/ log(b)。
同 n = 1 000 000 000
和 b = 100
, 我们有 h ~~ 5
。因此,它意味着只有5个指针解除引用从根到叶。它比缓存更友好 Trie
。
最后, B+ Tree
无可否认,实施起来比实施起来更难 Trie
:它更多的是 Red-Black Tree
复杂程度。
我会说这取决于你的意思 范围。
如果您的范围表示为 所有单词以。开头那么一个 Trie
是我说的正确选择。另一方面, Trie
不适合像这样的请求 XX和ZZ之间的所有单词。
注意,分支因子 B+ Tree
影响其性能(中间节点的数量)。如果 h
是树的高度,然后是n最大 ~~ bH。因此h ~~ log(n最大)/ log(b)。
同 n = 1 000 000 000
和 b = 100
, 我们有 h ~~ 5
。因此,它意味着只有5个指针解除引用从根到叶。它比缓存更友好 Trie
。
最后, B+ Tree
无可否认,实施起来比实施起来更难 Trie
:它更多的是 Red-Black Tree
复杂程度。
取决于你的实际任务:
N
孩子 从一个子树,然后一个 特里 是最好的选择,因为您只访问比B + Tree场景更少的节点。