Mesin Turing, pertama kali dijelaskan oleh Alan Turing dalam (Turing 1937), adalah perangkat
komputasi abstrak sederhana dimaksudkan untuk membantu menyelidiki sampai sejauh mana
dan keterbatasan apa yang dapat dihitung.
Turing tertarik pada pertanyaan tentang apa artinya bagi tugas untuk dihitung, yang merupakan
salah satu pertanyaan mendasar dalam filsafat ilmu komputer. Secara intuitif tugas dapat dihitung
apakah mungkin untuk menentukan urutan instruksi yang akan menghasilkan penyelesaian tugas
ketika dilakukan oleh beberapa mesin. Seperti satu set instruksi yang disebut prosedur yang
efektif, atau algoritma, untuk tugas tersebut. Masalah dengan intuisi ini adalah bahwa apa yang
dianggap sebagai prosedur efektif mungkin tergantung pada kemampuan mesin yang digunakan
untuk melaksanakan instruksi. Pada prinsipnya, perangkat dengan kemampuan yang berbeda
mungkin dapat menyelesaikan set instruksi yang berbeda, dan karena itu dapat mengakibatkan
berbagai kelas tugas komputasi (lihat entri pada komputabilitas dan kompleksitas).
Turing mengusulkan kelas perangkat yang kemudian dikenal sebagai mesin Turing. Perangkat ini
menyebabkan gagasan formal perhitungan yang kita akan memanggil Turing-komputabilitas.
Sebuah tugas adalah Turing dihitung jika dapat dilakukan oleh beberapa mesin Turing.
Proposisi bahwa gagasan Turing menangkap persis ide intuitif prosedur yang efektif disebut
Gereja-Turing tesis. Proposisi ini tidak dapat dibuktikan, karena merupakan klaim tentang
hubungan antara konsep formal dan intuisi. Tesis ini akan dibantah oleh sebuah algoritma secara
intuitif diterima untuk tugas yang tidak Turing-dihitung, dan tidak ada-balik tersebut telah
ditemukan. Gagasan didefinisikan secara independen lain komputabilitas berdasarkan fondasi
alternatif, seperti fungsi rekursif dan mesin sempoa telah terbukti setara dengan Turingkomputabilitas. Kedua fakta menunjukkan bahwa ada setidaknya sesuatu yang alami tentang
gagasan ini komputabilitas.
Mesin Turing bukan obyek fisik tetapi yang matematika. Kami membutuhkan tidak solder atau
chip silikon untuk membangun satu. Arsitektur hanya dijelaskan, dan tindakan yang dapat
dilakukan oleh mesin sederhana dan jelas ditentukan. Turing mengakui bahwa tidak perlu untuk
berbicara tentang bagaimana mesin melakukan tindakannya, tetapi hanya untuk mengambil
seperti yang diberikan ide-ide kembar bahwa mesin dapat melakukan tindakan tertentu, dan
bahwa tindakan-tindakan dapat digambarkan unik.
2.1 Contoh
Dalam rangka untuk berbicara tentang mesin Turing yang melakukan sesuatu yang berguna, kita
harus memberikan penafsiran simbol direkam pada pita. Sebagai contoh, jika kita ingin
merancang sebuah mesin yang akan melakukan beberapa fungsi matematika, selain mengatakan,
maka kita perlu menjelaskan bagaimana menginterpretasikan satu dan nol muncul pada tape
sebagai angka.
Dalam contoh berikut kita akan merupakan jumlah n sebagai blok n + 1 salinan simbol '1' pada
pita. Dengan demikian kita akan mewakili angka 0 sebagai single '1' dan nomor 3 sebagai blok
empat '1 ini.
Kami juga harus membuat beberapa asumsi tentang konfigurasi pita ketika mesin dimulai, dan
ketika selesai, untuk menafsirkan perhitungan. Kami akan berasumsi bahwa jika fungsi yang
akan dihitung membutuhkan n argumen, maka mesin Turing akan mulai dengan kepalanya
memindai paling kiri '1' dari urutan n blok '1 ini. blok '1 yang mewakili argumen harus
dipisahkan oleh suatu kejadian dari simbol' 0 '. Misalnya, untuk menghitung jumlah 3 + 4, mesin
Turing akan dimulai dalam konfigurasi berikut, di mana elips menunjukkan bahwa rekaman itu
hanya memiliki angka nol pada sel-sel yang kita tidak dapat melihat, dan panah ke atas
menunjukkan sel yang saat dipindai.
Di sini mesin penambahan seharusnya membutuhkan dua argumen yang mewakili angka yang
akan ditambahkan, dimulai pada 1 paling kiri dari argumen pertama. Argumen dipisahkan oleh
satu 0 seperti yang diperlukan, dan blok pertama berisi 4 '1, yang mewakili angka 3, dan yang
kedua berisi 5' 1, yang mewakili nomor 4.
Sebuah mesin harus menyelesaikan dalam konfigurasi standar juga. Harus ada satu blok '1 di
rekaman itu, dan mesin harus memindai paling kiri seperti' 1 '. Jika mesin dengan benar
menghitung fungsi maka blok ini harus mewakili jawaban yang benar. Jadi mesin tambahan
dimulai pada konfigurasi di atas harus selesai pada pita yang terlihat seperti ini:
Mengadopsi konvensi ini untuk konfigurasi akhir dari sebuah mesin Turing berarti bahwa kita
dapat membuat mesin dengan mengidentifikasi keadaan akhir dari satu mesin dengan keadaan
awal berikutnya.
Dalam konvensi ini, diagram negara pada Gambar 1 menggambarkan sebuah mesin yang
menghitung penerus (add-satu) fungsi. Itu adalah ketika dimulai pada konfigurasi standar pada
tape mewakili nomor n akan menghentikan dalam konfigurasi standar mewakili jumlah n + 1.
Hal ini dilakukan dengan menggunakan s0 negara untuk memindai dengan yang pertama '0' di
sebelah kanan (single) blok '1 ini. Kemudian menggantikan bahwa '0' oleh '1', dan scan yang
tersisa di s1 negara sampai '0' ditemukan (ini adalah pertama nol di sebelah kiri blok '1' s). Ini
kemudian bergerak kembali untuk memindai pertama '1' dan menghentikan di s2 negara.
Di atas, kita melihat keadaan awal. Klik pada gambar untuk melihat film dari pelaksanaan mesin.
(Klik lagi untuk berhenti dan me-reset.)
Sebagai contoh lain, pertimbangkan mesin pada Gambar 2 yang menghitung fungsi tambahan.
Artinya, ketika mulai pada pita standar mewakili angka n dan m, mesin perhentian pada pita
mewakili n + m.
yang akan dipindai, di mana simbol baru yang akan ditulis, dan yang pita kepala untuk bergerak.
Sekali lagi formulasi ini setara dengan aslinya.
Kaset dua dimensi
Alih-alih rekaman tak terbatas satu dimensi, kita bisa mempertimbangkan dua dimensi "pita",
yang membentang jauh jauh ke atas dan bawah serta kiri dan kanan. Kami akan menambah
formulasi yang transisi mesin dapat menyebabkan kepala baca-tulis untuk bergerak ke atas atau
ke bawah satu sel selain bisa bergerak ke kiri dan kanan. Sekali lagi formulasi ini setara dengan
aslinya.
Gerakan Sewenang-wenang kepala
Memodifikasi definisi mesin Turing sehingga kepala baca-tulis dapat memindahkan jumlah
sewenang-wenang sel pada setiap transisi yang diberikan tidak mengubah gagasan Turingcomputability.
Sewenang-wenang alfabet terbatas
Dalam formulasi asli kami memungkinkan penggunaan hanya dua simbol pada pita. Bahkan kita
tidak meningkatkan kekuatan mesin Turing dengan memungkinkan penggunaan setiap alfabet
terbatas simbol.
Formulasi 5-tuple
Sebuah cara yang umum untuk menggambarkan mesin Turing adalah untuk memungkinkan
mesin untuk kedua menulis dan memindahkan pusat di transisi yang sama. Formulasi ini
membutuhkan 4-tupel dari formulasi asli untuk digantikan oleh 5-tupel
<State0, Simbol, Statenew, Symbolnew, Pindah>
mana Symbolnew adalah simbol tertulis, dan Move adalah salah satu dan.
Sekali lagi, kebebasan tambahan ini tidak menghasilkan definisi baru dari Turing-dihitung.
Untuk setiap salah satu mesin baru di sana adalah salah satu mesin lama dengan sifat yang sama.
Mesin Turing Non-deterministik
Sebuah reformulasi tampaknya lebih radikal gagasan mesin Turing memungkinkan mesin untuk
mengeksplorasi alternatif perhitungan secara paralel. Dalam formulasi asli kita mengatakan
bahwa jika mesin ditentukan beberapa transisi untuk suatu pasangan negara / simbol, dan mesin
itu dalam keadaan seperti itu maka akan berhenti. Dalam reformulasi ini, semua transisi yang
diambil, dan semua perhitungan yang dihasilkan terus secara paralel. Salah satu cara untuk
memvisualisasikan ini adalah bahwa mesin memunculkan salinan dari dirinya sendiri dan pita
untuk setiap transisi alternatif yang tersedia, dan setiap mesin terus perhitungan. Jika salah satu
mesin berakhir dengan sukses, maka seluruh perhitungan berakhir dan mewarisi kaset yang
dihasilkan mesin. Perhatikan kata berhasil dalam kalimat sebelumnya. Dalam formulasi ini,
beberapa negara yang ditunjuk sebagai penerima negara dan ketika mesin berakhir di salah satu
negara tersebut, maka perhitungan berhasil, jika perhitungan tidak berhasil dan mesin lain
melanjutkan pencarian mereka untuk hasil yang sukses.
Penambahan non-determinisme untuk mesin Turing tidak mengubah definisi Turing-dihitung.
Formulasi asli Turing Mesin Turing menggunakan representasi 5-tuple dari mesin. Posting
memperkenalkan representasi 4-tupel, dan penggunaan dua arah pita tak terbatas.
Sebuah mesin yang lebih kompleks
Selain melakukan fungsi numerik menggunakan representasi unary untuk nomor, kita dapat
melakukan tugas-tugas seperti menyalin blok simbol, menghapus blok simbol dan sebagainya.
Berikut adalah contoh dari mesin Turing yang bila diaktifkan dalam konfigurasi standar pada pita
yang berisi satu blok '1 ini, menghentikan pada pita yang berisi dua salinan dari blok dari' 1,
dengan blok yang dipisahkan oleh satu '0'. Ini menggunakan alfabet yang terdiri dari simbol '0',
'1' dan 'A'.
'1' dan kembali ke kiri, dan masuk ke s3 negara. Serikat s3 dan S4 melewatkan ke kiri atas '1 dan
memisahkan' 0 'pada pita sampai' A 'ditemukan. Ketika ini terjadi, kita kembali ke s0 negara, dan
bergerak ke kanan.
Pada titik ini, kita baik memindai berikutnya '1' dari blok asli, atau blok asli semua telah berubah
menjadi 'A, dan kami memindai pemisah' 0 '. Dalam kasus yang pertama, kita membuat
perjalanan lain melalui negara s1-S4, tetapi dalam kedua, kami pindah ke S5 negara, bergerak ke
kiri. Dalam keadaan ini kita berulang kali akan menemukan 'A, yang kita ganti dengan' 1 ini, dan
bergerak ke kiri. Jika kita menemukan '0', maka semua 'A ini telah dipilih kembali menjadi' 1 ini.
Kami akan memindai '0' di sebelah kiri sel asli, dan jadi kita bergerak ke kanan, dan ke S6
keadaan akhir.
Mesin fotokopi ini dapat digunakan bersama dengan mesin penambahan Gambar 2 untuk
membangun mesin dua kali lipat, yaitu sebuah mesin yang, ketika dimulai pada pita mewakili
nomor n menghentikan pada pita mewakili 2n. Kita bisa melakukan ini dengan terlebih dahulu
menggunakan mesin fotokopi untuk menghasilkan rekaman dengan dua salinan n dalam
rekaman, dan kemudian menggunakan mesin tambahan untuk menghitung n + n (= 2n). Kami
akan melakukan hal ini dengan mengidentifikasi negara menghentikan mesin fotokopi ini (S6)
dengan keadaan awal mesin menambahkan ini (s0).
Pembangunan hanya disarankan bergantung pada kenyataan bahwa mesin fotokopi berakhir
dalam posisi standar, yang diperlukan untuk mesin menambahkan untuk benar menghitung
hasilnya. Dengan merancang mesin Turing yang mulai dan berakhir dalam konfigurasi standar,
kita dapat memastikan bahwa mereka dapat terdiri dengan cara ini. Dalam contoh, mesin
fotokopi memiliki keadaan mengakhiri unik, tapi ini tidak diperlukan. Kita mungkin membangun
sebuah mesin Turing yang menunjukkan hasil perhitungan sebesar berakhir pada salah satu dari
banyak negara, dan kita dapat menggabungkan mesin yang dengan lebih dari satu mesin, dengan
identitas mesin yang mengikuti bergantung pada mesin switching. Hal ini akan memungkinkan
kami untuk menciptakan mesin yang menambahkan satu ke input jika input yang bahkan, dan
ganda jika aneh, misalnya (harus kita ingin untuk beberapa alasan).
Fungsi Computable
Sebagaimana telah kita lihat, mesin Turing dapat melakukan lebih dari menuliskan angka. Antara
lain mereka dapat menghitung fungsi numerik, seperti mesin untuk penambahan (disajikan pada
Gambar 2) perkalian, pengurangan yang tepat, eksponensial, faktorial dan sebagainya.
Fungsi karakteristik predikat adalah fungsi yang memiliki nilai TRUE atau FALSE jika diberikan
argumen yang tepat. Sebuah contoh akan menjadi predikat 'isPrime', yang fungsi karakteristik
adalah TRUE ketika diberi bilangan prima, 2, 3, 5 dll dan SALAH jika tidak, misalnya ketika
argumen adalah 4, 9, atau 12 Dengan mengadopsi konvensi untuk mewakili TRUE dan FALSE,
mungkin itu BENAR diwakili sebagai urutan dua '1 dan sALAH sebagai salah satu' 1 ', kita
dapat merancang Turing-mesin untuk menghitung fungsi karakteristik predikat dihitung. Sebagai
contoh, kita dapat merancang mesin Turing yang bila diaktifkan pada pita mewakili nomor
berakhir dengan BENAR pada pita jika dan hanya jika argumen adalah bilangan prima. Hasil
fungsi tersebut dapat digabungkan dengan menggunakan menggunakan fungsi boolean: AND,
NOT, OR, IF-THEN-ELSE, yang masing-masing Turing-dihitung.
Bahkan fungsi Turing-dihitung hanya fungsi rekursif, dijelaskan di bawah ini.
Universal Turing Machines
Hasil positif yang paling mencolok mengenai kemampuan mesin Turing adalah adanya Universal
Mesin Turing (UTM). Ketika memulai sebuah rekaman yang berisi pengkodean mesin Turing
lain, sebut saja T, diikuti oleh input ke T, UTM yang menghasilkan hasil yang sama seperti T
akan dimulai pada saat masukan itu. Pada dasarnya UTM dapat mensimulasikan perilaku setiap
mesin Turing (termasuk dirinya).
Salah satu cara untuk memikirkan UTM adalah sebagai komputer diprogram. Ketika UTM yang
diberikan program (deskripsi komputer lain), itu membuat dirinya bersikap seolah-olah mesin itu
saat memproses input.
Perhatikan lagi, identifikasi kami input-output kesetaraan dengan "berperilaku identik". Sebuah T
mesin bekerja pada masukan t kemungkinan untuk mengeksekusi transisi jauh lebih sedikit yang
UTM yang simulasi T bekerja pada t, tetapi untuk tujuan kita fakta ini tidak relevan.
Dalam rangka untuk merancang mesin seperti itu, pertama-tama perlu untuk menentukan cara
untuk mewakili mesin Turing pada tape untuk UTM untuk memproses. Untuk melakukan ini kita
akan ingat bahwa mesin Turing secara formal direpresentasikan sebagai koleksi 4-tupel. Pertama,
kita akan merancang sebuah pengkodean untuk tupel individu, dan kemudian untuk urutan tuple.
Encoding Mesin Turing
Setiap 4-tupel dalam spesifikasi mesin akan dikodekan sebagai urutan empat blok dari '1 ini,
dipisahkan oleh satu' 0 '
1. Blok pertama yang akan mengkodekan nomor kondisi saat ini, dengan menggunakan unary
nomor konvensi di atas (n + 1 yang merupakan angka n).
2. Blok kedua yang akan mengkodekan simbol saat ini, menggunakan salah '1' untuk mewakili
simbol nol, dan dua untuk mewakili simbol '1' (lagi karena kita tidak dapat menggunakan nol
yang mewakili '0').
3. Unsur ketiga dari tupel akan merupakan jumlah negara baru di unary notasi angka.
4. Unsur keempat merupakan tindakan, dan ada empat kemungkinan: simbol akan dikodekan
seperti di atas, dengan blok tiga '1 yang mewakili langkah ke kiri () dan blok dari empat' 1 yang
mewakili pindah ke kanan ().
Menggunakan konvensi ini tupel <0, '1', 0, > akan diwakili seperti pada Gambar 5.
Bukti ini dengan menghitung agak tidak memuaskan, karena memberitahu kita bahwa ada fungsi
uncomputable, tetapi memberikan kita dengan tidak ada contoh. Di sini kami memberikan dua
contoh dari fungsi uncomputable.
pada M, maka dengan definisi M mesin itu tidak menghentikan. Tapi sama, jika tidak
menghentikan M definisi M mengatakan bahwa itu harus berhenti.
Ini adalah suatu kontradiksi, dan mesin terputus-putus tidak bisa eksis. Fakta bahwa masalah
terputus-putus tidak Turing-dihitung pertama kali dibuktikan oleh Turing di (Turing 1937). Tentu
saja hasil ini berlaku untuk program-program nyata. Tidak ada program komputer yang dapat
memeriksa kode untuk sebuah program dan menentukan apakah program yang menghentikan.
z (x)
= 0, untuk semua x
fungsi pengganti :
s (x)
= x + 1, untuk semua x
proyeksi engan lebih dari argumen j: pi, j (x0, ... xj) = xi, untuk semua xi, i, j
dengan menggunakan operasi komposisi dan rekursi primitif:
komposisi:
f (x1, ..., xn) = g (h1 (x1, ..., xn), ..., hm (x1, ..., xn)), untuk semua g, h1, ..., hm
Primitif Rekursi:
f (x, 0) = g (x), untuk setiap g
f (x, s (y)) = h (x, y, f (x, y)), untuk setiap h
Fungsi rekursif dibentuk oleh penambahan operator minimisasi, yang membutuhkan fungsi f dan
h kembali didefinisikan sebagai berikut:
Meminimalkan:
h (x1, ..., xn) = y, jika f (x1, ..., xn, y) = 0 dan t <y (f (x1, ..., xn, t) didefinisikan dan positif)
= Terdefinisi sebaliknya.
Hal ini diketahui bahwa fungsi komputasi Turing persis fungsi rekursif.
Mesin abstrak dari arsitektur lebih akrab komputer digital modern (arsitektur von Neumann)
Abacus. Dalam bentuk yang paling sederhana komputer dengan arsitektur seperti itu memiliki
sejumlah register dialamatkan masing-masing dapat mengadakan datum tunggal, dan prosesor
yang dapat membaca dan menulis ke register ini.
Mesin ini dapat melakukan dua operasi dasar, yaitu: menambahkan satu dengan isi register
bernama (yang akan kita melambangkan sebagai n +, di mana n adalah nama dari register) dan
(berusaha) mengurangi satu dari daftar nama, dengan dua hasil yang mungkin: cabang sukses
jika register awalnya bukan nol, dan cabang kegagalan jika register awalnya nol (kita akan
melambangkan operasi sebagai n).
Ini disebut sempoa komputer dengan Lambek (Lambek 1961), dan diketahui setara dengan
mesin Turing.
Komputer digital modern tunduk pada kendala keterbatasan yang kami disarikan pergi dalam
definisi mesin sempoa, seperti yang kita lakukan dalam kasus mesin Turing. Komputer fisik
terbatas dalam jumlah lokasi memori yang mereka miliki, dan dalam kapasitas penyimpanan
masing-masing lokasi, sementara mesin sempoa tidak tunduk pada batasan tersebut. Jadi
beberapa fungsi sempoa-dihitung tidak akan dihitung oleh mesin fisik. (Kami tidak akan
mempertimbangkan apakah mesin Turing dan komputer digital modern tetap setara ketika
keduanya diberikan input eksternal, karena itu akan mengharuskan kita untuk mengubah definisi
dari mesin Turing.)