重みのバランスが悪くなることを回避できるバイナリ検索ツリーのデータ構造はありますか?


7

これは、「すべてのRed-Blackツリーのバランスが取れているわけではないのですか?」および「AVLツリーのウェイトバランスが取れていないのですか?」のフォローアップの質問です

定義:ルート付きツリーと頂点v \ in V(T)の場合、L_T(v)vからの左サブツリー内のノード数、N_T(v)をルート付きサブツリー内のノード数とするで、VT\ mu -balancedであり、0 \ le \ mu \ le \ frac {1} {2}であると言います。すべてのノードv \ in V(T)で不等式 \ mu \ le \ frac {L_T(v )+ 1} {N_T(v)+ 1} \ le 1-\ mu が成り立ち、\ muが最小の場合、この不等式の支配を受けます。TvV(T)LT(v)vNT(v)vTμ0μ12vV(T)

μLT(v)+1NT(v)+11μ
μ

(これらは、いくつかの文献では明らかに重み平衡木としても知られてい ます。)\ mu '<\ muに対してμ平衡化されている木、μ不均衡であると言います。μ<μ

上記のリンクされた投稿は基本的に、AVLツリーRed-Blackツリー\ mu> 0の場合はμバランスが取れていないことを示しています。つまり、そのような\ muの場合、入力シーケンスを提供できます。結果のツリーが\ mu-不均衡になるように挿入されます。μ>0μμ

質問。任意のバイナリ検索ツリー構造は、通常の特性であり、挿入は、時間を検索し、いくつかのツリーは常にとなるように、いくつかのために-balanced?O(logn)m>0μμ>m


1
-balanced treesがめったに使用されない理由は、私は言うと思います。それらは、バランスをとるとき、少しの利益で、あまりにも多くのオーバーヘッドを必要とします。この回答の例を考えてみます。ツリーの高さはです。左側のサブツリーには個のノードがあり、右側のサブツリーには個のノードがあるため、全体としてます。同じ数のノードを完全にバランスの取れたツリーに配置しても、高さはです。高さは運用コストを決定するものであるため、何も得られず、リバランスに費やす時間ははるかに長くなります。μ2k+22k122k+1122k+1+2k12k+2
PetrPudlák2013年

@PetrPudlák:確かに、Aryabhataの答えで有界バランスの二分探索木(Nievergelt + Reingold)を読んでいると、データ構造全体をトラバースして検索するというアイデアの奇妙さに驚かされます。どのような状況でこのようなことを実行する必要があるかはわかりません。代わりに、より単純な、またはより複雑なデータ構造を提案することはありません。順序付けされたセットでのBSTの一般的な実装のように、目的の要素へのパスを簡単に見つけることができる場合、重要なのは高さですが重さではありません。しかし、組み合わせ論者として、私は興味があります。
Niel de Beaudrap 2013年

回答:


6

はい、あります(ただし、確認する用紙の詳細は覚えていません)。

これはそれを扱った元の論文です:

Nievergelt J.とReingold EM、「有界平衡の二分探索木」、コンピューティング理論に関する第4年次ACMシンポジウムの議事録、pp 137--142、1972

こちらは重量バランスの木のページですいくつかのより多くの情報を持っているようだと関数型言語ではその使用に言及しています。

このペーパー:ウェイトバランスツリーでの再バランス操作の平均数についてのリバランス操作の数を調査しているようです。

また、KnuthのArt of ...の本の1つは、上記のReingold論文(おそらく演習中)を参照していたことを覚えているようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.