Turing Makinesi neden popüler bir hesaplama modelidir?


68

Ben bir CS lisansıyım. Turing'in soyut makinesiyle nasıl ortaya çıktığını anlıyorum (hesaplama yapan bir insanı modelleniyor), ancak bana tuhaf, inelegant bir soyutlama gibi görünüyor. Neden bir "bant" ve bir makine kafasının sembolleri yazıp, durumunu değiştirip kaseti ileri geri kaydırdığını düşünüyoruz?

Temel önemi nedir? Bir DFA zarif - normal dilleri tanımak için gerekli olanı tam olarak yakalıyor gibi görünüyor. Fakat Turing makinesi, acemi kararıma göre, sadece tıknaz bir soyut yapılamadır.

Bunu düşündükten sonra, en ideal hesaplama modelinin, giriş dizgisine karşılık gelen bazı fiziksel sistemlerin harekete geçirildikten sonra, formüle edilmek üzere kullanılanın yorumuna eşdeğer bir statik dengeye ulaşacağını söylemek olacağını düşünüyorum. Sistem orijinal diziden doğru çıktı dizisine karşılık gelir. Bu, “yalnızca otomasyon” kavramını yansıtıyor, çünkü sistem yalnızca orijinal durumuna dayalı olarak belirleyici bir biçimde değişecektir.

Düzenle :

Birkaç yanıt okuduktan sonra, Turing makinesi hakkında beni şaşırtan şeyin asgari görünmediğini fark ettim. Kanonik hesaplama modeli açıkça hesaplanabilirliğin özünü iletmemeli midir?

Ayrıca, net olmadığı durumda DFA'ların eksiksiz bir hesaplama modeli olmadığını biliyorum.

Cevaplar için teşekkür ederim.


2
Umarım gelecekteki sınıflar aydınlığa yardımcı olacaktır.
Yuval Filmus

19
Belki de lambda matematiğini daha doğal bir hesaplama modeli olarak bulacaksınız . Fonksiyonel programlamanın dayandığı şey budur.
Bakuriu

4
Aslında mezun olmak üzereyim. Otomata teorisini içeren en üst seviye kurs, Turing makinelerinde durdu, buna rağmen çeşitli hesaplama modelleri arasındaki denkliği dile getirdiler. Haklı olarak temel "TM" programlama "dan payımı bile aldım. Ancak TM her zaman beni rahatsız etti. "Minimal" görünmüyordu; bana hesaplamanın özünü göstermedi.
Alex

4
" giriş dizgisine karşılık gelen bazı fiziksel sistemler " - bu yazışma nasıl görünür? Turing makinesi, tam olarak böyle bir şey için oldukça basit ama güçlü bir resmi modeldir .
Bergi

2
Torna makineleri, yalnızca orijinal durumuna göre (konfigürasyon anlamına gelirseniz) deterministik olarak değişir. Peki yanlış olan ne?
user23013

Yanıtlar:


72

DFA, sadece sağa hareket etmesine izin verilen ve giriş karakterleri biter bitmez kabul etmesi veya reddetmesi gereken bir Turing makinesidir. Bu yüzden birinin DFA'nın doğal olduğunu ancak bir Turing makinesinin olmadığını söyleyebileceğinden emin değilim.

Sorunun eleştirisi bir yana, Turing'in bilgisayarlar var olmadan önce çalıştığını unutmayın . Bu nedenle, elektronik bilgisayarların ne yaptığını, genel olarak hesaplama yapmayı kodlamaya çalışmıyordu. Ailemin 1930'lardan itibaren bilgisayarı "hesaplayan biri" olarak tanımladığı bir sözlüğü var ve bu temel olarak Turing'in geldiği yerdi: o zamanlar için hesaplama, slayt kuralları, kütük tabloları, kalemler ve kağıt parçalarıyla ilgiliydi. Bu zihinsel düzende, bir kağıt kasetteki sembolleri yeniden yazmak kötü bir soyutlama gibi görünmüyor.

Tamam, tamam, diyorsunuz (umarım!) Ama artık 1930'larda değiliz, neden bunu kullanıyoruz? Burada, belirli bir sebep olduğunu sanmıyorum. Turing makinelerinin avantajı, oldukça basit olmaları ve onlar hakkında bir şeyleri ispatlama konusunda gayet iyiyiz. Bir Turing makine programını resmen belirli bir işi yapmak için belirtmek çok sıkıcı olsa da, birkaç kez yaptıktan sonra, ne yapabileceklerine dair makul bir sezginiz var ve artık resmi özellikleri yazmanıza gerek kalmıyor. Model, banda rastgele erişim gibi diğer doğal özellikleri içerecek şekilde kolayca genişletilebilir. Bu yüzden onlar iyi anladığımız oldukça faydalı bir model ve aynı zamanda gerçek bilgisayarlarla olan ilişkisini de oldukça iyi anlıyoruz.

Biri diğer modelleri kullanabilir, ancak o zaman yeni modelin sonuçları ile Turing makinelerinin neler yapabileceği konusundaki mevcut çalışmaların büyük bir kısmı arasında büyük miktarda çeviri yapmak zorunda kalacaktı. İyi bir fikir gibi görünmesi için yeterince büyük avantajları olan Turing makinelerinin yerini hiç kimse bulamadı.


Yorumlar genişletilmiş tartışmalar için değildir; bu konuşma sohbete taşındı .
Gilles

56

Birkaç farklı soru soruyorsun. Onlara tek tek cevap vereyim.

Turing makine modelinde bu kadar önemli olan nedir?

λ

O zaman, Turing'in hesaplanabilirliği tanımlama girişimi en tatmin edici görünüyordu. Sonunda yukarıda açıklanan tüm hesaplama modellerinin eşdeğer olduğu ortaya çıktı - hepsi aynı hesaplanabilirlik kavramını açıklar. Tarihsel nedenlerden dolayı, Turing'in modeli hesaplanabilirliği tanımlamanın en yasal yolu olarak ortaya çıktı. Bu model aynı zamanda çok basit ve yukarıda sıralananlar da dahil olmak üzere diğer birçok modelle karşılaştırıldığında çalışması çok kolay.

Bilinen bilgisayar bilimi, Turing makinelerine hesaplanabilirliğin tanımı olarak öğretir ve daha sonra bunları karmaşıklık teorisini keşfetmek için de kullanır. Ancak, algoritmalar RAM makinesi olarak bilinen daha gerçekçi bir modele göre analiz edilir, ancak bu sorun genellikle halının altında cognoscenti için bir sır olarak süpürülür.

DFA'lar daha iyi bir model değil mi?

Rabin ve Scott'un ünlü makalesi, Sonlu otomata ve karar sorunlarının arkasındaki özgün motivasyon buydu:

Turing makineleri, dijital bilgisayarların soyut prototipi olarak kabul edilir; Bununla birlikte, sahadaki çalışanlar, bir Turing makinesinin nosyonunun, gerçek bilgisayarların doğru bir modeli olarak hizmet edemeyecek kadar genel olduğunu hissettiler. Basit hesaplamalar için bile, bir Turing makinesinin verilen herhangi bir hesaplama için ihtiyaç duyduğu bant miktarına priori bir üst sınır vermenin imkansız olduğu bilinmektedir. Bu, Turing'in konseptini gerçekçi kılmıyor.

Son birkaç yılda literatürde sonlu bir otomat fikri ortaya çıkmıştır. Bunlar, bellek ve hesaplama için kullanılabilecek yalnızca sınırlı sayıda dahili duruma sahip makinelerdir. Keskinliğin kısıtlanması, fiziksel makine fikrine daha iyi bir yaklaşım vermiş gibi görünüyor. Elbette, bu tür makineler Turing makineleri kadar yapamaz, ancak pratik uygulamalarda bu işlevlerin çok azı ortaya çıktığından, keyfi bir genel özyinelemeli işlevi hesaplayabilme avantajı sorgulanabilir.

Ancak, Turing makineleri çok güçlü iken, DFA'ların çok zayıf olduğu ortaya çıktı . Günümüzde teorisyenler polinom zaman hesaplama kavramını tercih ediyorlar , ancak bu kavram aynı zamanda problemsiz de değil. Bununla birlikte, DFA'lar ve NFA'lar hala derleyicileri (sözlük analizi için kullanılır) ve ağ cihazlarını (son derece verimli filtreleme için kullanılır) kullanıyor.

Turing makine modeli çok sınırlı değil mi?

Church-Turing tezi Turing makineleri hesaplanabilirlilik fiziksel kavramını yakalamak belirtiyor. Yuri Gurevich, soyut durum makineleri olarak bilinen daha genel bir hesaplama cihazı sınıfı oluşturarak ve Turing makinelerine güç bakımından eşdeğer olduklarını kanıtlayarak bu tezi kanıtlama girişiminde bulundu . Belki de bu makineler ideal modelinize benzemektedir.


17

Altta yatan önem, Turing-denklik fikri ile ilgilidir. Tam model, Turing'e eşdeğer olduğu sürece önemli değildir. Ancak daha basit bir model kullanmak daha iyidir, böylece diğer modellere denkliği daha kolay kanıtlayabilirsiniz.

Daha doğrusu, gelişmiş programlama dillerinin çoğunun Turing eşdeğeri olduğunu (bellek adresleriyle ilgili bazı varsayımlarla) ve diğer modelleri simüle etmek için kullanılabileceğini bildiğimiz için, bu modeli diğer modellerde simüle etmeyi kolaylaştırmak daha iyidir.

Lambda matematiği ve (string yeniden yazma) gramerleri gibi başka modeller de var. Ancak bir Turing makinesinde zaman ve mekan kısıtlamalarını tanımlamak daha kolaydır. Brainfuck gibi bir programlama dili de kullanabilirsiniz, ancak örneğin bazen mantıksal olarak önemsiz bir değişiklik yapmak için sembolleri yeniden tanımlamak için gereksiz bir çalışma gerektirir.

Bu yüzden, Turing makinesi, her şey için tek bir model öğrenmek zorunda kalırsanız, benim için oldukça uygun görünüyordu. Ama yine de birden fazla model öğrenecekseniz, Turing-denkliği fikri için lambda matematiğini öğrenmek için yanlış bir şey göremiyorum, diğer modelleri Turing-eşdeğerliği ve pratik programlama dillerini kanıtlamak için Brainfuck (erişilebilir yığın ve gizli değişkenlerle daha iyi) Zaman / mekan kısıtlamaları için, ve Turing makinesini, etrafta bir yol bulmak için kimsenin zahmetine girmezse, eşdeğerlerini kanıtlayacak bir araç olarak düşünün. Bu, doğal olarak, önce temel teoriyi öğrenmeye başlamazsanız, ancak onları yararlı bulduğunda yaparsanız gerçekleşir.


1
Temel olarak tüm gerçek modern CPU'lar RAM'lı kayıt makineleridir . Tek bir akümülatör kaydına sahip olan mikrodenetleyiciler veya oyuncak mimariler bile, tipik olarak, bir akümülatör makinesi olmak yerine, göstericileri yükleyebileceğiniz bir tür ayrı adres kayıt defterine sahiptir. Ancak gerçek donanımın sabit boyutlu adresleri vardır ve bu nedenle Turing-tamamlandı değildir. Kayıt makinesi modeli teorik CS'de çok kullanılıyorsa, ancak IDK gerçek hayatta nasıl işliyorsa ve perf analizi için her şey asm için derlendiğinden anlaşılmasında yararlı olabilir.
Peter Cordes

14

Bir düzenlemeye eklenmiş, sorunun bu bölümüne yanıt vermek istiyorum:

“Kanonik hesaplama modeli açıkça hesaplanabilirliğin özünü iletmemeli midir?”

TTT

Hesaplanabilirliğin özlerinden biri de bu: Bir hesaplanabilirlik genel nosyonu ne olursa olsun, herkesin yapabileceği tek bir makine olmalı. Evrensel bir Turing makinesinin yaptığı tam olarak budur. Modern bilgisayarların yaptığı da budur (sonsuz belleğe sahip olmanın fiziksel olarak gerçekçi olmayan idealizasyonuna tabi).

Turing makinelerinin en az olmadığına dair doğrudan endişenizi gideren bir başka yol da, evrensel bir makinenin var olduğu genel bir hesaplanabilirlik nosyonunu tanımlamaları şartına tabi olarak, olabildiğince az olmalarıdır.


Evrensel makine hakkında hatırlattığın için teşekkür ederim. Bunun "eksiksiz" hesaplamanın ne anlama geldiğini anladım.
Alex,

5

Turing Makinaları kelimenin tam anlamıyla kullanılmaz; içlerinde programlama, nasıl çalıştığını anlamak için bir kez egzersiz yapmak için yapacağı bir şeydir.

Özellikle hiçbir şey "yapmak" için yapılmadı. Minimal olmaları gerekmez, çalışmak için rahat olmaları gerekmez.

Bunlar sadece , fiziksel evrende (bugün bildiğimiz kadarıyla) inşa edebileceğiniz herhangi bir makine kadar etkileyici ve güçlü olabilecek , üretebileceğiniz bir makinenin modelidir .

Bu temel nedenlerden dolayı olduğu gibi Turing tarafından tanımlandılar:

  • Onların aklımıza gelen tüm algoritmaları kapsadığını ispatlayabilmek .
  • Durma problemi / karar problemi üzerinde çalışmak.
  • Buna başka herhangi bir makine / dili azaltabilmek.

Başka bir dil seçmek mümkün olabilir mi? Kesinlikle! Bugün bildiğimiz türkçe dillerin herhangi biri kullanılmış olabilir. Ancak teorik temellerin daha karmaşık bir makineye kurulması çok daha zor olurdu .

Onların bile “popüler bir hesaplama modeli” olmadığını; hiç kimse bir Turing Makinesi ile hiçbir şey hesaplamadı. Bu teorik bilgisayar bilimciler tarafından tcs'ler için yapılmış tamamen teorik bir kavramdır.


Her konuda katılıyorum. Popülerlik sadece Thue makineleri, Lambda matematiği ve Emil Post'un eşyaları gibi daha belirsiz modellere göre olabilir.
kullanıcı kullanımı

Üzgünüz, ancak diğer dillerin ciddi şekilde berbatlaştığı çok merkezi bir noktayı kaçırıyorsunuz. Bir Turing makinesi gerçekte neyi hesaplayabileceğinizi tanımlar. Diğer diller, nasıl hesaplayabileceğinizle ilgili bir soruyu daraltabilir, bu da neyi hesaplayabileceğinizi ya da hesaplayamayacağınızı kanıtlamanın oldukça düşük bir ihtimal olmasını sağlar.
Bent

Tornalama makinelerinin diğer modeller için bir azaltma hedefi olması gerekiyorsa, neden minimal olmaları gerekmiyor?
Bergi

@Bent, ek olarak söylediklerime ek olarak söylediklerinizi tam olarak anlamadığımı itiraf ediyorum "Ama teorik temelleri daha karmaşık bir makinede oluşturmak çok daha zor olurdu ." (yani, bildiğimiz ve kullandığımız gibi gerçek bir programlama dilinde).
AnoE,

Popülerliğe göre, Teorik CS’de kullanılanları kastettim. Yine, öğrendiğim tek model buydu (sanırım biraz lambda hesabına maruz kaldığımı düşünüyorum). Neden sadece, belki de pedagojik olarak, ilk öğretilen ilk kişi olduğunu merak ettim. Uygulamasının bunu nasıl garanti ettiğini görüyorum.
Alex,

5

Neden popüler, belki en popüler? Turing'in bu "makineyi" elektronik bilgisayarlardan çok yıllar önce icat ettiğini hatırlamalısınız. TM, bir kağıt, kalem, kauçuk ve son olarak da en az bir insan beyni ile çalıştırılır. Böylece herkes bu makine ile bir "hesaplama" yapabilir. Herkes bilgisayar bilmeyen, dil programlayan bir kişi anlamına gelir. Kullanması basit. Düşündüğünüzde bir paradoks keşfedersiniz: bu makine neredeyse hiçbir şeyin bir araya gelmediğinden her şeyi işletebilirsiniz. Kanımca "neredeyse hiçbir şey / versus / her şey" paradoksunun popüler olmasının nedeni budur. TM'nin özyinelemeyi açıkça açıklamadığını, yalnızca TM'nin "atlama" ile ilgilendiğini fark ederdim. Bu özellik (açıkça özyinelemeden bahsetmek) çaylaklar için bir baş ağrısı kaynağı olabilir. örneğin, lambda-calculus'ta Y-birleştirici kavramı neredeyse anlaşılmaz; Daha doğrusu, TM popüler çünkü özyinelemenin baş ağrısı olmadan "neredeyse hiçbir şey / karşı / her şeyin" paradoksu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.