決定木を最適化するためのアルゴリズム
バックグラウンド 二分決定木TTTは、ルートからリーフへのパスがインデックスを繰り返さないように、各内部ノード(およびルート)がインデックスラベル付けされているルート付きツリー出力によってラベル付けされ、各エッジは左の子に対して、右の子に対してでラベル付けされ。入力ツリーを適用するには:{ A 、B } 0 1 xj∈{1,...,n}j∈{1,...,n}j \in \{1,..., n\}{A,B}{A,B}\{A,B\}000111xxx ルートから開始 リーフにいる場合は、リーフラベルまたはを出力して終了しますBAAABBB ラベル読むjjjあなたの現在のノードのを、もしxj=0xj=0x_j = 0その後、左の子に移動している場合xj=1xj=1x_j = 1、次に右の子に移動します。 ステップ(2)にジャンプします ツリーは、特に、我々は木言う、機能を評価するための方法として使用されているTTT合計関数を表しfffそれぞれについて場合x∈{0,1}nx∈{0,1}nx \in \{0,1\}^n我々はT(x)=f(x)T(x)=f(x)T(x) = f(x)。ツリーのクエリの複雑さはその深さであり、関数のクエリの複雑さはそれを表す最小のツリーの深さです。 問題 バイナリ決定木Tが与えられると、TとT 'が同じ関数を表すような最小の深さのバイナリ決定木T'が出力されます。 質問 このための最も有名なアルゴリズムは何ですか?下限はわかっていますか?ことがわかったらどうしますか?T ′がほぼ最小の深さであることが必要な場合はどうでしょうか?depth(T′)=O(logdepth(T))depth(T′)=O(logdepth(T))\text{depth}(T') = O(\log \text{depth}(T))T′T′T' 素朴なアプローチ ナイーブアプローチには、が与えられ、深さd − 1のすべてのバイナリ決定木を再帰的に列挙し、それらがTと同じものに評価されるかどうかをテストします。これにはO (d 2 n n !d=depth(T)d=depth(T)d = \text{depth}(T)d−1d−1d - 1TTTステップ(任意のxに対してT(x)が評価するものをチェックするのにdステップかかると仮定します)。より良いアプローチはありますか?O(d2nn!(n−d)!)O(d2nn!(n−d)!)O(\frac{d 2^n n!}{(n - d)!})dddT(x)T(x)T(x)xxx …