
コンピュータ科学および確率論において、ランダム二分木とは、二分木に関する何らかの確率分布からランダムに選択された二分木のことである。様々な分布が用いられており、それによってこれらの木は異なる性質を持つ。
ランダム二分木は、二分探索木に基づくデータ構造の平均ケースの複雑さを分析するために使用されてきました。このアプリケーションでは、ランダムな順列に従ってノードを一度に 1 つずつ挿入することによって形成されるランダム木を使用するのが一般的です。[ 1 ]結果として得られる木は、対数的な深さと対数的なStrahler 数を持つ可能性が非常に高いです。treapおよび関連する平衡二分探索木は、更新シーケンスが非ランダムであってもこのランダムな構造を維持する更新操作を使用します。
ランダム二分木に関するその他の分布には、すべての異なる木が等しい確率で出現する一様離散分布、繰り返し分割によって得られる特定の数のノードに関する分布、ランダムデータに対する二分試行と基数木、および分岐プロセスによって生成される可変サイズの木などがあります。
必ずしも二分木ではないランダムツリーについては、ランダムツリーを参照してください。

二分木は、各ノードが最大 2 つの子 (木の中でそのノードの直下のノード) を持つことができる根付き木であり、それらの子は左または右のいずれかに指定されます。代わりに、各ノードが子を持たない外部ノードであるか、ちょうど 2 つの子を持つ内部ノードである拡張二分木を考える方が便利な場合があります。拡張形式でない二分木は、すべてのノードを内部ノードとして扱い、内部ノードの欠落している子ごとに外部ノードを追加することで、拡張二分木に変換できます。反対に、少なくとも 1 つの内部ノードを持つ拡張二分木は、すべての外部ノードを削除することで、非拡張二分木に戻すことができます。このように、これら 2 つの形式は、数学的解析の目的においてはほぼ完全に等価ですが、拡張形式では単一の外部ノードからなる木が許容され、これは非拡張形式の何にも対応しません。コンピュータのデータ構造の目的においては、最初の形式の外部ノードはデータ構造内のオブジェクトとして明示的に表現できるため、2 つの形式は異なります。[ 2 ]
二分探索木では、内部ノードはキーと呼ばれる数値またはその他の順序付き値でラベル付けされ、木の順序通りの走査でキーがソートされた順序でリストされるように配置されます。外部ノードはラベル付けされません。 [ 3 ]二分木は、すべてのノードにラベルが付けられていない場合や、ラベルがソートされた順序で与えられていない場合にも研究できます。たとえば、カルテシアンツリーデータ構造は、必ずしも二分探索木ではないラベル付き二分木を使用します。[ 4 ]
ランダム二分木は、二分木に関する特定の確率分布から抽出されたランダムな木です。多くの場合、これらの確率分布は与えられたキーのセットを使用して定義され、それらのキーを持つ二分探索木の確率を記述します。ただし、他の分布も可能であり、必ずしも二分探索木を生成するとは限らず、必ずしも固定数のノードを与えるとは限りません。[ 5 ]

異なる順序付きキーの任意のシーケンスに対して、以前に挿入されたキーの構造を変更することなく、各キーをツリーの葉として順番に挿入する二分探索木を形成できます。各挿入の位置は、前のツリーでの二分探索によって見つけることができます。ランダム順列モデルは、与えられたキーのセットに対して、各順列が等しい確率を持つセットの順列からシーケンスをランダムに選択することによって定義されます。 [ 6 ]
例えば、3つのキー1、3、2をこの順序で二分探索木に挿入すると、1は木の根に位置し、3はその右の子として、2は3の左の子として配置されます。キー1、2、3の順列は6通りありますが、それらから構築できる木は5種類だけです。これは、順列2、1、3と2、3、1が同じ木を形成するためです。したがって、この木には確率があります。生成される確率は、他の4つの木はそれぞれ[ 5 ]
任意のキーに対して与えられたセットの中でキー、ルートからパスの長さの期待値ランダム二分探索木では最大で、 どこ "「」は自然対数関数を表し、ビッグオー記法を導入します。期待値の線形性により、祖先の期待値は他のキーの合計に等しい確率の祖先である鍵となるものの祖先である正確にはいつ区間から挿入される最初のキーです区間内の各キーが最初になる確率は等しいので、これは区間の長さに反比例する確率で起こります。したがって、に隣接するキーはソートされたキーのシーケンスには確率がある祖先であること1ステップ離れた鍵には確率があるなど。これらの確率の合計は、から離れて伸びる調和級数の2つのコピーを形成します。ソートされたシーケンスの両方向で、上記の上限値。この上限値は、値に対する期待される検索パスの長さにも適用されます。それは与えられた鍵の1つです。[ 7 ]
ランダム二分探索木における最長の根から葉へのパスは、期待されるパスの長さよりも長いが、定数倍だけ長い。ノードは、高い確率で約
どこ範囲内の一意の番号です方程式を満たす
ランダム順列モデルでは、最小値と最大値を除く各キーは確率が木の葉であること。これは、それが隣接する2つの要素の後に挿入された場合に葉となるためであり、それはそれと隣接する2つの要素の6つの順列のうち2つで発生し、それらはすべて等しい確率で発生する。同様の推論により、最小の鍵と最大の鍵の確率は葉であること。したがって、葉の期待数はこれらの確率の合計であり、まさに[ 9 ]
任意の木における頂点のシュトララー数は、それらの頂点の下にある部分木の複雑さの尺度です。葉(外部ノード)のシュトララー数は 1 です。その他のノードについては、シュトララー数はその子のシュトララー数から再帰的に定義されます。二分木では、2 つの子のシュトララー数が異なる場合、親のシュトララー数は 2 つの子の数のうち大きい方になります。しかし、2 つの子のシュトララー数が等しい場合、親の数は 1 大きい方になります。木全体のシュトララー数は、ルートノードの数です。-ノードランダム二分探索木では、シミュレーションによると期待されるシュトララー数はより弱い上限証明されている。[ 10 ]
二分探索木データ構造の応用では、キーが削除されずにランダムな順序で挿入されることはまれであり、ランダム二分木の直接的な応用が制限される。しかし、アルゴリズム設計者は、キーがランダムに挿入されたかのように、木の形状がランダムであるという特性を維持するために、任意の挿入と削除を可能にするデータ構造を考案した。[ 11 ]
与えられたキーのセットに数値的な優先順位(値とは無関係)が割り当てられている場合、これらの優先順位を使用して数値のデカルト木、つまりキーを優先順位順に挿入することによって得られる二分探索木を構築できます。優先順位を単位区間内の独立したランダムな実数に選択し、ノードの挿入または削除後に木の回転を使用してデカルト木構造を維持することにより、ランダム二分探索木のように動作するデータ構造を維持することが可能です。このようなデータ構造は、 treapまたはランダム化二分探索木として知られています。[ 11 ]
treap のバリアントである zip ツリーや zip-zip ツリーでは、ツリーの回転を、ツリーを分割および結合する「zipping」操作に置き換え、キーとともに生成および保存する必要のあるランダムビットの数を制限します。これらの最適化の結果は、依然としてランダムな構造を持つツリーですが、ランダム順列モデルと完全に一致するものではありません。[ 12 ]

バイナリツリーの数ノードはカタラン数である。[ 13 ]これらの木の数は
したがって、これらの木のうちの1つが一様にランダムに選択される場合、その確率はカタラン数の逆数になります。この分布のモデルから生成された木は、ランダムバイナリカタラン木と呼ばれることがあります。[ 14 ]これらの木の期待される深さは、の平方根に比例します。対数ではなく、[ 15 ]より正確には、ランダムに選択されたノードの期待される深さは、このタイプのノードツリーは
一様乱数の期待シュトララー数-ノード二分木はランダム二分探索木の期待されるストララー数よりも低い。[ 17 ]
高さが大きいため、この等確率ランダムツリーモデルは一般的に二分探索木には使用されません。しかし、以下のような他の用途があります。
Jean-Luc Rémy のアルゴリズムは、以下の手順で、指定されたサイズの均一ランダムな二分木をサイズに比例した時間で生成します。まず、単一の外部ノードからなる木を作成します。次に、現在の木が目標サイズに達するまで、そのノード (内部または外部) のいずれかを均一にランダムに繰り返し選択します。選択したノードを、選択したノードを子ノードの 1 つ (左または右に等しい確率で) とし、もう 1 つの子ノードとして新しい外部ノードを持つ新しい内部ノードに置き換えます。目標サイズに達したら停止します。[ 22 ]
ガルトン・ワトソン過程は、各ノードの子ノード数が他のノードとは独立にランダムに選択されるツリー上の分布のファミリーを記述する。二分木の場合、ガルトン・ワトソン過程には2つのバージョンがあり、外部ルートノードという1つのノードのみを持つ拡張二分木が許容されるかどうかのみが異なっている。
このようにして生成された木は、バイナリ・ガルトン・ワトソン木と呼ばれています。これらはクリティカルバイナリガルトン・ワトソンツリーと呼ばれています。[ 23 ]
確率は、二成分ガルトン・ワトソン過程の相転移を示す。結果として得られる木はほぼ確実に有限であるが、正の確率で無限大である。より正確には、任意の木が有限のままである確率は
同じ木を生成する別の方法は、確率でコイン投げのシーケンスを行うことです。表と確率裏の回数を、裏の回数が表の回数を超える最初のフリップまで繰り返し(外部ルートが許容されるモデルの場合)、または表の回数の 1 プラスを超える最初のフリップまで繰り返し(ルートが内部でなければならない場合)、その後、この一連のコイン投げを使用して、深さ優先の順序で再帰的生成プロセスによって行われる選択を決定します。[ 25 ]
内部ノードの数がこのコイン投げの表の数に等しいので、与えられた数を持つすべての木はノードは、同じ長さの(一意の)コイン投げシーケンスから生成され、つまり、このプロセスによって生成される木のサイズのばらつきに影響しますが、特定のサイズの場合、木は均一にランダムに生成されます。[ 26 ]の値の場合臨界確率以下より小さい値期待されるサイズが小さい木を生成するが、より大きな値では期待されるサイズが大きい木が生成される。臨界確率ではこのプロセスによって生成される木の期待サイズには有限の上限はありません。より正確には、任意の深さにおけるノードの期待数木の中には、そして、各深さにおけるノードの期待数を合計することで、木の期待サイズが得られます。これは等比数列を与える
予想される木のサイズに対して、しかしこれにより、1 + 1 + 1 + 1 + ⋯という発散級数が得られます。[ 27 ]
のために特定の木内部ノードは確率で生成されます、そしてランダムな木がこのサイズになる確率は、この確率にカタラン数を掛けたものです。
ガルトン・ワトソン過程は、もともと人間の姓の拡散と消滅を研究するために開発されたもので、より一般的には人間や動物の個体群動態に広く応用されている。これらの過程は、ツリーの特定のレベル(個体群動態の応用では世代)における内部ノードまたは外部ノードである確率が固定されておらず、前のレベルのノード数に依存するモデルに一般化されている。[ 29 ]この過程の臨界確率を用いたバージョンでは、は、種分化のモデルとして研究されており、臨界分岐過程として知られています。この過程では、各種は指数分布に従う寿命を持ち、その寿命の間に寿命と同じ割合で子孫種を生み出します。子孫が生まれると、親は進化系統樹の左側の枝として存続し、子孫は右側の枝になります。[ 30 ]
重要なガルトン・ワトソン木(根が内部でなければならないバージョン)の別の応用例として、再帰的な辺の縮約プロセスを用いてグラフの最小カットを見つけるカーガー・スタインアルゴリズムが挙げられる。このアルゴリズムは自身を2回再帰的に呼び出し、各呼び出しの確率は少なくとも正しい解の値を保持する。ランダムツリーは、正しい再帰呼び出しのサブツリーをモデル化する。アルゴリズムは、グラフ上で成功する。正しい再帰呼び出しのランダムツリーに少なくとも深さの枝がある場合、頂点再帰の基本ケースに到達します。成功確率はアルゴリズムの対数因子の1つを生成する実行時。[ 31 ]
DevroyeとRobsonは、関連する連続時間ランダムプロセスを検討しています。このプロセスでは、各外部ノードは、外部ノードとして最初に出現してから指数分布に従う時間経過後に、2つの外部子を持つ内部ノードに最終的に置き換えられます。任意の時点でのツリー内の外部ノードの数は、単純な出生プロセスまたはユールプロセスによってモデル化されます。このプロセスでは、集団のメンバーが一定の割合で出産します。ユールプロセスで1つの子を出産することは、DevroyeとRobsonのモデルでは2つの子に置き換えられることに相当します。このプロセスが任意の固定時間で停止されると、結果としてランダムなサイズ(停止時間によって異なる)の二分木が生成され、そのサイズに対するランダム順列モデルに従って分布します。DevroyeとRobsonはこのモデルを、ランダム順列モデルでツリーを迅速に生成するアルゴリズムの一部として使用しています。このツリーは、正確な構造ではなく、各深さにおけるノード数によって記述されます。[ 32 ]このプロセスの離散的な変種は、単一の外部ノードからなるツリーから始まり、ランダムに選択された外部ノードを、2 つの外部子を持つ内部ノードで繰り返し置き換えます。ここでも、これを固定時間 (固定サイズ) で停止すると、結果として得られるツリーはそのサイズのランダム順列モデルに従って分布します。[ 1 ]

バイナリツリーの別の形式であるバイナリトライ(またはデジタル探索木)は、外部ノードの一部にラベル付けされたバイナリ数の集合を持ちます。ツリーの内部ノードは、 2つ以上の数値で共有されるバイナリ表現の接頭辞を表します。内部ノードの左と右の子は、対応する接頭辞をそれぞれ1ビット(0または1ビット)拡張することによって得られます。この拡張が与えられた数値のいずれとも一致しない場合、または1つだけ一致する場合は、結果は外部ノードになります。そうでない場合は、別の内部ノードになります。ランダムバイナリトライは、例えば単位区間で独立に生成されたランダムな実数の集合について研究されています。これらのツリーには空の外部ノードが存在する可能性がありますが、ランダムバイナリ探索木よりもバランスが良い傾向があります。単位区間内の一様乱数実数、あるいはより一般的には単位区間上の任意の二乗可積分確率分布の場合、ノードの平均深度は漸近的に、そして木全体の平均高さは漸近的にこれらのツリーの分析は、トライ木ベースのソートアルゴリズムの計算複雑性に適用できます。[ 33 ]
トライ木の変種である基数木または圧縮トライ木は、空の外部ノードとその親内部ノードを削除します。残りの内部ノードは、ランダムに選択された数値の少なくとも1つで、0ビットまたは1ビットによる拡張の両方が使用される接頭辞に対応します。基数木の場合、一様に分布したバイナリ数では、最短の葉根パスの長さは そして最長の葉根経路の長さは どちらも高い確率で。[ 34 ]
Luc DevroyeとPaul Kruszewski は、ランダムな二分木を構築するための再帰的なプロセスについて説明します。ノード。実数値の乱数を生成します。単位区間において最初のノード(整数に切り捨てられたノード数)を左サブツリーに、次のノードをルートに、残りのノードを右サブツリーに割り当てます。次に、左サブツリーと右サブツリーで同じプロセスを使用して再帰的に続行します。区間内で一様にランダムに選択される場合、どのノードも根として選択される確率が等しいため、結果はノードのランダムな順列によって生成されるランダム二分探索木と同じになります。ただし、この定式化では、代わりに他の分布を使用することもできます。たとえば、一様ランダム二分木モデルでは、根が固定されると、その2つのサブツリーもそれぞれ一様ランダムでなければならないため、一様ランダムモデルは、異なる分布の選択によっても生成できます() のために彼らが示すように、ベータ分布を選択することによってそして、各枝を描くのに適切な形状を選択することで、このプロセスによって生成された数学的な木を使用して、リアルな植物の木を作成することができます。[ 35 ]
{{citation}}: CS1メンテナンス: DOIは2025年7月現在非アクティブです(リンク)