使用有序节点在树上搜索成本

时间:2014-02-18 12:32:33

标签: algorithm sorting

上下文:我正在构建一个FoundationDB,我正在考虑首先使用哪个键

假设我们有这组元素:

{AP,AQ,AR,BP,BQ,BR}

我们想从中构建一棵树。一种方法是先按第一个字符分组,然后按第二个字符分组,获取

          root
     +-----+------+
     +            +
     A            B
+----+----+  +----+----+
|    |    |  |    |    |
+    +    +  +    +    +
P    Q    R  P    Q    R

另一种可能的方法是先按第二个字符分组,然后按第一个字符分组,获取:

           root
   +--------+--------+
   +        +        +
   P        Q        R
+--+-+   +--+--+   +-+--+
+    +   +     +   +    +
A    B   A     B   A    B

假设字符串的概率分布是均匀的,哪一个导致搜索时间最快?一般来说,最好是在顶层或树上或底部有很多分支?

1 个答案:

答案 0 :(得分:0)

第一种解决方案将导致从2个选项中选择一个,然后从3个选项中选择一个,而第二个选择将首先选择三个中的一个,然后选择两个中的一个。理论上两者应该大致相同。

编辑:根据你的评论。如果您有两个层,其中选项的数量明显不同,如30和1000000,我建议您将30个选项放在较高级别,然后将1000000个选项放在较低级别。我相信在类似的情况下,缓存会加速更低级别。