質問

順序統計ツリー(各ノード $ x $ にある拡張レッドブラックツリーの拡張には、ノードの数を表す追加のフィールドが含まれています。 $ x $ に根ざされたサブツリーは、 $ i $ を見つけることができます。 $ O(lg(n))$ 最悪の場合の時間。 $ i $ を見つける要素の動的セットを表すアレイの場合、 $で実現できます。 o(n)$ 最悪の場合の時間。[ $ n $ は要素の数です]

今、 $ n $ 要素赤黒ツリーを形成するためのタイトな上限を見つけるように感じました。配列内の設定要素と $ o(n)$ 時刻 "または" < $ o(f(n))$ 時刻と言う)そして次に $ o(lg(n))$ 時間 "。


非常に荒い分析は次のとおりです。 $ n $ の要素を挿入するに挿入します。 $ o(lg(n))$ 時間と挿入する $ n $ 要素がありますので、 $ O(nlg(n))$ 時間。今度は赤黒木に要素しかないので、高さがかなり少ないので、木に挿入する時期です。

私は以下のように詳細な分析を試みた(しかし失敗したが):

$ j= i + 1 $ の挿入中にlet thelementツリーの高さは $ 2 .lg(i + 1)+ 1 $ 。適切な $ c $ 、合計実行時間、

$$ t(n)\ leq \ sum_ {j= 1} ^ {n} c。(2.LG(I + 1)+ 1)$$

$$= c。\ sum_ {i= 0} ^ {n-1}(2.lg(i + 1)+ 1)$$ < / P>

$$= c。\ left [\ sum_ {i= 0} ^ {n-1} 2.Lg(i + 1)+ \ sum_ {i= 0} ^ {n-1} 1 \ right] $$

$$= 2C \ sum_ {i= 0} ^ {n-1} LG(i + 1)+ Cn \ Tag1 $$

$$ \ sum_ {i= 0} ^ {n-1} LG(I + 1)= LG(1)+ LG(2)+ LG(3)+ ... + LG(N)= LG(1.2.3 ....N)\ TAG2 $$

$$ \ prod_ {k= 1} ^ {n} ^ {n} ^ {n} ^ {n} n、\ text {どちらが非常に緩い上限} \ tag 3 $$

$(3)$ の使用 $(2)$ と結果を $(1)$ 私たちは $ t(n)= o(nlg(n))$ です。大まかな分析と同じ...

$(3)$ より良いことをすることができますか?


参照されているすべてのノードは、赤黒ツリーの内部ノードです。

役に立ちましたか?

解決

$ n $ 要素に赤黒ツリーを構築するには $ \ omega(n \要素のキーを比較することだけが許可されている場合にのみ、log n)$ 。 この通知を見るために、BSTの順序訪問は、それらのキーの順序を増やすとノードを訪問します。

時間内に赤黒ツリーを構築できる場合は、 $ t(n)= o(n \ log n)$ である $ n $ の要素を時刻 $ O(t(n)+ n)= o(n \ log n) )比較ベースのアルゴリズムのソートの下限に矛盾する$

一方、要素が既にソートされている場合は、 $ o(n)$ に赤黒ツリーを作成できます。最後のレベルが不完全な場合、バランスの取れたBSTは、そのノードを赤くし、もう1つのノードを黒に色します。 再帰的アルゴリズムの時間の複雑さは、再帰式 $ t(n)= 2t(n / 2)+ O(1)$

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top