繁体   English   中英

节点排序的树上的搜索成本

[英]Search cost on Tree with ordered nodes

上下文:我正在建立一个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

假设字符串的概率分布是均匀的,那么哪一个导致最快的搜索时间? 通常,最好在顶层或树木或底层的树枝上具有大量分支吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM