Bisakah Keanggotaan Quarter-Subset ditentukan secara efisien?


8

Pertimbangkan masalah keputusan berikut. Biarkan dan biarkan (C_0 ^ n, C_1 ^ n, \ dots, C_ {q-1} ^ n) menjadi cocok enumerasi himpunan bagian dari \ {0,1, \ dots, n-1 \} yang memiliki paling banyak n / 4 elemen.q=i=0n/4(ni)(C0n,C1n,,Cq1n){0,1,,n1}n/4


Input Keanggotaan Quarter-Subset : tupel bilangan bulat non-negatif (i,j,n) diwakili dalam biner
Pertanyaan: apakah iCjn ?

Dengan memilih enumerasi "bagus" (Cin) , dapatkah Keanggotaan Sub-Bagian ditentukan oleh mesin Turing deterministik menggunakan tidak lebih dari (0.99)n bit ruang kerja, untuk semua n cukup besar n?


Diskusi

Biarkan logx=log2x . Sangat mudah untuk menghitung semua himpunan bagian dari elemen k paling banyak kdipilih dari n dengan melacak indeks k ukuran masing-masing logn bit. (Lihat juga diskusi di bagian TAOCP Knuth 7.2.1.3.) Ketika k adalah konstan, ini hanya O(logn) bit. Namun, jika kita membiarkan k=cn untuk beberapa konstanta c1/4 , maka skema enumerasi seperti itu menggunakan ruang Ω(nlogn) . Satu juga dapat menggunakan vektor karakteristik n bit bersama-sama dengan cek untuk jumlah bit yang ditetapkan. Saya tertarik pada skema yang mengalahkan n bit.

Pertanyaan yang berkaitan erat adalah:

Untuk positif memuaskan ketimpangan , apakah ada kode yang mewakili himpunan bagian dari paling banyak elemen dipilih dari yang menggunakan bit untuk beberapa konstanta , dan dapat diterjemahkan secara efisien?c log ( e ( 1 + c ) / c ) < 1 c n n d n d < 1cclog(e(1+c)/c)<1cnndnd<1

Perhatikan bahwa untuk cukup besar , dan karena ketika maka informasi-secara teoritis mengikuti bahwa akan dicapai dengan kode yang sempurna. (Ini kurang dari jika .) Karena itu saya mencari kode yang cukup bersih yang dapat dimanipulasi tanpa menggunakan banyak ruang.k i = 0 ( nnlog ( n+k-1

i=0k(ni)((nk))=(n+k1k),
k=cndclog(e(1+c)/c)10<c0.2728
log(n+k1k)log[(e(n+k1)/k)k],
k=cndclog(e(1+c)/c)10<c0.2728

Untuk mendapatkan kode yang sempurna, seseorang dapat memilih enumerasi himpunan bagian, menjalankan indeks melalui enumerasi dalam urutan yang meningkat, dan kemudian memperoleh setiap kombinasi dengan mendekode indeks. Namun, mendekode kode seperti itu ketika tampaknya memerlukan penggunaan setidaknya bit ruang untuk enumerasi yang telah saya lihat, seperti melalui vektor karakteristik yang dipesan dengan menambah berat Hamming dan kemudian secara leksikografis , atau melalui kode Gray.nkΩ(n/logn)n

Mungkin ada cara untuk melakukan ini dengan ruang, tapi saya pikir lebih mungkin untuk dilakukan. ( 1 - ε ) no(n)(1ε)n Perhatikan bahwa karena , informasi-teoretis batas bawah sudah bit, jadi ini benar-benar tentang apakah dapat dicapai untuk beberapa . Kode yang cukup bagus (tapi belum tentu sempurna) tampaknya sudah cukup untuk menjawab pertanyaan saya di afirmatif. Mungkin juga halnya Keanggotaan Quarter-Subset dapat diputuskan secara efisien tanpa membuat kode secara eksplisit. Di sisi lain, enumerasi semacam itu mungkin tidak ada: misalnya, setiap urutan enumerasi untuk nilaiΩ(n)(1-ε)nε>0n(1-ε)nlog(ncn)cnlog(1/c)Ω(n)(1ε)nε>0n mungkin secara inheren tidak seragam, atau mungkin terjadi bahwa setiap bit terikat harus sering dilanggar tanpa batas.(1ε)n


Batas Anda sia-sia. Jika , maka , dan . Perhitungan yang sedikit lebih hati-hati (lihat misalnya mathoverflow.net/q/55585 ) menunjukkan bahwa sebenarnya , maka log-nya lagi . Tentu saja, untuk semua . log ( n0<c<1/2log(icn ( nlog(ncn)=H(c)n12logn+O(1)icn ( nlog(icn(ni))log(n(ncn))H(c)n+12logn+O(1)H(c)n-1icn(ni)=O((ncn))H(c)<1c<1/2H(c)n12logn+O(1)H(c)<1c<1/2
Emil Jeřábek

@ EmilJeřábek poin bagus, jadi pertanyaannya dapat diperluas ke Keanggotaan Setengah-Subset yang lebih umum, dan sebagian besar diskusi disederhanakan.
András Salamon

Jawaban:


3

Saya berasumsi dari diskusi bahwa Anda sebenarnya tidak tertarik pada ruang kerja seperti yang diklaim, tetapi dalam ruang total termasuk ukuran input. (Kalau tidak, skema pengkodean bit sepele dapat didekodekan dalam ruang logaritmik.)n

Biarkan menjadi konstanta yang cukup besar, dan pertimbangkan skema penyandian berikut untuk . Pisahkan menjadi blok , , dengan ukuranX { 0 , , n - 1 } { 0 , , n - 1 } k B u u < kkX{0,,n1}{0,,n1}kBuu<kX u = X B u X u < kn/k masing-masing , dan masukkan . Pengkodean terdiri dari urutan angka-angka berikut (ditulis dalam biner) untuk setiap :Xu=XBuXu<k

Sedangkan untuk ukuran encoding, asumsikan . Angka mengambil bit, yang akan diabaikan. Kami memiliki untuk setidaknya dari , dalam hal mana pengkodean memakan waktu sekitars u O ( k log ( n / k ) ) s un / ( 3 k )|X|n/4suO(klog(n/k))sun/(3k)u X u H ( 1 / 3 ) nk/4uXuX u n / k 0 . 98 nH(1/3)nk0.92n/k bits; sisa - mengambil paling banyak bit. Totalnya adalah paling banyak bit.Xun/k0.98n

Mengurai jumlah untuk menentukan blok mana yang masuki, dan kemudian mencari tahuX u n / k + O ( log n ) 2 n / k kiXu ; yang terakhir dilakukan dengan mudah di ruang , dan kita dapat menggunakan kembali ruang yang ditempati oleh penyandian dari blok yang tersisa (selama total ruang setidaknya , yang OK untuk cukup besar).n/k+O(logn)2n/kk

Analisis yang lebih baik menunjukkan bahwa skema ini menghasilkan ruang yang pada dasarnya : misalkan . Karena , rata-rata lebih dari paling banyak . Pengkodean membutuhkan waktu sekitar bit. Sekarang, fungsi entropi adalah cekung, maka rata-rata lebih dari paling banyakp u = s u / ( n / k ) | X | / N 1 / 4 p u u < k 1 / 4 X u HH(1/4)n0.812npu=su/(n/k)|X|/n1/4puu<k1/4XuH ( p u ) u < k H ( 1H(pu)n/kH(pu)u<kH ( 1 / 4 ) n + O ( log n ) O ( log n )H(1/4) , dan total ruang adalah . Ini optimal hingga .H(1/4)n+O(logn)O(logn)

Tentu saja tidak ada yang istimewa tentang . Argumen yang sama menunjukkan bahwa untuk sembarang konstanta , ada skema penyandian untuk -ukuran subset dari yang mengambil bit, dan dapat didekodekan di tempat. Sampai batas tertentu, ia bahkan dapat digunakan untuk subset -ukuran mana lln , dengan mengambil jumlah blok yang tidak konstan ( atau lebih), tetapi kemudian overhead menjadi lebih jelas, dan menyusul istilah utama ketika turun di bawah kira-kira .0 < c < 1 / 2 c n { 0 , ... , n - 1 } H ( c ) n + O ( log n ) s ( n ) s ( n )1/40<c<1/2cn{0,,n1}H(c)n+O(logn)s(n)k 2 / H ( s ( n ) / n ) O ( k logs(n)nk2/H(s(n)/n)s ( n ) O(klog(n/k))s(n)n

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.