複雑さの下限:決定木とRAMのギャップ


15

私は最近、決定木モデルの問題の複雑さに関する2次の下限を発見し、この結果をランダムアクセスマシンモデルに部分的に一般化できるかどうか疑問に思います。することにより、部分的に、私は一定の時間/スペースのトレードオフでプログラムをRAMに一般化を意味します。たとえば、私の問題は線形時間およびスペースRAMプログラムでは解決できないことを示したいと思います。

AM Ben-AmramとZ. Galilは、この論文で、時間とスペースsで実行されるRAMプログラムがO ttsポインタマシンの時間。決定木に適用できる同様の結果を知っていますか?Otログs

あるいは、次数sの決定木を使用して、スペースで実行されているRAMプログラムをシミュレートすることは可能ですか?(直感的に、次数≤s ノードを使用して間接アドレス指定をシミュレートできます)sss


私は古典的なクエリの複雑さ(決定木の複雑さ)についてあまり知りませんが、量子設定(量子クエリの複雑さ)の類似モデルで作業する場合、回路モデルのかなり低い下限が得られることがあります。たとえば、HSPの場合、クエリの複雑さは多項式であることを示すことができますが、クエリ間のユニタリは指数関数的な数のゲートを使用します...非常に緩やかな下限。または、非常にゆるい下限で問題ありませんか?
アルテムKaznatcheev

実際、RAMで実行されている(一部の)プログラムの超線形下限を取得したいです。そのため、スペースの複雑さを制限することが役立つと期待しました。
トトロ

1
あなたの質問が分かりません。クエリの複雑さの2次下限をどのように設定できますか?また、時空間のトレードオフでは直接製品定理を使用することが多いため、このような結果を得るには一生懸命努力する必要があります。
ハートマットクラウク

1
決定木モデルの複雑さの下限は、問題の可能な出力の数の下限に由来します(その対数は木の高さの下限を提供します)。
トトロ

回答:


10

RAMをシミュレートできるディシジョンツリーに関連する自然なモデルは、分岐プログラムです。基本的に、共通のサブツリーが合体してDAGを生成する決定ツリーです。RAMの時間TとスペースSは、分岐プログラムの高さTとサイズ2 ^ Sでシミュレートできます。(多方向の分岐を使用する必要がある場合があります。)

決定問題の場合、決定ツリーに必要なのは、height =#入力とspace = total入力のビット数だけであることは明らかです。多方向分岐では、入力の#ビットが入力の通常の測定よりも大きい場合があることに注意してください(たとえば、n個のポインターはそれぞれlog nビットを取得します)。特定の問題は時間O(n)およびspace = O(n)ビットで解決できません。それがあなたの問題なのでしょうか?

出力の数を使用して、より大きな下限を取得しようとしていることを示唆しているようです。マルチ出力の問題では、リーフノードではなく単一のエッジに沿って多くの出力を許可するのが一般的です(たとえば、下限の並べ替えに関するボロディンクックの1982年の論文を参照)。ただし、この仮定がなくても、高さ=#入力、スペース=#入力ビットの関数を計算できます。(入力を読み取って記憶し、各リーフノードのすべての値を出力します。)


ご回答ありがとうございます。問題の入力は整数のセットのコレクションであるため、整数がリストとして与えられていると想定できます。とにかく、ボロディンとクックのテクニックを指摘してくれてありがとう(私はそれを全く知りませんでした)。この種の方法が私の問題に適用できることを願っています。
トトロ

1

損失なしにRAMをシミュレートするディシジョンツリーに関連する自然なモデルは、分岐プログラムです。基本的に、共通のサブツリーが合体してDAGを生成する決定ツリーです。RAMの時間TとスペースSは、分岐プログラムの高さTとサイズ2 ^ Sでシミュレートできます。(多方向の分岐を使用する必要がある場合があります。)

決定問題の場合、決定ツリーに必要なのは、height =#入力とspace = total入力のビット数だけであることは明らかです。多方向分岐では、入力の#ビットが入力の通常の測定よりも大きい場合があることに注意してください(たとえば、n個のポインターはそれぞれlog nビットを取得します)。特定の問題は時間内に解決できないO(n)およびRAM上のspace = O(n)ビット。それはあなたの問題の形ですか?

出力の数を使用して、より大きな下限を取得しようとしていることを示唆しているようです。ただし、これでも、height =#入力およびspace =#入力ビットの関数を計算できます。(入力を読み取り、記憶し、各リーフノードで必要なすべての値を出力します。通常、単一のノードで複数の出力を許可します。)


たぶん、著者が以前の回答とほとんど同じなので、この回答をマージする方が良いでしょう。
オレクサンドルボンダレンコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.