Bagaimana cara menunjukkan dua model komputasi yang setara?

21

Saya mencari penjelasan tentang bagaimana seseorang dapat membuktikan bahwa dua model perhitungan adalah setara. Saya telah membaca buku-buku tentang masalah ini kecuali bahwa bukti kesetaraan dihilangkan. Saya punya ide dasar tentang apa artinya dua model perhitungan menjadi setara (tampilan automata: jika mereka menerima bahasa yang sama). Apakah ada cara lain untuk berpikir tentang kesetaraan? Jika Anda dapat membantu saya memahami bagaimana membuktikan bahwa model mesin Turing setara dengan kalkulus lambda, itu sudah cukup.

saadtaame
sumber
Saya kira Anda telah memilih buku yang salah.
Raphael
@ Raphael Apa buku yang bagus tentang masalah ini?
saadtaame
Saya ingin mengatakan "buku apa pun tentang automata", tetapi tampaknya sudah benar. Sayangnya, saya tidak punya buku bahasa Inggris yang pas, maaf.
Raphael
1
Buku tentang automata saja tidak akan cukup.
reinierpost
Buku apa yang Anda gunakan?
saadtaame

Jawaban:

20

Anda menunjukkan bahwa model mana pun dapat mensimulasikan yang lain, yaitu diberi mesin dalam model A, menunjukkan bahwa ada mesin dalam model B yang menghitung fungsi yang sama. Perhatikan bahwa simulasi ini tidak harus dapat dihitung (tetapi biasanya demikian).

Pertimbangkan, misalnya, pushdown automata dengan dua tumpukan (2-PDA). Dalam pertanyaan lain , simulasi di kedua arah diuraikan. Jika Anda melakukan ini secara formal, Anda akan menggunakan mesin Turing umum (tuple) dan secara eksplisit membuat seperti apa 2-PDA yang sesuai, dan sebaliknya.


Secara formal, simulasi seperti itu mungkin terlihat seperti ini. Membiarkan

M=(Q,ΣI,ΣO,δ,q0,QF)

menjadi mesin Turing (dengan satu pita). Kemudian,

AM=(Q{q1,q2},ΣI,ΣO,δ,q1,QF)

dengan ΣO=ΣO.{$} dan δ diberikan oleh

(q1,a,hl,hr)δ(q1,ahl,hr) untuk semuaaΣI danhr,hlΣO ,
(q1,ε,hl,hr)δ(q2,hl,hr) untuk semuahr,hlΣO ,
(q2,ε,hl,hr)δ(q2,ε,hlhr) untuk semuahr,hlΣO denganhl$ ,
(q2,ε,$,hr)δ(q0,$,hr) untuk semuahrΣO ,
(q,ε,hl,hr)δ(q,ε,hla)(q,hr)δ(q,a,L) untuk semuaqQ danhlΣO ,
(q,ε,$,hr)δ(q,$,Sebuah)(q,hr)δ(q,Sebuah,L.) untuk semuaqQ ,
(q,ε,hl,hr)δ(q,Sebuahhl,ε)(q,hr)δ(q,Sebuah,R) untuk semuaqQ,hlΣHAI ,
(q,ε,hl,$)δ(q,hl,$) untuk semuaqQ danhlΣHAI , dan
(q,ε,hl,hr)δ(q,hl,Sebuah)(q,hr)δ(q,Sebuah,N) untuk semuaqQ,hlΣHAI

adalah 2-PDA setara. Di sini, kita mengasumsikan bahwa mesin Turing menggunakan ΣHAI sebagai simbol kosong, kedua tumpukan dimulai dengan marker $ΣHAI (yang tidak pernah dihapus) dan (q,Sebuah,hl,hr)δ(q,l1...lsaya,r1...rj) berarti bahwa SEBUAHM. mengkonsumsi masukan Sebuah , switch negara dariq toq dan memperbarui tumpukan seperti:

tumpukan pembaruan
[ sumber ]

Tetap untuk menunjukkan bahwa SEBUAHM. memasuki keadaan akhir pada xΣsaya jika dan hanya jika M. melakukannya. Ini cukup jelas dengan konstruksi; secara formal, Anda harus menerjemahkan penerimaan yang berjalan pada M. ke dalam penerimaan yang berjalan pada SEBUAHM. dan sebaliknya.

Raphael
sumber
@frabala Anda benar, saya salah menyatakan keadaan awal. Tetap sekarang, terima kasih!
Raphael
4

Pada awal Sistem Komunikasi dan Seluler: Pi-Calculus oleh Robin Milner, ada pengantar tentang automata dan bagaimana mereka dapat mensimulasikan satu sama lain sehingga mereka tidak dapat dibedakan: Bisimulasi . (bdk Bisimulasi di wikipedia)

Saya tidak ingat dengan baik, saya harus membaca ulang bab ini, tetapi ada masalah dengan simulasi dan bisimulasi yang membuat mereka tidak cukup untuk persamaan komputasi.

Dengan demikian Robin Milner memperkenalkan Pi-Calculus-nya dan memaparkannya untuk sisa buku ini.

Pada akhirnya, dalam buku terakhirnya The Space and Motion of Communicating Agents , Anda dapat melihat Robin Milner's Bigraphs. Mereka dapat memodelkan Automata, Petri nets, Pi-Calculus dan metodologi komputasi lainnya.

Stephane Rolland
sumber
2

Sejauh yang saya tahu, satu-satunya (atau paling tidak paling umum) cara untuk melakukan ini adalah membandingkan bahasa yang diterima mesin / model. Itulah inti teori Automata: ia mengambil konsep yang tidak jelas dari suatu masalah atau algoritma dan mengubahnya menjadi himpunan matematis konkret (yaitu bahasa) yang dapat kita pikirkan.

Cara termudah untuk melakukan ini adalah, diberi mesin / fungsi sewenang-wenang dari satu model, untuk membangun mesin dari model kedua yang menghitung bahasa yang sama. Kemungkinannya adalah Anda akan menggunakan induksi dalam panjang ekspresi, status dalam mesin, aturan dalam tata bahasa, dll.

Saya belum pernah melihat ini dilakukan dengan Lambda dan TM (walaupun saya 99% yakin itu mungkin), tapi saya pasti melihat hal semacam ini untuk membuktikan kesetaraan NFA dan ekspresi Reguler. Pertama Anda menunjukkan NFA yang dapat menerima atom apa pun, kemudian menggunakan induksi, Anda membuat NFA yang menerima penyatuan / penggabungan / Kleene-bintang dari setiap NFA yang lebih kecil.

Kemudian Anda melakukan yang sebaliknya, untuk menemukan RE untuk NFA apa pun.

Ya ampun
sumber