Komputer nyata hanya memiliki jumlah negara terbatas, jadi apa relevansi mesin Turing dengan komputer nyata?

42

Komputer nyata memiliki memori yang terbatas dan hanya sejumlah negara terbatas. Jadi mereka pada dasarnya automata terbatas. Mengapa ilmuwan komputer teoretis menggunakan mesin Turing (dan model lain yang setara) untuk mempelajari komputer? Apa gunanya mempelajari model yang jauh lebih kuat ini sehubungan dengan komputer nyata? Mengapa model automata terbatas tidak cukup?

Rahul
sumber
7
@ Kaveh Orang-orang biasanya menggunakan gelombang tangan bahwa ya, komputer yang digunakan dalam praktik adalah FSM, tetapi FSM terlalu besar dan sifat struktural yang menarik tersesat dalam pandangan FSM. Saya belum pernah melihat penjelasan tanpa tangan. Karena itu pertanyaannya adalah pada topik di sini.
Martin Berger
15
Pertanyaan sebenarnya adalah, mengapa mempelajari mesin Turing, ketika kita menggunakan model RAM saat kita menganalisis algoritma.
Yuval Filmus
39
Karena kadang-kadang adalah perkiraan yang lebih baik untuk 10000000000000000000000000000000 daripada 10.00000000000000000000000000000000 . 1000000000000000000000000000000010000000000000000000000000000000
Andrej Bauer
30
Ingat, masalah tak terpecahkan yang paling terkenal dalam ilmu komputer teoretis saat ini adalah: dapatkah satu jenis komputer imajiner yang mustahil secara fisik menyelesaikan masalah secepat komputer imajiner yang bahkan lebih mustahil secara fisik ? Jangan salah mengira ilmu komputer teoretis untuk rekayasa komputer praktis; detail dunia fisik tidak terlalu relevan.
Eric Lippert
23
Bahan nyata terbuat dari atom dan bersifat diskrit, jadi mengapa mempelajari integral?
Peter Shor

Jawaban:

32

Ada dua pendekatan ketika mempertimbangkan pertanyaan ini: historis yang berkaitan dengan bagaimana konsep ditemukan dan teknis yang menjelaskan mengapa konsep tertentu diadopsi dan yang lainnya ditinggalkan atau bahkan dilupakan.

Secara historis, Mesin Turing mungkin merupakan model paling intuitif dari beberapa yang dikembangkan yang mencoba menjawab Entscheidungsproblem . Ini terkait erat dengan upaya besar dalam dekade pertama abad ke-20 untuk sepenuhnya aksioma matematika. Harapannya adalah bahwa sekali Anda telah membuktikan set aksioma kecil menjadi benar (yang akan membutuhkan upaya substansial), Anda kemudian dapat menggunakan metode sistematis untuk memperoleh bukti untuk pernyataan logis yang Anda minati. Bahkan jika seseorang dianggap automata terbatas dalam konteks ini, mereka akan segera diberhentikan karena mereka gagal menghitung bahkan fungsi sederhana.

Secara teknis, pernyataan bahwa semua komputer adalah automata terbatas adalah salah. Otomat terbatas memiliki memori konstan yang tidak dapat diubah tergantung pada ukuran input. Tidak ada batasan, baik dalam matematika maupun kenyataan, yang mencegah menyediakan kaset tambahan, hard disk, RAM atau bentuk memori lainnya, begitu memori dalam mesin digunakan. Saya percaya ini sering digunakan pada hari-hari awal komputasi, ketika bahkan perhitungan sederhana dapat mengisi memori, sedangkan sekarang untuk sebagian besar masalah dan dengan infrastruktur modern yang memungkinkan manajemen memori yang jauh lebih efisien, ini sebagian besar waktu bukan masalah .


EDIT: Saya menganggap kedua poin yang diangkat dalam komentar tetapi memilih untuk tidak memasukkan keduanya singkat dan waktu yang saya miliki untuk menuliskan jawabannya. Ini adalah alasan saya mengapa saya percaya poin-poin ini tidak mengurangi efektivitas mesin Turing dalam mensimulasikan komputer modern, terutama bila dibandingkan dengan automata terbatas:

  • Pertama-tama saya akan membahas masalah fisik tentang batas ingatan oleh alam semesta. Pertama-tama, kita tidak benar-benar tahu apakah alam semesta ini terbatas atau tidak. Lebih jauh, konsep alam semesta yang dapat diamati yang secara definisi terbatas, juga menurut definisi tidak relevan bagi pengguna yang dapat melakukan perjalanan ke titik mana pun dari alam semesta yang dapat diamati untuk menggunakan memori. Alasannya adalah bahwa alam semesta yang dapat diamati mengacu pada apa yang dapat kita amati dari titik tertentu, yaitu Bumi, dan akan berbeda jika pengamat dapat melakukan perjalanan ke lokasi yang berbeda di alam semesta. Dengan demikian, setiap argumen tentang alam semesta yang dapat diamati beralih ke pertanyaan tentang keterbatasan alam semesta. Tapi mari kita anggap bahwa melalui beberapa terobosan kita memperoleh pengetahuan bahwa alam semesta memang terbatas. Meskipun ini akan berdampak besar pada masalah ilmiah, Saya ragu itu akan berdampak pada penggunaan komputer. Sederhananya, mungkin pada prinsipnya komputer memang automata terbatas dan bukan mesin Turing. Tetapi untuk mayoritas semata-mata untuk komputasi dan kemungkinan setiap komputasi yang diinginkan manusia, mesin Turing dan teori yang terkait memberi kita pemahaman yang lebih baik. Dalam contoh kasar, meskipun kita tahu bahwa fisika Newton pada dasarnya salah, saya ragu para insinyur mekanik menggunakan terutama fisika kuantum untuk merancang mobil atau mesin pabrik; kasus sudut di mana ini diperlukan dapat ditangani pada tingkat individu. Tetapi untuk mayoritas semata-mata untuk komputasi dan kemungkinan setiap komputasi yang diinginkan manusia, mesin Turing dan teori yang terkait memberi kita pemahaman yang lebih baik. Dalam contoh kasar, meskipun kita tahu bahwa fisika Newton pada dasarnya salah, saya ragu para insinyur mekanik menggunakan terutama fisika kuantum untuk merancang mobil atau mesin pabrik; kasus sudut di mana ini diperlukan dapat ditangani pada tingkat individu. Tetapi untuk mayoritas semata-mata untuk komputasi dan kemungkinan setiap komputasi yang diinginkan manusia, mesin Turing dan teori yang terkait memberi kita pemahaman yang lebih baik. Dalam contoh kasar, meskipun kita tahu bahwa fisika Newton pada dasarnya salah, saya ragu para insinyur mekanik menggunakan terutama fisika kuantum untuk merancang mobil atau mesin pabrik; kasus sudut di mana ini diperlukan dapat ditangani pada tingkat individu.

  • 264264alamat yang berbeda. Pada dasarnya jaringan adalah cara yang bagus untuk melakukan ini, setiap mesin hanya peduli dengan memori lokal tetapi mereka dapat menghitung bersama.

chazisop
sumber
4
Bagian kedua dari jawaban ini salah. Komputer adalah automata keadaan terbatas, bahkan jika Anda membeli semua RAM dan perangkat keras lain yang Anda bisa. Jumlah RAM yang dapat Anda sambungkan ke komputer dibatasi oleh lebar bus alamatnya, dan hal yang sama berlaku untuk disk dan perangkat lainnya.
Emil Jeřábek mendukung Monica
12
@ EmilJeřábek tidak benar. Antarmuka serial tidak memiliki bus alamat, dan jumlah data yang dapat saya akses di internet tidak dibatasi oleh properti komputer saya.
Stop Harming Monica
5
@OrangeDog tetapi alam semesta masih akan membatasi jumlah data yang dapat disimpan di alam semesta yang dapat diamati
ratchet freak
9
@ratchetfreak seperti yang diperlihatkan mesin Turing, Anda hanya memerlukan akses lokal - "akhir" rekaman saat ini tidak harus berada dalam alam semesta yang dapat diamati;)
Stop Harming Monica
6
Dalam menyebutkan sejarah, ada baiknya mengutip ulasan Gereja tentang kertas Turing, bahwa mesin Turing memiliki "keuntungan membuat identifikasi dengan efektif ... segera terbukti." Yaitu, bagi orang-orang yang berusaha meyakinkan diri mereka sendiri bahwa mereka memang telah menangkap segala sesuatu yang dapat dihitung, definisi Turing sangat menarik.
Jim Hefferon
44

Untuk menyelesaikan jawaban lain: Saya pikir Turing Machine adalah abstraksi yang lebih baik dari apa yang komputer lakukan daripada automata terbatas. Memang, perbedaan utama antara kedua model adalah bahwa dengan automata terbatas, kami berharap untuk memperlakukan data yang lebih besar dari ruang keadaan, dan Mesin Turing adalah model untuk sebaliknya (keadaan ruang >> data) dengan membuat keadaan ruang tak terbatas. Ketakterhinggaan ini dapat dianggap sebagai abstraksi "sangat besar di depan ukuran data". Saat menulis program komputer, Anda mencoba menghemat ruang untuk efisiensi, tetapi umumnya Anda menganggap bahwa Anda tidak akan dibatasi oleh jumlah total ruang pada komputer. Itu adalah bagian dari alasan mengapa Mesin Turing adalah abstraksi komputer yang lebih baik daripada automata terbatas.

Denis
sumber
14
Ini IMHO jawaban yang tepat. Alasannya murni pragmatis, mesin Turing melakukan lebih baik daripada automata terbatas dalam menjelaskan apa yang dilakukan komputer pada skala yang terlibat.
Emil Jeřábek mendukung Monica
3
Saya setuju dengan ini kecuali kalimat "Anda biasanya menganggap bahwa Anda tidak akan dibatasi oleh jumlah total ruang di komputer". Sebaliknya, hampir semua program non-sepele dibatasi oleh ruang yang tersedia dan programmer berusaha keras untuk mengatasinya (misalnya pengumpulan sampah untuk penggunaan kembali memori otomatis), tetapi (1) tidak ada yang bisa kita lakukan tentang hal itu, dan (2) kami membatasi diri untuk input yang cukup kecil. Perlu dicatat bahwa TM memberi kita pegangan alami pada ukuran masalah, dan bahwa algoritma cenderung tertutup rapat dengan gagasan alami tentang ukuran masalah ini.
Martin Berger
2
@MartinBerger Re "hampir semua program non-sepele dibatasi oleh ruang yang tersedia dan programmer berusaha keras untuk mengatasinya (mis. Pengumpulan sampah untuk penggunaan kembali memori otomatis)": Saya berpendapat bahwa program yang ditulis untuk sistem dengan pengumpulan sampah mempertimbangkan sistem itu, termasuk gc , sebagai mesin yang diprogram melawannya. Pengumpul sampah bukan bagian dari program; itu adalah bagian dari upaya untuk memberikan secara tepat apa yang dikatakan Denis: Mesin untuk memprogram yang memiliki sumber daya memori yang sebenarnya tidak terbatas.
Peter - Kembalikan Monica
2
@ PeterA.Schneider Saya agak tidak setuju. Alasan menggunakan GC yang disediakan oleh runtime bahasa adalah salah satu ekonomi pengembangan perangkat lunak: mekanisme manajemen memori spesifik program lebih performan daripada GC dan sebagian besar programmer lebih suka jika mereka dapat melakukannya dengan aman dan murah. Tapi mereka tidak bisa, jadi lebih baik bermain aman dan menggunakan ambient GC yang biayanya diamortisasi atas sejumlah besar program. Dalam hal menggunakan GC akan sangat panjang untuk berurusan dengan memori keterbatasan.
Martin Berger
2
Mesin Turing bukan abstraksi dari apa yang dilakukan komputer, mereka adalah abstraksi dari apa yang dikomputasi, dan komputer dibangun setelah itu. Komputer kebetulan melakukan sebagian besar perhitungan mereka menggunakan sejumlah memori kerja internal, tetapi Mesin Turing tidak ditemukan karena alasan tentang perhitungan dengan jumlah memori kerja yang terbatas.
reinierpost
10

Andrej Bauer memberi satu alasan penting dalam komentar:

1000000000000000000000000000000010000000000000000000000000000000

Biarkan saya melengkapi jawaban lain dengan beberapa poin, yang mungkin terlalu jelas untuk disebutkan:

  • Jika tujuan Anda adalah mempelajari komputer sungguhan, maka automata terbatas dan mesin Turing akan sering menjadi model yang terlalu sederhana untuk pertanyaan yang relevan. Komputer nyata memiliki beberapa inti pemrosesan dengan hierarki cache (atau skema manajemen pintar lainnya), akses ke sejumlah memori cepat yang layak, akses ke sejumlah besar memori eksternal yang lambat (hard disk), dan dapat berkomunikasi dengan komputer lain yang sejenis di sebuah kecepatan kira-kira sebanding dengan kecepatan akses ke memori eksternal yang lambat.
  • Jika sekarang Anda bertanya pada diri sendiri mengapa Anda membutuhkan semua perincian itu, maka ternyata tujuan Anda yang sebenarnya adalah mempelajari contoh masalah dan seberapa efisien Anda dapat menyelesaikannya. Jika Anda berbicara tentang komputer nyata, ini juga dapat berarti bahwa Anda menjalankan percobaan dengan contoh masalah aktual pada berbagai jenis arsitektur komputer (nyata).
  • Model komputer nyata yang dijelaskan di atas masih diidealkan, karena mengabaikan berbagai mode kegagalan komputer nyata. Karena matikan kegagalan mungkin lebih sering daripada kegagalan hard disk (dan hard disk mungkin memiliki cadangan), domain masalah tertentu seperti operasi database yang andal mungkin perlu memperhitungkannya.
  • Π10
Thomas Klimpel
sumber
8

Formalisme bermanfaat atau tidak, berdasarkan apa yang orang ingin gunakan formalisme untuk model dan memahami.

Mesin Turing adalah formalisme yang berguna untuk memahami program . Program layak dipahami; sebagian besar perhitungan aktual dilakukan oleh program, bukan oleh mesin tujuan khusus. Formalisme mesin Turing memungkinkan kita untuk memodelkan masalah dunia nyata yang penting seperti kompleksitas waktu dan ruang. Adalah jauh lebih alami untuk mencoba mempelajari gagasan-gagasan ini menggunakan automata negara-terbatas.

Mesin Turing tidak terlalu berguna ketika mencoba mempelajari kompleksitas fungsi komputasi yang terbatas (katakanlah, fungsi yang domainnya terdiri dari input panjang paling banyak 10 juta). Kompleksitas sirkuit jauh lebih baik dalam menggambarkan kompleksitas fungsi hingga ... tetapi mesin Turing pada gilirannya sangat berguna dalam memahami kompleksitas sirkuit.

Automata terbatas juga bermanfaat dalam memahami kompleksitas rangkaian; semua model ini memiliki tempat mereka di gudang matematika.

Saya menolak argumen yang mengatakan automata kondisi-terbatas adalah model realitas yang lebih baik semata-mata karena komputer dunia nyata hanya memiliki sejumlah kondisi internal yang terbatas. Studi tentang keadaan-terbatas automata secara krusial berurusan dengan input yang berasal dari rangkaian string tak terbatas , sedangkan komputer dunia nyata berurusan dengan input dengan hanya beberapa panjang maksimal tetap (kecuali jika Anda percaya bahwa kita hidup di alam semesta tanpa batas, baik dalam hal ruang atau waktu).

Sebuah model harus dinilai dalam hal kegunaannya dalam memahami aspek-aspek realitas yang kita pedulikan. Atau (sebagai alternatif) dalam hal kegunaannya dalam memahami alam semesta matematika yang orang anggap cukup menarik, bahkan jika alam semesta matematika itu tidak memiliki manifestasi fisik yang jelas.

Mesin Turing, mesin negara-terbatas, dan sirkuit (dan model lain di samping) semuanya telah membuktikan kegunaannya.

Eric Allender
sumber
6

Komputer yang sebenarnya bukan FSA. Komputer yang sebenarnya adalah komputer universal, dalam arti bahwa kita dapat menggambarkan komputer untuk ditiru komputer dan komputer akan menirunya. Untuk banyak contoh, cari "mesin virtual".

Dimungkinkan untuk membuat Mesin Universal Turing - TM yang menerima deskripsi TM lain kemudian mengemulasi operasi TM itu pada input yang disediakan.

n22n

Untuk titik awal pada literatur, saya dapat merekomendasikan " Tentang Keberadaan Universal Finite atau Pushdown Automata ", yang mempelajari tidak adanya automata universal. Anda mungkin juga melihat referensi (dan sebagainya).

Eric Towers
sumber
3
Ini adalah pendekatan yang berguna untuk secara intuitif memahami berbagai tingkat "kekuatan komputasi". Namun, OP tampaknya berpikir bahwa komputer nyata adalah FSM karena jumlah negara terbatas, misalnya karena RAM yang terbatas. Dengan argumen Anda, ini berarti komputer nyata lebih seperti FSM daripada Mesin Turing karena saya tidak dapat dengan bebas menggandakan jumlah negara dalam mesin simulasi; Saya tidak memiliki kaset tak terbatas sebagai penyimpanan.
amon
1
Mesin Turing juga tidak perlu memiliki pita tak terbatas. Komputer dapat menggunakan sejumlah besar penyimpanan eksternal yang sewenang-wenang dalam perhitungan mereka (dan menjadi sangat mudah dengan penyedia cloud yang kita miliki saat ini), sehingga mereka pada dasarnya seperti Mesin Turing daripada FSM.
reinierpost
1
Jika kita berasumsi bahwa komputer memiliki jumlah memori yang tetap maka akan kehabisan memori ketika mensimulasikan komputer dengan lebih banyak memori, sehingga dengan asumsi itu tidak benar-benar universal.
Kaveh
3

Apa yang membuat mesin Turing istimewa adalah bahwa walaupun sangat, sangat sederhana, ia dapat menjalankan semua (kelas) algoritma yang dapat kita pikirkan. Tidak ada mesin yang dikenal yang lebih kuat (dalam hal itu dapat menjalankan algoritma, mesin Turing tidak mampu).

Menjadi sederhana secara mekanis, mudah untuk menunjukkan apakah, atau pada tingkat mana, mesin lain setara dengan mesin Turing. Ini pada gilirannya membuatnya relatif mudah untuk menunjukkan apakah komputer yang diberikan (atau bahasa komputer) benar-benar universal (c / f "Turing-complete").

AnoE
sumber
Pertanyaannya adalah tentang hubungan model mesin Turing dengan komputer nyata. Jika kita berasumsi bahwa komputer memiliki jumlah memori yang tetap itu tidak benar-benar universal.
Kaveh
1

Mengapa model automata terbatas tidak cukup?

Sementara jawaban lain telah menyebutkan banyak aspek yang relevan, saya percaya bahwa kelebihan utama mesin Turing dibandingkan automata terbatas adalah pemisahan data dan program . Ini memungkinkan Anda untuk menganalisis program yang cukup terbatas dan membuat pernyataan tentang bagaimana program itu akan menangani input yang berbeda, tanpa membatasi ukuran input.

Meskipun secara teori dimungkinkan untuk menggambarkan komputer yang sebenarnya dan sesuatu seperti mesin Turing dengan pita hingga sebagai mesin keadaan, itu tidak benar-benar layak: jumlah negara adalah eksponensial dalam jumlah memori yang dimiliki mesin Anda, dan terbatas pada umumnya. formalisme otomat negara mengharuskan Anda untuk secara eksplisit mendaftar transisi antara negara-negara ini. Jadi untuk otomat keadaan terbatas umum sebesar itu cukup tidak mungkin untuk melakukan pengurangan berdasarkan pada enumerasi penuh semua transisi keadaan.

Tentu saja, di komputer nyata, menyatakan transisi tidak dapat terjadi secara sewenang-wenang. Tidak ada perintah untuk menukar sepertiga bit dalam memori dalam satu langkah perhitungan. Jadi, Anda bisa mencoba membuat spesifikasi yang lebih ringkas untuk transisi keadaan. Sesuatu seperti spesifikasi set instruksi arsitektur Anda. Tentu saja, arsitektur komputer sungguhan rumit untuk kinerja, sehingga Anda dapat menyederhanakan ini lebih jauh, ke beberapa set instruksi yang sangat sederhana, yang hanya melakukan langkah-langkah yang sangat kecil menggunakan input dan output yang sangat terbatas. Pada akhirnya Anda mungkin menemukan bahwa arsitektur Anda menyerupai sesuatu seperti juru mesin Turing: menggunakan beberapa bit kode program dan satu bit input, menghasilkan sedikit output dan bergerak dalam kode program Anda.

Salah satu alternatif akan menggunakan keadaan otomat keadaan terbatas hanya untuk mewakili data yang sedang diproses oleh program, sementara menyandikan program itu sendiri ke dalam transisi keadaan. Itu akan memerlukan masalah yang sama tentang bagaimana cara menghitung semua keadaan, dan representasi yang kompak mungkin akan mendekati apa yang dilakukan mesin Turing.

Apa gunanya mempelajari model yang jauh lebih kuat ini sehubungan dengan komputer nyata?

Secara keseluruhan saya akan mengatakan bahwa mesin Turing terbatas-tape mungkin akan menjadi model yang lebih baik untuk komputer yang sebenarnya. Tetapi untuk banyak pertanyaan ilmiah, perbedaan antara pita yang terbatas tetapi besar dan tak terbatas tidak relevan, jadi hanya mengklaim pita tak terbatas membuat segalanya lebih mudah. Untuk pertanyaan lain, jumlah kaset yang digunakan adalah inti dari pertanyaan, tetapi model tersebut dengan mudah memungkinkan Anda untuk berbicara tentang jumlah penggunaan kaset tanpa perlu repot menentukan apa yang terjadi jika perhitungan kehabisan kaset.

MvG
sumber
1

Sebagian besar masalah membutuhkan mesin Turing ukuran terbatas

Meskipun mengasumsikan tape tidak terikat adalah penyederhanaan yang berguna, sebagian besar masalah / algoritma sebenarnya membutuhkan jumlah kaset yang terbatas, dan batas-batas memori yang diperlukan (mungkin tergantung pada ukuran input) dapat dianalisis dan sering terbukti.

Ini juga sering digeneralisasi ke jenis komputer lain (yang analisis atau bukti terikatnya mungkin jauh lebih berantakan daripada pada mesin Turing), dan memungkinkan untuk memperkirakan jumlah penyimpanan sementara yang diperlukan untuk masalah tertentu - dapatkah itu dilakukan dalam jumlah tetap ruang? Proporsional dengan input? Apakah ini membutuhkan jumlah ruang yang eksponensial saat input tumbuh?

Peter adalah
sumber
1

Salah satu fitur penting dari mesin turing yang automata terbatas tidak berbagi adalah bahwa mereka dapat skala jumlah memori yang dibutuhkan untuk memecahkan masalah dengan ukuran masalah .

nn2

Intinya: banyak masalah memiliki solusi alami yang menggunakan lebih banyak memori, semakin besar masalahnya. Jadi, wajar untuk menggambarkan solusi ini dengan representasi yang dapat menggunakan memori tak terbatas - bukan karena satu contoh akan menggunakan jumlah tak terbatas itu, tetapi karena ada contoh yang menggunakan setiap jumlah. Anda dapat melakukannya dengan mesin turing, tetapi juga dengan urutan automata terbatas.

josinalvo
sumber
Pada catatan terkait, jika mesin Turing dengan status N dimulai dengan pita yang memiliki jumlah karakter C non-blank hingga dan setelah posisi awal, akan ada sejumlah angka T (N, C) sedemikian rupa sehingga setiap mesin yang akan pernah berakhir dapat ditiru oleh satu mesin mesin yang rekamannya terbatas pada karakter T (N, C).
supercat
-2

Komputer nyata memiliki memori yang terbatas dan hanya sejumlah negara terbatas. Jadi mereka pada dasarnya automata terbatas.

Mesin Turing adalah turunan dari automata terbatas. Mesin Turing praktis adalah arsitektur von Nuemann.

Jesse Enjaian
sumber