Saya sedang mempelajari masalah yang sulit untuk kelas formula boolean yang dikuantifikasi dengan jumlah logaritmik dari pergantian quantifiers. Masalah di kelas ini akan terlihat seperti:
Di mana , dan adalah rumus boolean dari variabel .F x 1 … x n
Kelas ini jelas mengandung dan terkandung dalam . Apakah ada nama untuk kelas ini? Apakah ada yang lebih diketahui tentang itu?A P = P S P A C E
Jawaban:
Membangun berdasarkan jawaban Michael Wehar, tampaknya Anda dapat dengan mudah menunjukkan bahwa perhitungan dapat dikodekan dalam polysize QBFs seperti: Anda menggunakan O ( log n ) bergantian, masing-masing p o l y ( n ) bit, dan lakukan argumen yang mirip dengan teorema Savitch. Setiap dua alternatif akan membagi waktu berjalan perhitungan dengan p o l y ( nNTISP(nlogn,poly(n)) O(logn) poly(n) faktor.poly(n)
Saya akan memanggil kelas , mengikuti notasi dalam Fortoff's "Time-Space Tradeoffs for Satisfiability" yang juga dapat dikutip untuk argumen yang dibuat sketsa di paragraf sebelumnya (tapi silakan lihat makalah untuk referensi sebelumnya).ΣO(logn)P
sumber
(1) Apa yang sudah kita ketahui:
Seperti yang sudah Anda nyatakan, QBF dengan bergantian dari pengukur sulit untuk setiap tingkat hirarki polinomial.log(n)
(2) Saya pikir kita juga bisa membuktikan yang berikut:
Masalahnya adalah -Hard.NSPACE(log2(n))
(3) Inilah pembenaran informal saya atas pernyataan sebelumnya:
Mengingat ruang terikat NTM dan string masukan, kita perlu menentukan apakah ada sebuah perhitungan menerima pada string masukan yang diberikan.log2(n)
Setiap konfigurasi dalam perhitungan dapat diwakili oleh dasarnya bit. Dengan kata lain, kita dapat merepresentasikan konfigurasi oleh sekelompok variabel log 2 ( n ) .log2(n) log2(n)
Idenya adalah bahwa kita memiliki konfigurasi mulai dan konfigurasi akhir dan kita perlu menebak perhitungan yang terjadi di antaranya. Kami secara rekursif menebak konfigurasi "tengah" menggunakan quantifiers yang ada dan berulang memverifikasi bahwa konfigurasi "kiri" mengarah ke konfigurasi "tengah" dan "tengah" mengarah ke "kanan" menggunakan semua kuantifiers.
Sekarang untuk membuat ini berfungsi, alih-alih memilih satu konfigurasi "tengah", kita perlu memilih sekelompok konfigurasi "perantara" yang berjarak sama antara konfigurasi "kiri" dan "kanan". Secara khusus, kita bisa menebak konfigurasi "perantara" yang sama-sama spasi menggunakan kuantifiers yang ada dengan √n−−√ variabel dan kemudian recurse pada setiap kesenjangan antara konfigurasi menggunakan untuk semua bilangan dengan kasarlog(n)variabel.n−−√∗log2(n) log(n)
Rekursi hanya perlu melanjutkan ke kedalaman untuk dapat mencakup perhitungan panjang √2∗log(n) mana setiap konfigurasi memiliki paling banyaklog2(n)banyak bit.n−−√2∗log(n)=nlog(n)=2log2(n) log2(n)
Karena rekursi memiliki kedalaman , kami hanya memiliki kelompok variabel O ( log ( n ) ) yaitu pergantian. Karena setiap kelompok bilangan hanya memiliki √O(log(n)) O(log(n)) variabel, secara total kita memilikiO( √n−−√∗log2(n) variabel.O(n−−√∗log3(n))
Jangan ragu untuk memberikan umpan balik atau koreksi. Terima kasih banyak dan saya harap ini sedikit membantu.
(4) Penegasan yang lebih umum seperti yang disarankan oleh jawaban Ryan:
Anda harus dapat melakukan konstruksi sebelumnya dengan cara yang lebih umum. Pertimbangkan yang berikut ini:
Pada setiap langkah rekursi, pisahkan menjadi kelompok konfigurasi "menengah" menggunakan c ( n ) bit per konfigurasi. Kemudian, lakukan rekursi ke kedalaman d ( n ) .g(n) c(n) d(n)
Selama kita tidak memiliki terlalu banyak variabel dan terlalu banyak pergantian, ini tampaknya berfungsi dengan baik. Secara kasar, kita perlu yang berikut ini dipenuhi:
Pendekatan umum kami akan digunakan untuk mensimulasikan mesin Turing non-deterministik yang berjalan untuk langkah menggunakan c ( n ) bit memori.g(n)d(n) c(n)
Secara khusus, kami memilih yang berikut:
Ketidaksetaraan sebelumnya puas dan kami dapat melakukan konstruksi untuk mensimulasikan mesin Turing non-deterministik yang berjalan sekitar langkah menggunakan √2log2(n) bit memori.n√2∗log2n
Dengan kata lain, kami memiliki hasil kekerasan yang lebih baik dari sebelumnya. Secara khusus, masalahnya sulit untuk .NTISP(2log2(n),n√2∗log2n)
(5) Generalisasi lebih lanjut:
Dalam generalisasi sebelumnya, kami mensimulasikan mesin Turing yang dibatasi waktu dan ruang. Namun, kami mungkin dapat mensimulasikan waktu dan ruang yang dibatasi oleh mesin Turing.
Biarkan saya jelaskan sedikit. Jadi kami menggunakan kira-kira alternatif untuk melakukan rekursi ke kedalaman log ( n ) . Namun, kita bisa menggunakan beberapa alternatif pada awalnya, katakanlah √log(n) log(n) . Kemudian, kita bisa menggunakan sisa √log(n)−−−−−√ alternatif untuk menuju kedalaman √log(n)−−−−−√ .log(n)−−−−−√
Dalam hal ini, kita bisa mensimulasikan mesin Turing bergantian yang memiliki bergantian dengan panjang saksi sublinear, jalankan selama2 log 3log(n)−−−−−√ langkah, dan gunakan√2log32(n) bit memori.n√2∗log2n
Dengan kata lain, masalahnya adalah sulit bagiAltTimeSpace(log(n)−−−−−√,2log32(n),n√2∗log2n) with sublinear witness lengths. Alternatively, this class could be written using the STA notation mentioned in the comments above.
Thank you for the comments and feel free to offer any further corrections or clarifications. :)
sumber
A shorter answer.
See my longer answer for more details on the trade-offs betweena(n) , t(n) , and s(n) .
Note: In the above, when I say encode computations, I mean encode the computation without blowing up the instance size too much. That is, if we blow-up fromn size Turing machine input to poly(n) size formula, then I think that although the blow-up is polynomial, it is good to pay close attention to the degree of the polynomial. The reason for the semi-fine-grained perspective is to try and slightly better recognize how the different complexity measures a(n) , t(n) , and s(n) depend on each other.
sumber