四半期サブセットメンバーシップはスペース効率よく決定できますか?


8

次の決定問題を考えます。ましょうとlet適切です最大でn / 4の要素を持つ\ {0,1、\ dots、n-1 \}のサブセットの列挙。C、N 0C N 1...C nはQ - 1{01...N-1}N/4q=i=0n/4(ni)(C0n,C1n,,Cq1n){0,1,,n1}n/4

クォーターサブセットメンバーシップ
入力:非負の整数の組(i,j,n)、バイナリで表現
質問:あるiCjn

"nice"列挙(Cin)を選択することにより、すべての十分な大きさのnに対して(0.99)nビット以下のワークスペースを使用する決定論的チューリングマシンによって、四半期サブセットメンバーシップを決定できますか?n


討論

してみましょうlogx=log2x。サイズ\ lceil \ log n \ rceilビットのk個のインデックスを追跡することにより、n個から選択された最大k要素のすべてのサブセットを簡単に列挙できます。(KnuthのTAOCPセクション7.2.1.3の説明も参照してください。)kが定数の場合、これはO(\ log n)ビットです。ただし、定数c \ le 1/4に対してk = cnとすると、そのような列挙方式は\ Omega(n \ log n)スペースを使用します。設定されたビット数のチェックとともにnビットの特性ベクトルを使用することもできます。nビットを超えるスキームに興味があります。nklognkO(logn)k=cnc1/4Ω(nlogn)nn

密接に関連する質問は次のとおりです。

正のためのの不等式を満足、せいぜいのサブセットを表すコードがあるから選択される元素の使用は、そのいくつかの定数のためのビットをとすることができます効率的にデコードされましたか?c log e 1 + c / c < 1 c n n d n d < 1cclog(e(1+c)/c)<1cnndnd<1

十分に大きい、 および 、場合、情報理論的には以下のもの、完全なコードで達成されるであろう。(場合、これは未満です。)したがって、大量のスペースを使用せずに操作できる、かなりクリーンなコードを探しています。k i = 0 nnlog n+k1

i=0k(ni)((nk))=(n+k1k),
K = C N D CのログE 1 + C / C 1 0 < C 0.2728
log(n+k1k)log[(e(n+k1)/k)k],
k=cndclog(e(1+c)/c)10<c0.2728

完全なコードを取得するには、サブセットの列挙をいくつか選択し、列挙を通じてインデックスを昇順で実行し、インデックスをデコードして各組み合わせを取得します。ただし、、ハミングの重みを増やして辞書順に並べた特性ベクトルなどを使用して調べた列挙に、少なくともビットのスペースを使用する必要がある場合に、このようなコードをデコードするには、またはグレイコード経由。NkΩ(n/logn)n

これをスペースで行う方法はあるかもしれませんが、方が可能性が高いと思います。1 - ε No(n)(1ε)n 以来ことに留意されたい、情報理論的下限はすでにビット、これは本当にかどうかになるようには、いくつかので達成できます。十分に良い(必ずしも完璧ではない)コードは、肯定的な質問に答えるのに十分なようです。また、コードを明示的に作成しなくても、四半期サブセットメンバーシップを効率的に決定できる場合もあります。一方、そのような列挙は存在しない可能性があります。たとえば、次の値の列挙のすべてのシーケンスΩ N 1 - ε N ε > 0 N 1 - ε Nlog(ncn)cnlog(1/c)Ω(n)(1ε)nε>0nは本質的に不均一であるか、またはビットの境界が無限に頻繁に違反される必要がある場合です。(1ε)n


あなたの境界は無駄です。もし、次いで、及び。少し注意深い計算(例:mathoverflow.net/q/55585を参照)は、実際にはであることを示しているため、ログは再び。もちろん、すべてのに対してです。ログ N0<c<1/2ログΣICn個 nはlog(ncn)=H(c)n12logn+O(1)ΣICn個 nはlog(icn(ni))log(n(ncn))H(c)n+12logn+O(1)Hcn1icn(ni)=O((ncn))HC<1、C<1/2H(c)n12logn+O(1)H(c)<1c<1/2
EmilJeřábek18年

@EmilJeřábekが良い点なので、質問はより一般的なHalf-Subset Membershipに拡張でき、議論の多くが簡素化されます。
アンドラスサラモン

回答:


3

議論から、あなたは実際に主張されているワークスペースに興味があるのではなく、入力のサイズを含む合計スペースに興味があると思います。(それ以外の場合、自明なビットエンコーディングスキームは対数空間でデコードできます。)n

ましょう十分に大きい一定である、とのために次のコードスキーム検討。スプリットにブロック、サイズの、それぞれを、そして置く。のエンコーディングは、ごとに次の数列(バイナリで記述)で構成されます。X { 0 ... N - 1 } { 0 ... N - 1 }kX{0,,n1}{0,,n1}B 、U、U < K N / K X U = X B U X 、U < KkBuu<kn/kXu=XBuXu<k

エンコーディングのサイズについては、と仮定します。数値はビットを取るため、無視できます。我々はのための少なくとものの符号化、その場合の、ほどかかりビット; 残りのは、それぞれ最大でビットを取ります。合計は最大でビットです。S U O k個のログN / K|X|n/4suS UN /3 K K / 4 U X U H 1 / 3 NO(klog(n/k))sun/(3k)k/4uXuXun/k098nH(1/3)nk0.92n/kXun/k0.98n

どのブロックを決定する金額をデコードし考え出す、その後に入り、。後者は、空間内に容易に行う、および1つは長い総容量は、少なくともされると残りのブロック(の符号化によって占有スペース再利用することができ用のOKであり、十分大きい)。X u n / k + O log n 2 n / k kiXun/k+O(logn)2n/kk

より良い分析は、このスキームが本質的に実現することを示してい:let。以来、、の平均上以下である。のエンコードには約ビットかかります。ここで、エントロピー関数は凹型であるため、上の平均は最大でであり、合計空間はです。これはまで最適です。p u = sH(1/4)n0.812n| X | / N 1 / 4 P U U < Kpu=su/(n/k)|X|/n1/4puu<kX U H P UN / K H P UU < K H 11/4XuH(pu)n/kH(pu)u<kH 1 / 4 N + O ログN O ログN H(1/4)H(1/4)n+O(logn)O(logn)

もちろんについて特別なことは何もありません。同じ引数は、任意の定数に対して、をとる -sizeサブセットのエンコーディングスキームがあることを示していますビット、およびインプレースでデコードできます。一定の数のブロック(をとることにより、サイズのサブセットでにもある程度使用できます。程度)、ただしオーバーヘッドはさらに顕著になり、おおよそ下回ると、主項を追い越します。0 < C < 11/4C nは{ 0 ... N - 1 } H C N + O ログN 0<c<1/2cn{0,,n1}H(c)n+O(logn)S N « N K 2 / H s n / n O k ログs(n)s(n)nk2/H(s(n)/n)s n O(klog(n/k))s(n)n

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.