Dari teorema ruang-hierarki diketahui bahwa jika -ruang-dibangun maka DSPACE ( ) tidak sama dengan DSPACE ( .
Di sini, oleh DSPACE ( saya maksud adalah kelas semua masalah yang dapat diselesaikan dalam ruang oleh mesin Turing dengan beberapa alfabet tetap. Hal ini memungkinkan untuk mempertimbangkan teorema Space-hierarki dengan akurasi seperti itu.
Argumen standar memberikan konstanta multiplikasi : kita membutuhkan ruang untuk membangun perhitungan beberapa mesin Turing dengan yang universal. Kita juga perlu untuk menyelesaikan masalah dengan penghentian.
Pertanyaan: Apakah DSPACE ( ) sama dengan DSPACE ( )?
cc.complexity-theory
complexity-classes
Alexey Milovanov
sumber
sumber
Jawaban:
Dapat dibuktikan bahwa DSPACE DSPACE jika tumbuh setidaknya secara linear dengan menggunakan varian sederhana dari argumen padding standar. Untuk bahasa , misalkan .( f( 3)2n ) ) ≠ (f(n))fLL′={x0| x| /2∣x∈L}( f( n ) ) f L. L.′= { x 0| x | / 2∣ x ∈ L }
Klaim. DSPACE jika dan hanya jika DSPACE jika .L ∈ ( f ( n ) ) L ′ ∈ ( f ( 2( f( n ) ) L.′∈ ( f( 23n ) ) f( n ) ≥ 32n
(Jawaban pertama saya memiliki beberapa pernyataan yang salah, terima kasih kepada Emil untuk mengetahui ini.)
Pertama-tama saya akan menunjukkan cara menggunakan klaim untuk membuktikan hierarki. Karena tumbuh setidaknya secara linear, kami memiliki DSPACE DSPACE . Ambil bahasa DSPACEf ( 2 f ( n ) ) ⊂ ( f ( 2 n ) ) L ∈ ( f ( 2 n ) ) ∖ ( f ( n ) ) L ′ ∈ ( f ( 4 ( 4)( 2 f( n ) ) ⊂ ( f( 2 n ) ) L ∈ ( f( 2 n ) ) ∖ DSPACE . Menggunakan klaim, DSPACE DSPACE , di mana kesetaraan terakhir adalah dengan asumsi tidak langsung. Tetapi kemudian DSPACE DSPACE , di mana kesetaraan terakhir lagi dengan asumsi tidak langsung, memberikan kontradiksi.( f( n ) ) L′∈ (f(43n))= (f(n))L∈(f(3(f(n)) L∈ (f(32n))= (f(n))(f(n))
Bukti klaim. Jika DSPACEL′∈ ( f ( 2(f(23n)) , maka untuk membuktikan DSPACE , kita hanya perlu menulis 0's di akhir input dan mensimulasikan mesin yang menerima . Karena , ini tidak akan menambah ruang yang kita gunakan. (Faktanya, mengetahui berapa 0 untuk menulis tidak jelas sama sekali jika kecil dan kita tidak dapat meningkatkan ukuran alfabet - sebagai gantinya, kita dapat menggunakan kaset lain dan menulis bahwa segala sesuatu yang akan datang setelah akhir .)L∈ (f(n))| x| /2xL′f(n)≥3(f(n)) |x|/2 x L′ f(n)≥32n f x
Arah lainnya hanya sesederhana ini dengan mengganti 0 dengan *, jika kita diizinkan menulis *. (Lihat masalah dengan ini di komentar saya untuk pertanyaan.) Jika kita tidak diizinkan untuk menulis bintang, maka kita sedikit mengubah definisi sebagai . Sekarang, alih-alih menulis bintang, kami menyimpan input asliL′ L′={x10|x|/2∣x∈L} x10|x|/2 dan bekerja dengan itu. Tetapi setiap kali kita mencapai angka 1, kita ke kanan sampai kita menekan angka 1 yang lain untuk memeriksa apakah itu kata akhir 1 atau tidak. Jika kami telah menemukan 1 lainnya, kami hanya kembali ke 1. kami. Jika belum, kami masih kembali, tetapi kami akan tahu bahwa itu harus diperlakukan sebagai bintang - jika kami ingin menulis di atasnya, maka kami juga menulis 10 setelahnya untuk memiliki penanda akhir kata saat ini. (Bahkan, ada juga tangkapan kecil di bagian ini jika kecil - bagaimana kita dapat memeriksa apakah inputnya dalam bentuk ? Tanpa merusak input, saya hanya dapat menyelesaikan ini dengan menggunakan beberapa kepala untuk kecil .)f x10|x|/2 f
sumber