Bagaimana saya menunjukkan bahwa apakah PDA menerima string

8

Bagaimana saya menunjukkan bahwa masalah dalam memutuskan apakah PDA menerima beberapa string dari formulir {w!ww{0,1}} tidak dapat diputuskan?

Saya telah mencoba untuk mengurangi masalah ini ke masalah lain yang tidak dapat diputuskan seperti apakah dua tata bahasa bebas konteks menerima bahasa yang sama. Namun, saya tidak yakin bagaimana menggunakannya sebagai subrutin.

David Faux
sumber

Jawaban:

12

Inilah pendekatan saya: Saya akan menunjukkan bahwa jika Anda dapat memutuskan masalah Anda, maka Anda dapat memutuskan masalah korespondensi Post (PCP), yang diketahui tidak dapat ditentukan.

Ingat, PCP adalah masalah keputusan yang menanyakan apakah dalam satu set 2-tuples P={(x1,y1),,(xn,yn)} Anda dapat membangun urutan (termasuk. pengulangan) sedemikian rupa sehingga digabungkan xidan digabungkan yis dari urutan ini membentuk kata yang sama. Perhatikan bahwa alfabet harus memiliki setidaknya 2 karakter.

Jadi, biarkan Pmenjadi contoh dari PCP. Pertimbangkan tata bahasa bebas konteks berikut, di mana kami telah memperkenalkan simbol terminal baruti Untuk ielemen ke-dalam P. Tata bahasanya memiliki aturan berikut:

SX!YXx1Xt1x2Xt2xnXtnXx1Xt1x2Xt2xnXtnεYy1Yt1y2Yt2ynYtnε
(Variabel X hanya ada di sana untuk mengesampingkan S!).

Tentu saja, mengingat tata bahasa apa pun, kita dapat menemukan PDA yang sesuai yang menerima bahasa yang sama dengan tata bahasa. Jadi, buat PDA yang sesuai, dan kemudian gunakan algoritma hipotetis untuk masalah Anda untuk menentukan apakah PDA ini menerima kata apa pun dari formuliru!v (Yaitu, apakah seseorang dapat memperoleh kata dari formulir tersebut u!vdari tata bahasa ini). Saya akan menunjukkan cara menggunakan informasi ini untuk menyelesaikan contoh PCPP.

Asumsikan sekarang u!vadalah kata dalam tata bahasa ini. Katau memiliki dua bagian, akhiran, yang terdiri dari titerminal, dan sisanya disebut awalan. Hal yang sama berlaku untukv. Kita punyau=vjika dan hanya jika awalan dan sufiksnya bertepatan. Sufiks bertepatan hanya jika kita menggunakan urutan tupel yang samaP untuk membangun kata-kata u dan v. Awalan dariu dan v bertepatan jika gabungan dari xidan yis (berdasarkan urutan tupel terbalik yang diberikan oleh tis) sama. Karenanyau=v jika dan hanya jika ada solusi untuk instance PCP P.

Demikian pula, jika ada solusi untuk contoh PCP P, maka dari solusinya mudah untuk membangun kata bentuk u!v yang diturunkan dari tata bahasa ini.

Oleh karena itu contoh PCP P punya solusi jika dan hanya jika tata bahasa ini mengandung kata dalam bentuk u!v. Jika ada algoritma untuk memutuskan masalah Anda, kami dapat menggunakannya untuk menyelesaikan PCP. Namun tentu saja PCP diketahui tidak dapat diputus, sehingga masalah Anda juga tidak dapat diputuskan.

A.Schulz
sumber
1
Bagus! Yah, jelas lebih mudah daripada solusi saya sendiri. +1
Hendrik
1
Saya merasa sulit untuk mengikuti alur jawaban ini. Mengapa Anda berdebat tentang keberadaan PDA / tata bahasa di paragraf ketiga? Jika saya membaca dengan benar, Anda ingin memetakan instance PCP ke tata bahasa, sehingga mengurangi pertanyaan apakah PCP dapat dipilih. Untuk itu, Anda juga harus menunjukkan kebalikan dari paragraf terakhir, yaitu bahwa jika tidak u!uditerima, PCP tidak memiliki solusi. (Trik yang bagus denganti, ngomong-ngomong.)
Raphael
@ Raphael, saya mengedit jawaban untuk menjawab komentar Anda. Poin bagus - terima kasih!
DW
5

Pendekatannya mungkin sebagai berikut. Cobalah untuk membuat bahasa bebas konteks (= PDA) yang mengkode langkah-langkah perhitungan TM, sehingga perhitungan lengkap berhasil jika ada kata dari bentuk yang Anda gambarkan.

Pertama, Anda perlu mengkode konfigurasi terpisah: isi kaset + status + posisi kepala (Anda akan melihat bahwa untuk kesetaraan tata bahasa). Bahasa bebas konteks dapat menyandikan satu langkahCC perhitungan yang disediakan Anda menggunakan gambar cermin C#m(C)dimana m(C)menunjukkan gambar cermin (pembalikan) dari (Saya ceroboh di sini: Anda mungkin harus membedakan konfigurasi dan deskripsinya.)

Sekarang perhatikan bahasa langkah-langkah terpisah, disatukan dengan bahasa konfigurasi duplikat: C0#C1#m(C2)#C3#m(C4)#C2n1#m(C2n)#Cf! C1#m(C1)#C2#m(C2)#Cn+1#m(Cn+1) with for every k, C2k1(C2k). This is context-free, additionally code C0 as initial and Cf as final configurations.

Now the first part ensures we have consecutive steps, the second part that successive configurations are equal. If both parts match we have a computation. Which we cannot decide.

That is the idea. I may have some indexes wrong, and the whole sequence has to be encoded in binary, but that can be solved.

Hendrik Jan
sumber
Okay I got it. However the part "Now consider the language of separate steps, concatenated with the language of duplicated configurations ..." could profit from further explanations. For example, you could use the correct indices. Anyway, its a nice idea.
A.Schulz