仮定その構造、我々が知らない一定程度の木です。問題は、「ノードはノードからノードへのパス上にありますか?」という形式のクエリを実行して、ツリーを出力ことです。オラクルは一定の時間で各クエリに回答できると仮定します。ツリーのノード数であるの値を知っています。目的は、に関してツリーを出力するのにかかる時間を最小限にすることです。T x a b n n
そこに存在して上記の問題のためのアルゴリズムを?
ノードの次数は最大3 と仮定します。
私が知っていること
有界直径の場合は簡単です。ツリーの直径が場合、分割統治アルゴリズムを取得できます。
バイナリツリーには、ツリーを1 / 3n以上のサイズのコンポーネントに分割する適切なセパレータがあります。
- 頂点xをピックします。それが良いセパレーターラベルである場合、それは再帰的です。
- xの3つの近傍すべてを見つけます。
- ノードの数が最も多い隣の方向に移動します。ネイバーでステップ2を繰り返します。
セパレータを見つけるには最大でステップかかるため、アルゴリズムを取得します。O (n D log n )
アルゴリズムをランダム化し。(以下のコメントから移動)
2つの頂点xとyをランダムに選択します。1/9の確率で、セパレーターの反対側にあります。からまでのパスの中間ノードを選択します。バイナリ検索を行わない場合、区切り文字かどうかを確認します。y
それは取ります、セパレータを見つけるために時間を予想しました。したがって、ランダム化アルゴリズムを取得します。O (n
バックグラウンド。この問題について、確率的グラフィカルモデルで働く友人から学びました。上記の問題は、3つのランダム変数X、Y、Zが与えられ、Zの値が与えられるとXとYの間の相互情報の値を伝えることができるオラクルを使用して、ジャンクションツリーの構造を学習することにほぼ対応します。値が近い場合ゼロまで、ZがXからYへのパス上にあると仮定できます。