Saya mencoba memahami keberadaan bahasa yang tidak dikenali. Untuk mendapatkan ini, saya perlu tahu mengapa mesin Turing hanya mengenali satu bahasa, bukan beberapa. Kenapa ini?
Saya mencoba memahami keberadaan bahasa yang tidak dikenali. Untuk mendapatkan ini, saya perlu tahu mengapa mesin Turing hanya mengenali satu bahasa, bukan beberapa. Kenapa ini?
Jawaban:
Bahasa yang dikenali oleh mesin Turing, menurut definisi, adalah set string yang diterimanya. Ketika input diberikan ke mesin, itu diterima atau tidak. Setiap input tertentu ke mesin itu selalu diterima (dalam bahasa) atau selalu tidak diterima (tidak dalam bahasa). Jadi tidak ada mekanisme di mana mesin Turing tunggal bahkan dapat menerima lebih dari satu bahasa.
Pikirkan seperti ini: TM seperti komputer dengan perangkat lunak yang dimuat. Setiap perangkat lunak melakukan satu hal, bukan? Misalnya, pikirkan komputer Anda dan anggap ia hanya memiliki 1 program yang dimuat di dalamnya. Kemudian PC + "photoshop" hanya melakukan photoshop, sedangkan PC + "mine sweeper" hanya menyapu ranjau.
Jadi mesin Turing adalah makhluk yang sangat sederhana, yang pada setiap proses mendapatkan input dan output tunggal baik ya atau tidak . Di mana input itu mengatakan ya, dan yang mengatakan tidak - ini diatur oleh "program" TM sebagaimana ditentukan oleh negara dan fungsi transisi. Setelah ini diperbaiki, "program" diperbaiki, dan untuk setiap input yang diberikan hanya ada satu jawaban: Ya atau Tidak (terima / tolak). Ini mendefinisikan persis satu bahasa = semua input yang menghasilkan Ya ketika diberikan kepada TM.
Di sisi lain, set dari semua TM setara dengan seperangkat komputer + "software" dengan semua program yang mungkin. Sekarang lebih banyak bahasa dapat diputuskan - tetapi masih, masing-masing TM spesifik memutuskan (atau mengenali) hanya satu bahasa.
Mesin Turing berfungsi seperti yang mereka lakukan karena kami memilih untuk mendefinisikannya juga. Kita dapat memiliki definisi yang lebih canggih, tetapi pertanyaannya adalah apakah itu akan memenuhi tujuan, apakah itu akan memungkinkan kita melakukan lebih banyak hal. Dan, sejauh yang kita tahu, jawabannya adalah tidak.
Sangat mudah untuk membuat model Turing Machines yang mengenali dua bahasa. Bahasa yang diberikan dan L 2 , kita dapat mendefinisikan TM dengan 2 jenis status penerimaan: satu untuk L 1 dan satu untuk L 2 . Seorang TM akan dikatakan menerima L i jika ia memasuki suatu kondisi tertentu sebagai negara penerima. Tetapi itu akan melanjutkan perhitungan untuk melihat apakah ia juga bisa memasuki jenis lain dari negara penerima. Dan kita bisa meminta agar nanti berhenti, atau mungkin tidak. Anda kemudian dapat membangun seluruh teori pada mesin seperti itu. Itu akan berhasil dan jauh lebih rumit dari apa yang biasanya kita lakukan.
Untuk menjawab pernyataan David Richerby bahwa " tidak ada mekanisme di mana satu mesin Turing bahkan dapat menerima lebih dari satu bahasa ", itu hanya karena kami memilih untuk tidak mempertimbangkan mekanisme tersebut. Bahkan jika Anda membatasi TM ke model yang sangat standar, Anda bisa mengatakan bahwa input diakui dalam bahasa ketika TM berhenti dalam keadaan menerima dengan jumlah langkah ganjil, dan itu ada di L 2 ketika TM menerima dengan sejumlah langkah. Berkat non-determinisme, ini tidak akan mencegah TM dari mengenali kedua bahasa yang berpotongan.
Intinya adalah bahwa semua jenis varian dapat digunakan untuk melakukan teori. Juga pendekatan yang sangat berbeda telah dicoba untuk memodelkan apa itu komputasi, seperti lambda-calculus, compinatory logic, teori fungsi rekursif, dan banyak lagi.
Selalu ditunjukkan bahwa tidak ada dari mereka yang melakukan sesuatu yang tidak dapat dilakukan oleh model sederhana kami di mana TM hanya mengenali satu bahasa. Sedemikian rupa sehingga diduga bahwa ia melakukan apa pun yang bisa dilakukan. Itu disebut tesis Gereja-Turing . Ini adalah landasan teori komputasi, yang, sejauh yang kita tahu, menentukan bahasa apa yang dapat dikenali, atau tidak.
Jadi kita sebaiknya menggunakan model sederhana, karena model yang kompleks akan membuat hidup kita lebih sulit, tanpa manfaat nyata.
Tentu saja, kami terkadang menggunakan model lain karena mereka memungkinkan kami untuk lebih memahami beberapa masalah.
Saya ingin memperluas pada satu titik dalam jawaban Richerby:
Ketika input diberikan ke mesin, itu diterima atau tidak.
Alasan untuk ini adalah bahwa mesin Turing bersifat deterministik: diberi input dan kondisi awal yang sama, mesin Turing akan selalu melakukan hal yang sama setiap kali Anda menjalankannya (baik berakhir dalam kondisi terima yang sama atau dalam kondisi tolak yang sama, atau lewati selamanya ).
Selain itu, kami dapat dengan mudah membuktikan bahwa setiap mesin Turing mengenali persis satu bahasa:
Anggaplah, dengan kontradiksi, bahwa mesin Turing M mengenali dua bahasa berbeda L1 dan L2. Karena L1 dan L2 berbeda, harus ada string S yang ada di L1 tetapi tidak di L2 (tanpa kehilangan generalitas - bisa jadi sebaliknya tetapi buktinya akan berjalan dengan cara yang sama dari sini dengan L1 dan L2 dipertukarkan ). Sekarang jalankan M pada S. Jika diterima, maka kontradiksi tercapai karena S akan berada di L2. Jika tidak menerima (menolak atau loop), maka kontradiksi tercapai karena S tidak akan berada di L1.
Mesin Turing mengenali satu bahasa karena itulah definisi dari kata mengenali : Bahasa yang dikenali mesin Turing adalah kumpulan semua string / input yang diterima mesin Turing.
Jawabannya tergantung pada apa yang sebenarnya Anda pahami ketika Anda maksudkan "mesin Turing". Ada tiga komponen untuk setiap model komputasi (membatasi untuk penentu / akseptor di sini):
Untuk mesin Turing, sintaksis akan menjadi tuple set keadaan, huruf, fungsi transisi, dan sebagainya. The semantik akan definisi dari perhitungan , yaitu untuk menggambarkan bagaimana menerapkan fungsi transisi dalam rangka untuk memperoleh isi rekaman setelah beberapa langkah. The kriteria penerimaan adalah untuk mengatakan, "ketika hal ini terjadi, kita berhenti dan hasilnya adalah bahwa".
Sekarang, apakah mesin Turing hanya sintaks dan semantik untuk Anda, atau apakah Anda memasukkan kriteria penerimaan juga? Jika Anda melakukan yang pertama, TM mana pun dapat menerima banyak bahasa dengan menggunakan kriteria penerimaan yang berbeda; Anda bahkan dapat membayangkan kriteria penerimaan yang memungkinkan untuk beberapa bahasa yang diterima (pikirkan tentang TM dua parameter, misalnya). Namun, jika Anda melakukan yang terakhir, tidak ada ruang gerak dan kriteria penerimaan yang biasa memang memungkinkan tepat satu bahasa per TM (dari jenis ini).
The biasa definisi dan penggunaan istilah dalam TCS mencakup semua tiga komponen. Itu masuk akal karena, khususnya, mengubah kriteria penerimaan dapat mengubah kelas objek yang diwakili oleh robot secara drastis , jadi kita perlu memperbaiki kriteria untuk mengetahui apa yang kita bicarakan.
Sebagai contoh, bandingkan automata terbatas dan Büchi automata . Sintaks dan semantiknya persis sama, tetapi yang satu menerima kata-kata yang terbatas sementara yang lain menerima kata-kata yang tak terbatas!
Coba cari tahu apa yang terjadi jika Anda memasukkan kriteria penerimaan Büchi automata ke definisi TM.
Sekarang, mengapa kriteria penerimaan yang biasa menjadi kriteria? Selama Anda membatasi diri pada bahasa string terbatas, tidak banyak yang akan berubah dengan memiliki beberapa bahasa per TM, pada tingkat konseptual: kami masih akan dapat menerima serangkaian bahasa yang sama. Jadi kami tetap berpegang pada model yang lebih sederhana. Itu tidak berarti, bagaimanapun, bahwa model yang lebih terlibat tidak dapat berguna untuk pemodelan dalam aplikasi - tapi itu di luar ruang lingkup TCS (yang memegang otoritas definitorial).
Bahasa adalah seperangkat string. Bukankah penyatuan dua bahasa L1, dan L2 satu set string (sebut saja L3), dan begitu juga dengan bahasa lain? Kemudian, jika mesin Turing mengenali kedua bahasa, ia mengenali L3, satu bahasa.
tidak ada jawaban lain yang menunjukkan keberadaan Mesin Universal Turing (s) seperti yang pertama kali dijelaskan / ditemukan oleh Turing dalam bukti berhenti. ya TM menerima satu bahasa enumerasi rekursif tunggal, tetapi UTM dapat mengenali bahasa enumerasi rekursif apa pun jika dikodekan pada input bersama dengan string input. jadi pertanyaannya memiliki kualitas mirip zen. TM hanya menerima satu bahasa dan semua bahasa yang memungkinkan untuk dikodekan.