Membuktikan penutupan di bawah pembalikan bahasa diterima oleh min-heap automata

16

Ini adalah pertanyaan tindak lanjut dari yang satu ini .

Dalam pertanyaan sebelumnya tentang mesin negara eksotis , Alex ten Brink dan Raphael membahas kemampuan komputasi dari jenis mesin negara yang aneh: min-heap automata. Mereka mampu menunjukkan bahwa himpunan bahasa yang diterima oleh mesin tersebut ( ) bukan merupakan himpunan bagian atau superset dari himpunan bahasa bebas konteks. Mengingat resolusi sukses dan minat jelas dalam pertanyaan itu, saya melanjutkan bertanya beberapa pertanyaan tindak lanjut.HAL.

Hal ini diketahui bahwa bahasa reguler tertutup di bawah berbagai operasi (kita dapat membatasi diri untuk operasi dasar seperti union, intersection, complement, perbedaan, Rangkaian, bintang Kleene, dan pembalikan), sedangkan bahasa bebas konteks memiliki penutupan yang berbeda sifat (ini ditutup di bawah serikat, Rangkaian, bintang Kleene, dan reversal).

Apakah HAL ditutup dengan pembalikan?

Patrick87
sumber
Apa kegunaan mesin tersebut? Atau apakah ini latihan akademis?
Dave Clarke
@ DaveClark Yah, mereka kebanyakan latihan akademis (sejauh yang saya tahu, saya hanya mengarangnya di pertanyaan terkait). Namun, mereka dapat melakukan perhitungan dengan cara yang sama seperti mesin lain (DFA, TM, dll.), Jadi mungkin ada gunanya bagi mereka.
Patrick87
Pertanyaan ini menggambarkan mengapa Anda ingin memiliki tata bahasa yang menyertai automata Anda. Arr, otakku!
Raphael
4
Saya mencoba untuk membuktikannya dengan menggunakan bahasa format , tapi terlalu lama dan aku menyerah. Mungkin ide ini akan membantu siapa pun. {xyy is a lexicographically sorted copy of x}
Ran G.
@ RanG .: Saya pikir itu harus bekerja. Saya senang memberikan hadiah kepada jawaban yang membuktikan bahwa bahasa tersebut dalam dan memberikan alasan yang layak bahwa pembalikan tidak. HSEBUAHL.
Raphael

Jawaban:

4

Pertimbangkan bahasa (di mana # 0 ( x ) menunjukkan jumlah nol dalam x ).

L×2={xyzx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x

Sangat mudah untuk memutuskan menggunakan mesin HAL - mengamati bahwa kebutuhan mesin untuk melacak dua sifat: jumlah angka nol di x vs y dan panjang x , y (vs z ). Hal ini dapat mendorong ke dalam tumpukan untuk setiap nol itu melihat di x (dan kemudian pop untuk setiap nol terlihat di y ); selain itu ia mendorong bit apa pun di x , y (dan kemudian muncul sedikit pun z ). Karena semua tombol ditekan, mereka tidak mengganggu perhitungan. The L×2xyx,yz0x0y1x,y1z10 berfungsi sebagai pembatas, dan praktis bisa diabaikan.

Sekarang, mari , menjadi bahasa terbalik. Yaitu, L = { z y x x , y , z { 0 , 1 } , # 0 ( x ) = # 0 ( y )  dan  | x | + | y | = Z } Kami akan menunjukkan bahwa tidak ada mesin HAL dapat memutuskan L .L=L×2R

L={zyxx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
L

Intuisi adalah sebagai berikut. Seperti di atas, mesin harus melacak kedua panjang dan jumlah angka nol di x , y . Namun, dalam hal ini perlu melacaknya secara bersamaan . Ini tidak dapat dilakukan melalui tumpukan. Lebih detail, setelah membaca z , heap berisi informasi tentang panjang | x | + | y | . saat membaca y mesin juga harus menyimpan jumlah nol di dalam y . Namun, informasi ini tidak dapat mengganggu informasi yang sudah ada di tumpukan yang kami harapkan xzx,yz|x|+|y|yyxmenjadi. Sangat intuitif, baik informasi tentang jumlah nol akan "di bawah" informasi tentang panjang , dan kemudian kita tidak dapat mengaksesnya saat membaca x , atau "di atas" informasi itu, membuat yang terakhir tidak dapat diakses, atau dua informasi akan "dicampur" dan menjadi tidak berarti.xx

Secara lebih formal, kita akan menggunakan semacam argumen "memompa". Yaitu, kami akan mengambil input yang sangat panjang, dan menunjukkan bahwa "keadaan" mesin harus mengulang sendiri selama memproses input itu, yang akan memungkinkan kami untuk "mengganti" input begitu mesin mengulangi "keadaan" -nya.

Untuk bukti formal, kami memerlukan penyederhanaan struktur mesin HAL, yaitu, bahwa itu tidak mengandung "loop" dari -transisi 1 . Dengan asumsi ini kita dapat melihat bahwa untuk setiap simbol input yang diproses mesin, konten heap dapat meningkat / berkurang paling banyak c (untuk beberapa konstanta yang cukup besar c ).ε1cc

Bukti.
Asumsikan memutuskan L , dan pertimbangkan input yang cukup panjang (katakanlah, dengan panjang 4 n , dengan demikian | x | = | y | = n , | z | = 2 n , dengan mengabaikan s selanjutnya). Untuk menjadi beton, memperbaiki z , y dan menganggap bahwa # 0 ( y ) = n / 2 . Perhatikan bahwa ada ( nHL4n|x|=|y|=n|z|=2nz,y#0(y)=n/2yang berbedax's sehinggazyxL.(nn/2)xzyxL

Pertimbangkan konten heap segera setelah memproses . Ini berisi paling 3 n c simbol (di mana setiap simbol adalah dari alfabet tetap Γ ), oleh asumsi kita. Namun, ada ( nzy3ncΓyang berbedax'syang seharusnya diterima (yang secara substansial lebih besar dari jumlah yang mungkin isi yang berbeda untuk heap, dengan meningkatnya ini secara eksponensial, sedangkan jumlah yang berbeda dari tumpukan meningkat polynomially, lihat di bawah). Ambil dua inputx1,x2yang harus diterima, sehingga berikut ini berlaku:(nn/2)xsx1,x2

  1. Awalan panjang dari x 1 memiliki nomor yang berbeda dari nol dari awalan dari x 2 yang sama panjang.n/2x1x2
  2. n/2xx1x2x1,x2n20.8n2x1,x2(3.5cn)|Γ||Q|3

zyx1px2sx1pxn/2x2sx2x1px2sx1x2#0(y)x1x2

1
2 x1n/2n/4log(nk)nH(k/n)H()H(1/4)0.81(nn/4)>20.8nn
3 Γ|Γ|nnn(n+1|Γ|1)n|Γ||Γ|

Ran G.
sumber
Nice! Will have to read the formal part again later. 1) Ad ¹: See also here. 2) The argument breaks down if we allow non-deterministic choice of the returned heap symbol (among all symbols of the same priority).
Raphael