Betrachten Sie das folgende Entscheidungsproblem. Sei und sei geeignet Aufzählung der Teilmengen von mit höchstens Elementen.
Quarter-Subset Membership
Input: Tupel von nichtnegativen ganzen Zahlen binär dargestellt
Frage: ist ?
Kann durch Auswahl einer "netten" Aufzählung die Quarter-Subset-Mitgliedschaft von einer deterministischen Turing-Maschine unter Verwendung von nicht mehr als Bits Arbeitsbereich für alle ausreichend großen ?
Diskussion
Sei . Es ist einfach, alle Teilmengen von höchstens aus n ausgewählten Elementen aufzulisten, indem Indizes der Größe Bits verfolgt werden. (Siehe auch die Diskussion in Knuths TAOCP-Abschnitt 7.2.1.3.) Wenn konstant ist, sind dies nur Bits. Wenn wir jedoch für eine Konstante , verwenden solche Aufzählungsschemata den -Raum. Man kann auch einen Bit-Kennlinienvektor zusammen mit einer Überprüfung der Anzahl der gesetzten Bits verwenden. Ich interessiere mich für Schemata, die Bits schlagen .
Eine eng verwandte Frage lautet dann:
Für ein positives , das die Ungleichung erfüllt , gibt es einen Code, der Teilmengen von höchstens Elementen darstellt, die aus , die Bits für eine Konstante und sein können effizient dekodiert?c log ( e ( 1 + c ) / c ) < 1 c n n d n d < 1
Man beachte , dass für ausreichend großen , und da wenn dann informationstheoretisch Daraus folgt, dass mit einem perfekten Code erreicht werden würde. (Dies ist weniger als wenn .) Ich suche daher nach einem einigermaßen sauberen Code, der ohne großen Speicherplatz kann.k ≤ i = 0 ( nlog ( n+k-1
Um einen perfekten Code zu erhalten, könnte man eine Aufzählung der Teilmengen auswählen, einen Index in aufsteigender Reihenfolge durch die Aufzählung führen und dann jede Kombination durch Dekodieren des Index erhalten. Das Dekodieren eines solchen Codes, wenn anscheinend mindestens Bit Platz für die von mir betrachteten Aufzählungen erfordert , beispielsweise über charakteristische Vektoren, die durch Erhöhen des Hamming-Gewichts und dann lexikographisch geordnet sind oder über Gray-Codes.n
Es könnte einen Weg geben, dies mit Raum zu tun , aber ich denke, dass eher machbar ist.
Beachten Sie, dass seit die informationstheoretische Untergrenze bereits Bits beträgt. Es geht also wirklich darum, ob kann für einige . Ein Code, der nett genug (aber nicht unbedingt perfekt) ist, scheint zu genügen, um meine Frage zu bejahen. Es kann auch vorkommen, dass die Quarter-Subset-Mitgliedschaft effizient entschieden werden kann, ohne explizit einen Code zu erstellen. Andererseits existiert eine solche Aufzählung möglicherweise nicht: zum Beispiel jede Folge von Aufzählungen für Werte vonΩ(n)(1-ε)nε>0n(1-ε)n kann von Natur aus ungleichmäßig sein, oder es kann der Fall sein, dass eine Bit-Bindung unendlich oft verletzt werden muss.
quelle
Antworten:
Ich gehe aus der Diskussion davon aus, dass Sie nicht wirklich an dem beanspruchten Arbeitsbereich interessiert sind , sondern am Gesamtraum einschließlich der Größe der Eingabe. (Andernfalls kann das triviale Bit-Codierungsschema im logarithmischen Raum decodiert werden.)n
Sei eine ausreichend große Konstante und betrachte das folgende Codierungsschema für . Teilen Sie in Blöcke , mit der Größe und setzen Sie . Die Codierung von besteht aus der Folge der folgenden Zahlen (binär geschrieben) für jedes :X ⊆ { 0 , … , n - 1 }k X⊆{0,…,n−1} k B u u < k n / k X u ={0,…,n−1} k Bu u<k n/k X u < kXu=X∩Bu X u<k
die Größe;;su=|Xu|
die Nummer, die im kombinatorischen Zahlensystem für Teilmengen mit Größe entspricht.s uXu su
Für die Größe der Codierung wird . Die Zahlen nehmen Bits, was vernachlässigbar ist. Wir haben für mindestens der , in welchem Fall die Codierung von ungefähr Bits ; Die verbleibenden höchstens Bits. Die Summe beträgt höchstens Bits.s u O.|X|≤n/4 su s u ≤ n / ( 3 k ) k / 4 uO(klog(n/k)) su≤n/(3k) k/4 u H ( 1 / 3 ) nXu XuH(1/3)nk≈0.92n/k Xu 0 . 98 nn/k 0.98n
Das Dekodieren läuft darauf hinaus, zu entscheiden, in welchen Block gehe, und dann herauszufinden ; Letzteres kann leicht im Raum , und man kann den Raum, der durch Codierungen der verbleibenden Blöcke belegt wird, wiederverwenden (solange der Gesamtraum mindestens beträgt, was für Ordnung ist groß genug).X u n / k + O ( logi Xu 2 n / k kn/k+O(logn) 2n/k k
Eine bessere Analyse zeigt, dass dieses Schema im Wesentlichen Raum : sei . Da , beträgt der Durchschnitt von über höchstens . Die Codierung von dauert ungefähr Bits. Nun ist die Entropiefunktion konkav, daher ist der Durchschnitt von über höchstens und der Gesamtraum ist . Dies ist bis zum optimal .p u = s u / ( n / k ) | X | / N ≤ 1 / 4 pH(1/4)n≈0.812n pu=su/(n/k) |X|/n≤1/4 u < k 1 / 4 X u H ( p u ) n / k H / 4 ) H ( 1 / 4 ) npu u<k 1/4 Xu H(pu)n/k u < k H ( 1H(pu) u<k H(1/4) H(1/4)n+O(logn) O(logn)
An ist natürlich nichts Besonderes . Das gleiche Argument zeigt, dass es für jede Konstante ein Codierungsschema für große Teilmengen von , das annimmt Bits und kann direkt dekodiert werden. Bis zu einem gewissen Grad kann es sogar für Teilmengen mit -Größe verwendet werden, wobei , indem eine nicht konstante Anzahl von Blöcken ( oder so), aber dann wird der Overhead von stärker und überholt den Hauptterm, wenn unter ungefähr fällt .0 < c < 1 / 2 ≤ C n { 0 , ... , N - 1 } H ( c )1/4 0<c<1/2 ≤cn {0,…,n−1} ≤ s ( n ) s ( n ) « n k ≥ 2 / H (H(c)n+O(logn) ≤s(n) s(n)≪n k≥2/H(s(n)/n) s ( n ) √O(klog(n/k)) s(n) n−−√
quelle