次の決定問題を考えます。ましょうとlet適切です最大でn / 4の要素を持つ\ {0,1、\ dots、n-1 \}のサブセットの列挙。(C、N 0、C N 1、...、C nはQ - 1){0、1、...、N-1}N/4
クォーターサブセットメンバーシップ
入力:非負の整数の組、バイナリで表現
質問:ある?
"nice"列挙を選択することにより、すべての十分な大きさのnに対して、ビット以下のワークスペースを使用する決定論的チューリングマシンによって、四半期サブセットメンバーシップを決定できますか?
討論
してみましょう。サイズ\ lceil \ log n \ rceilビットのk個のインデックスを追跡することにより、n個から選択された最大要素のすべてのサブセットを簡単に列挙できます。(KnuthのTAOCPセクション7.2.1.3の説明も参照してください。)kが定数の場合、これはO(\ log n)ビットです。ただし、定数c \ le 1/4に対してk = cnとすると、そのような列挙方式は\ Omega(n \ log n)スペースを使用します。設定されたビット数のチェックとともにnビットの特性ベクトルを使用することもできます。nビットを超えるスキームに興味があります。
密接に関連する質問は次のとおりです。
正のためのの不等式を満足、せいぜいのサブセットを表すコードがあるから選択される元素の使用は、そのいくつかの定数のためのビットをとすることができます効率的にデコードされましたか?c log (e (1 + c )/ c )< 1 c n n d n d < 1
十分に大きい、 および 、場合、情報理論的には以下のもの、完全なコードで達成されるであろう。(場合、これは未満です。)したがって、大量のスペースを使用せずに操作できる、かなりクリーンなコードを探しています。k ∑ i = 0 ( nlog( n+k−1
完全なコードを取得するには、サブセットの列挙をいくつか選択し、列挙を通じてインデックスを昇順で実行し、インデックスをデコードして各組み合わせを取得します。ただし、、ハミングの重みを増やして辞書順に並べた特性ベクトルなどを使用して調べた列挙に、少なくともビットのスペースを使用する必要がある場合に、このようなコードをデコードするには、またはグレイコード経由。N
これをスペースで行う方法はあるかもしれませんが、方が可能性が高いと思います。(1 - ε )N
以来ことに留意されたい、情報理論的下限はすでにビット、これは本当にかどうかになるようには、いくつかので達成できます。十分に良い(必ずしも完璧ではない)コードは、肯定的な質問に答えるのに十分なようです。また、コードを明示的に作成しなくても、四半期サブセットメンバーシップを効率的に決定できる場合もあります。一方、そのような列挙は存在しない可能性があります。たとえば、次の値の列挙のすべてのシーケンスΩ (N )(1 - ε )N ε > 0 N (1 - ε )Nは本質的に不均一であるか、またはビットの境界が無限に頻繁に違反される必要がある場合です。