Bagaimana saya bisa mengubah mesin Turing yang mengenali bahasa

19

Menurut artikel Wikipedia ini , tata bahasa tidak terbatas setara dengan mesin Turing. Artikel tersebut mencatat bahwa saya dapat mengubah mesin Turing apa pun menjadi tata bahasa yang tidak dibatasi, tetapi hanya menunjukkan cara mengubah tata bahasa menjadi mesin Turing.

Bagaimana saya melakukan itu dan mengubah mesin Turing yang mengenali bahasa menjadi tata bahasa yang tidak dibatasi? Saya telah mencoba mengganti aturan transisi dengan aturan tata bahasa, tetapi mesin Turing dapat memiliki banyak konfigurasi negara yang berbeda juga ...L

Ava Petrofsky
sumber

Jawaban:

9

Kami menyandikan konten rekaman mesin Turing dalam bentuk sentensial; satu set khusus non-terminal mengkodekan keadaan saat ini. Hanya ada satu dari mereka dalam bentuk sentensial pada titik waktu mana saja, ditempatkan di sebelah kanan simbol yang ditunjuk TM saat ini.

Gagasan penting kedua adalah bahwa kita harus membalik proses: TM mengambil kata tersebut sebagai input dan mengubahnya menjadi atau 0 , atau tidak berakhir. Tata bahasa, bagaimanapun, harus menghasilkan kata. Untungnya, tata bahasa secara inheren non-deterministik, jadi kita bisa membiarkannya "menebak" dari mana 1 penerima berasal; semua kata yang menyebabkan TM menerima dapat dihasilkan kemudian.101

Misalkan himpunan state-nonterminals; wlog misalkan Q 0 menjadi starting-state-nonterminal dan Q FQ set dari accept-state-nonterminals. Pertama, kita perlu aturan awal yang menghasilkan semua kemungkinan konfigurasi yang dapat diterima:Q={Q0,,Qk}Q0QFQ

S#1Qf#untuk semua .QfQF

Demikian pula, kita berakhir ketika kita "mencapai" keadaan awal di posisi yang benar, yaitu pada simbol pertama:

#aQ0#aaΣ

Menerjemahkan transisi keadaan aktual sangat mudah:

aQcQ  for a,cΣ(a,Q,N)δ(c,Q)aQbacQ for a,b,cΣ(b,Q,L)δ(c,Q)abQcQb for a,b,cΣ(a,Q,R)δ(c,Q)

###d=#

#Q0Σ

Raphael
sumber