簡體   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