Gerçek bilgisayarların yalnızca sınırlı sayıda devleti vardır, bu yüzden Turing makinelerinin gerçek bilgisayarlarla ilgisi nedir?


42

Gerçek bilgisayarlar sınırlı belleğe ve yalnızca sınırlı sayıda duruma sahiptir. Bu yüzden aslında sonlu otomatlardır. Teorik bilgisayar bilim adamları neden bilgisayarları incelemek için Turing makinelerini (ve diğer eşdeğer modellerini) kullanıyorlar? Gerçek bilgisayarlara göre bu çok daha güçlü modelleri incelemek ne anlama geliyor? Sonlu otomata modeli neden yeterli değil?


7
@Kaveh İnsanlar genellikle evet, pratikte kullanılan bilgisayarların FSM olduğunu, ancak FSM'lerin çok büyük olduğunu ve FSM görünümünde ilginç yapısal özelliklerin kaybolduğunu biliyorlar. El sıkışmayan bir açıklama hiç görmedim. Bu nedenle soru burada konuyla ilgili.
Martin Berger

15
Asıl soru, neden algoritmaların analizinde RAM modelini kullanırken Turing makinelerini incelememiz.
Yuval Filmus

39
Çünkü bazen 1000000000000000000000000000000000 ' den 1000000000000000000000000000' den daha iyi bir yaklaşımdır . 1000000000000000000000000000000010000000000000000000000000000000
Andrej Bauer

30
Unutmayın, bugün teorik bilgisayar bilimindeki en ünlü çözülmemiş problem şudur: fiziksel olarak imkansız bir hayali bilgisayar bir tür fiziksel olarak imkansız bir hayali bilgisayar kadar hızlı çözebilir mi? Teorik bilgisayar bilimlerini pratik bilgisayar mühendisliği için yanlış kullanmayın; Fiziksel dünyanın detayları özellikle önemli değil.
Eric Lippert

23
Gerçek malzemeler atomlardan yapılır ve doğada ayrıktır, öyleyse neden çalışma integralleri?
Peter Shor

Yanıtlar:


32

Bu soruyu ele alırken iki yaklaşım vardır: kavramların nasıl keşfedildiği ve teknikle ilgili olduğu, belirli kavramların neden kabul edildiğini ve diğerlerinin terk edildiğini veya hatta unutulduğunu açıklayan tarihsel.

Tarihsel olarak, Turing Makinesi Entscheidungsproblem'e cevap vermeye çalışan belki de en sezgisel modellerden biridir . Bu, matematiği tamamen eksenelleştirmek için 20. yüzyılın ilk on yıllarındaki büyük çaba ile yakından ilgilidir. Umut, bir kez doğru bir şekilde küçük bir aksiyom seti kanıtladığınızda (ki bu büyük bir çaba gerektirir), daha sonra ilgilendiğiniz mantıksal ifadeye ilişkin bir kanıt elde etmek için sistematik bir yöntem kullanabileceğinizi söyledi. Bu bağlamda, basit işlevleri bile hesaplayamadıkları için çabucak görevden alınacaklardı.

Teknik olarak, tüm bilgisayarların sonlu otomata olduğu ifadesi yanlıştır. Sonlu bir otomat, girişin boyutuna bağlı olarak değiştirilemeyen sabit bir belleğe sahiptir. Makinede bellek kullanıldığında, matematikte veya gerçekte, ek bant, sabit disk, RAM veya diğer bellek biçimlerini sağlamalarını engelleyen bir sınırlama yoktur. Bunun genellikle hesaplamaların ilk günlerinde, basit hesaplamalar bile belleği doldurabildiğine inanıyorum, oysa çoğu sorun için ve çok daha verimli bellek yönetimine olanak sağlayan modern altyapıyla, bu çoğu zaman sorun değil .


EDIT: Her iki noktayı yorumlarda ortaya attığımı düşündüm ancak yanıtları yazmak için elimde olan hem kısalık hem de zamanları içermemeyi seçtim. Bu noktaların neden Turing makinelerinin modern bilgisayarları simüle etmedeki etkililiğini azaltmadığına, özellikle de sonlu otomatlara kıyasla neden benim düşüncem:

  • İlk önce evren tarafından hafıza sınırının fiziksel konusunu ele alalım. Her şeyden önce, evrenin sonlu olup olmadığını gerçekten bilmiyoruz. Ayrıca, tanımı gereği sonlu olan gözlemlenebilir evren kavramı, hafızayı kullanmak için gözlemlenebilir evrenin herhangi bir noktasına seyahat edebilen bir kullanıcıyla da alakasız bir tanımdır. Bunun nedeni, gözlemlenebilir evrenin belirli bir noktadan, yani Dünya'dan gözlemleyebileceklerimize gönderme yapmasıdır ve gözlemcinin evrende farklı bir yere seyahat edebilmesi farklı olacaktır. Bu nedenle, gözlemlenebilir evren hakkındaki herhangi bir tartışma evrenin sonlu olduğu sorusuna dönüşür. Ancak, bazı atılımlarla evrenin gerçekten sonlu olduğuna dair bilgi edindiğimizi varsayalım. Bunun bilimsel meseleler üzerinde büyük bir etkisi olmasına rağmen, Bilgisayar kullanımı üzerinde herhangi bir etkisi olacağından şüpheliyim. Basitçe söylemek gerekirse, ilke olarak bilgisayarların Turing makineleri değil, sonlu otomata olması olabilir. Fakat hesaplamalar için büyük çoğunluk için ve her ihtimalde her hesap insanı ilgileniyor, Turing makineleri ve ilgili teori bize daha iyi bir anlayış sunuyor. Ham bir örnekte, Newton fiziğinin temelde yanlış olduğunu bilmemize rağmen, makine mühendislerinin araba veya fabrika makineleri tasarlamak için öncelikle kuantum fiziğini kullandığından şüpheliyim; Buna ihtiyaç duyulan köşe davaları bireysel olarak ele alınabilir. Fakat hesaplamalar için büyük çoğunluk için ve her ihtimalde her hesap insanı ilgileniyor, Turing makineleri ve ilgili teori bize daha iyi bir anlayış sunuyor. Ham bir örnekte, Newton fiziğinin temelde yanlış olduğunu bilmemize rağmen, makine mühendislerinin arabaları veya fabrika makinelerini tasarlamak için öncelikle kuantum fiziğini kullandığından şüpheliyim; Buna ihtiyaç duyulan köşe davaları bireysel olarak ele alınabilir. Ancak hesaplamalar için büyük çoğunluk için ve her olasılıkta her hesap insanının ilgilendiği, Turing makineleri ve ilgili teori bize daha iyi bir anlayış sunuyor. Ham bir örnekte, Newton fiziğinin temelde yanlış olduğunu bilmemize rağmen, makine mühendislerinin arabaları veya fabrika makinelerini tasarlamak için öncelikle kuantum fiziğini kullandığından şüpheliyim; Buna ihtiyaç duyulan köşe davaları bireysel olarak ele alınabilir.

  • 264264farklı adresler Temelde ağ oluşturma bunu yapmanın harika bir yoludur, her makine yalnızca yerel hafızasını önemser ancak birlikte hesaplayabilir.


4
Bu cevabın ikinci kısmı yanlıştır. Bilgisayarlar olan Elinden tüm RAM ve diğer donanım satın bile, sonlu durumlu makinalar. Bilgisayara bağlayabileceğiniz RAM miktarı, adres veri yolunun genişliği ile sınırlıdır ve aynısı diskler ve diğer çevre birimleri için de geçerlidir.
Emil Jeřábek,

12
@ EmilJeřábek doğru değil. Seri arayüzlerin bir adres yolu yoktur ve internette erişebildiğim veri miktarı bilgisayarımın hiçbir özelliği ile sınırlı değildir.
Monica'ya Zarar Vermeyi Durdur

5
@OrangeDog, ancak evren hala gözlemlenebilir evrende ne kadar veri depolanabileceğine dair bir sınır koyacaktı
cırcır ucube

9
Turing makinesinin gösterdiği gibi @ ratchetfreak, yalnızca yerel erişime ihtiyacınız var - bandın şu anki "sonu" gözlemlenebilir evrende
olmamalı

6
Tarihten bahsederken, Churching'in Turing'in makalesini incelemesinden alıntı yapmakta fayda vardır, Turing makinelerinin "kimlik tespiti ile etkinliğini ... hemen ortaya koyma avantajı" vardır. Yani, kendilerini hesaplanabilecek her şeyi yakaladıklarına ikna etmeye çalışan insanlar için, Turing'in tanımı zorlayıcıydı.
Jim Hefferon

44

Diğer cevapları tamamlamak için: Turing Machine'in bilgisayarların sonlu otomata göre yaptıklarından daha iyi bir soyutlama olduğunu düşünüyorum. Aslında, iki model arasındaki temel fark, sonlu otomatalarla, durum alanından daha büyük olan verilerin ele alınmasını beklememizdir ve Turing Machine, durumu yaparak başka bir yol (model alanı >> veri) için bir modeldir. sınırsız alan. Bu sonsuzluk, “veri boyutunun önünde çok büyük” bir soyutlama olarak algılanabilir. Bir bilgisayar programı yazarken, verimlilik için yerden tasarruf sağlamaya çalışırsınız, ancak genellikle bilgisayardaki toplam alanla sınırlı kalmayacağınızı varsayarsınız. Turing Machines'in bilgisayarları sonlu otomatlardan daha iyi bir soyutlama olma nedeninin bir parçasıdır.


14
Bu IMHO'nun doğru cevabı. Nedenler tamamen pragmatiktir, Turing makineleri, bilgisayarların ilgili ölçeklerde ne yaptığını açıklamak için sonlu otomata göre daha iyidir.
Emil Jeřábek

3
Buna, "genellikle bilgisayardaki toplam alanla sınırlı kalmayacağınızı varsayıyorsunuz" cümlesi dışında katılıyorum. Aksine, neredeyse önemsiz olan herhangi bir program mevcut alanla sınırlıdır ve programcılar bununla başa çıkmak için büyük çaba harcarlar (örn. Otomatik hafızanın yeniden kullanımı için çöp toplama), ancak (1) bu konuda yapabileceğimiz hiçbir şey yok ve (2) kendimizi yeterince küçük girdilerle sınırlıyoruz. TM'lerin bize sorun büyüklüğü konusunda doğal bir yol tutturması ve algoritmaların sorun büyüklüğündeki bu doğal kavramla aşağı doğru kapalı olma eğilimi göstermesi dikkat çekicidir.
Martin Berger

2
@MartinBerger Re "hemen hemen hiç önemsiz olmayan program mevcut alanla sınırlıdır ve programcılar onunla başa çıkmak için büyük çaba harcarlar (örneğin, otomatik bellek yeniden kullanımı için çöp toplama)": Çöp toplama sistemli sistemler için yazılmış programların dikkate alındığını iddia ediyorum. gc de dahil olmak üzere, bu sistem karşı programladıkları makine olarak. Çöp toplayıcı programın bir parçası değildir; Denis'in tam olarak ne söylediğini sağlama çabasının bir parçası: Neredeyse sınırsız bellek kaynağına sahip olan programlanacak bir makine.
Peter - Monica

2
@ PeterA.Schneider Ben de aynı fikirde değilim. Dil çalışma zamanı tarafından sağlanan GC'yi kullanmanın nedeni yazılım geliştirme ekonomisinden biridir: programa özel bellek yönetimi mekanizması GC'den daha fazla performans gösterir ve çoğu programcı güvenli ve ucuz bir şekilde çıkarsalardı tercih eder. Ancak, emniyetli bir şekilde oynayamazlar ve çok sayıda programda maliyeti düşürülen ortam GC'sini kullanabilirler. Bu anlamda, GC kullanımı son derece hafızayla başa çıkmak için çok uzadı.
Martin Berger

2
Turing makineleri, bilgisayarların yaptığı şeylerin soyutlamaları değildir, bunlar bilgisayarların yaptıklarının soyutlamalarıdır ve bilgisayarlar bundan sonra yapılmıştır. Bilgisayarlar, hesaplamalarının çoğunu sabit miktarda dahili çalışma belleği kullanarak yapıyorlar, ancak Turing Makineleri, sınırlı miktarda çalışma belleği olan hesaplama hakkında düşünmek için icat edilmedi.
reinierpost

10

Andrej Bauer, yorumlarda önemli bir neden verdi:

1000000000000000000000000000000010000000000000000000000000000000

Diğer cevapları, söyleyemeyecek kadar açık olan bazı noktalarla tamamlamama izin verin:

  • Amacınız gerçek bilgisayarları incelemekse, o zaman hem sonlu otomatlar hem de Turing makineleri ilgili sorular için genellikle çok basit modeller olacaktır. Gerçek bilgisayarlarda, önbellek hiyerarşisine sahip (veya başka bir akıllı yönetim şeması), iyi miktarda hızlı belleğe erişimi, büyük miktarda yavaş harici belleğe (sabit diskleri) erişimi olan ve aynı anda diğer benzer bilgisayarlarla iletişim kurabilen birden fazla işlemci çekirdeği vardır. Yavaş harici hafızaya erişim hızıyla kabaca karşılaştırılabilir.
  • Şimdi, neden tüm bu ayrıntılara neden ihtiyaç duyduğunuzu kendinize sorarsanız, asıl amacınız sorunlu durumların incelenmesi ve bunları ne kadar verimli bir şekilde çözebileceğinizdir. Gerçek bilgisayarlar hakkında konuşuyorsanız, bu, farklı türde (gerçek) bilgisayar mimarileri üzerinde gerçek sorun örnekleri ile denemeler yaptığınız anlamına da gelebilir.
  • Yukarıda açıklanan gerçek bilgisayarların modeli hala idealdir, çünkü gerçek bilgisayarların çeşitli arıza modlarını göz ardı eder. Kapatma arızası, sabit disk arızasından daha sık olabileceğinden (ve sabit disklerin yine de yedekleri olabilir), güvenilir veritabanı işlemi gibi bazı problemlerin bunu hesaba katması gerekebilir.
  • Π10

8

Bir formalizm, insanların formalizmi modellemek ve anlamak için ne kullanmak istediğine dayanarak faydalıdır.

Turing makinesi, programları anlamak için yararlı bir formalizmdir . Programlar anlaşılmaya değer; En gerçek hesaplama, özel amaçlı makinelerden ziyade programlar tarafından yapılır. Turing makinesi formalizmi, zaman ve mekan karmaşıklığı gibi gerçek dünyadaki kaygıları modellememize izin verir. Sonlu durumlu otomatları kullanarak bu kavramları incelemeye çalışmak daha az doğaldır.

Turing makineleri, hesaplama sonlu fonksiyonlarının karmaşıklığını incelemeye çalışırken çok kullanışlı değildir (örneğin, alanı en fazla 10 milyon girdiden oluşan fonksiyonlar). Devre karmaşıklığı, sonlu fonksiyonların karmaşıklığını tanımlamakta çok daha iyidir ... ama sırayla Turing makineleri, devre karmaşıklığının anlaşılmasında çok faydalı olmuştur.

Sonlu otomatlar ayrıca devre karmaşıklığının anlaşılmasında da yararlı olmuştur; Tüm bu modellerin matematiksel cephaneli içindeki yeri var.

Sonlu durumlu otomatların daha iyi bir gerçeklik modeli olduğunu söyleyen argümanı reddediyorum, çünkü gerçek dünyadaki bilgisayarların yalnızca sınırlı sayıda içsel durumu var. Sonlu-durumlu otomatların incelenmesi, sınırsız dizi dizisinden gelen girdilerle kritik bir şekilde ilgilenirken , gerçek dünyadaki bilgisayarlar, sınırsız bir evrende, sadece uzay açısından yaşadığımıza göre, sadece sabit maksimum maksimum uzunlukta girdilerle ilgilenir. veya zaman).

Bir model, değer verdiğimiz gerçekliğin bu yönlerini anlamadaki faydası açısından değerlendirilmelidir. Veya (alternatif olarak), matematiksel evrenin belirgin bir fiziksel tezahürü olmasa bile, insanların yeterince ilgi çekici bulduğu matematiksel bir evreni anlamadaki faydası açısından.

Turing makineleri, sonlu durum makineleri ve devrelerin (ve bunun dışındaki diğer modellerin) faydalarını kanıtladık.


6

Gerçek bilgisayarlar FSA değil. Gerçek bilgisayar, evrensel bir bilgisayardır, yani bir bilgisayarı taklit etmesi için bir bilgisayarı tanımlayabiliriz ve bilgisayar onu taklit eder. Birçok örnek için, "sanal makine" arayın.

Başka bir TM'nin açıklamasını alan bir TM ve daha sonra verilen bir girdi üzerinde bu TM'nin çalışmasını taklit eden bir Evrensel Turing Makinesi inşa etmek mümkündür.

n22n

Literatürdeki bir başlangıç ​​noktası için, evrensel otomatların var olmadığını inceleyen " Evrensel Sonlu Varlık veya Pushdown Otomaların Varlığı " nı önerebilirim . Ayrıca referanslarına da bakabilirsiniz (vb.).


3
Bu, farklı “hesaplama gücü” seviyelerini sezgisel olarak kavramak için yararlı bir yaklaşımdır. Ancak OP, gerçek bilgisayarların FSM olduğunu düşünüyor gibi görünüyor çünkü durum sayısı sınırlı, örneğin sınırlı RAM nedeniyle. Argümanınıza göre, bu, gerçek bilgisayarların Turing Machines'ten daha FSM'ler olduğu anlamına gelir çünkü benzetilmiş bir makinedeki durum sayısını serbestçe iki katına çıkaramıyorum; Depo olarak sonsuz bir kasetim yok.
amon

1
Turing Makinaları da sonsuz bir kasete ihtiyaç duymaz. Bilgisayarlar hesaplarında keyfi olarak büyük miktarda harici depolama alanı kullanabilirler (ve bugün sahip olduğumuz bulut sağlayıcıları ile özellikle kolaylaşır), bu nedenle temel olarak FSM'lerden ziyade Turing Machines'e benziyorlar.
reinierpost

1
Bir bilgisayarın sabit miktarda belleğe sahip olduğunu varsayarsak, daha fazla belleğe sahip bir bilgisayarı simüle ederken belleğinin tükeneceğini varsayar, bu nedenle bu evrensel bir durum değildir.
Kaveh

3

Turing makinesini özel yapan şey, çok basit olmasına rağmen , düşünebileceğimiz tüm (sınıf) algoritmaları çalıştırabilmesidir . Daha güçlü olan bilinen bir makine yoktur (Turing makinesinin yapamadığı algoritmaları çalıştırabilir).

Mekanik olarak basit olduğu için, diğer makinelerin bir Turing makinesine eşdeğer olup olmadığını veya bunun derecesini göstermek kolaydır. Bu da belirli bir bilgisayarın (veya bilgisayar dilinin) gerçekten evrensel olup olmadığını göstermeyi nispeten kolaylaştırır (c / f "Turing-complete").


Soru, Turing makine modelinin gerçek bilgisayarlarla ilişkisi ile ilgilidir. Bir bilgisayarın sabit miktarda belleği olduğunu varsayarsak, bu gerçekten evrensel değildir.
Kaveh

1

Sonlu otomata modeli neden yeterli değil?

Diğer cevaplar zaten birçok konuyla ilgili konuya değinirken, Turing makinelerinin sonlu otomata göre güçlü avantajlarının veri ve program ayrımı olduğuna inanıyorum . Bu, oldukça sınırlı bir programı analiz etmenize ve girişin boyutunu sınırlamadan o programın farklı girdileri nasıl kullanacağı konusunda açıklamalar yapmanıza olanak sağlar.

Hem gerçek bir bilgisayarı hem de sonlu bantlı bir Turing makinesi gibi bir durumu durum makinesi olarak tanımlamak teorik olarak mümkün olsa da, bu gerçekten mümkün değildir: durumların sayısı, makinenizin sahip olduğu hafızanın içinde ve genel sonlu durumların katlanarak artmasıdır. Devlet otomat formalizmi bu durumlar arasındaki geçişleri açıkça listelemenizi gerektirir. Dolayısıyla, bu büyüklükteki bir genel sonlu durum otomatiği için, bütün durum geçişlerinin tam bir sayımına dayanarak herhangi bir kesinti yapmak oldukça olanaksızdır.

Tabii ki, gerçek bir bilgisayarda geçişlerin keyfi olamayacağını belirtiyor. Hesaplamanın tek bir adımında bellekteki bitlerin üçte birini takas etme komutu yoktur. Böylece devlet geçişleri için daha kompakt bir özellik bulmaya çalışabilirsiniz. Talimat gibi bir şey mimarinizin özelliklerini belirledi. Tabii ki, gerçek bilgisayar mimarileri performans uğruna karmaşıktır, bu yüzden bunu daha da basitleştirebilirsiniz, çok sınırlı girdi ve çıktı kullanarak çok küçük adımlar uygulayan çok basit komutlar için. Sonunda, mimarinizin Turing makine yorumlayıcısı gibi bir şeye benzediğini görebilirsiniz: bir miktar program kodu ve bir miktar giriş kullanarak, bir miktar çıktı üretin ve program kodunuzda hareket edin.

Bir alternatif, programın kendisini durum geçişlerine kodlarken, yalnızca program tarafından işlenen verileri temsil etmek için sonlu durum otomatizasyonunun durumlarını kullanmak olabilir. Bu, tüm durumların nasıl numaralandırılacağı ile ilgili aynı soruna yol açacaktır ve kompakt bir temsil, bir Turing makinesinin yaptıklarına tekrar yakın olabilir.

Gerçek bilgisayarlara göre bu çok daha güçlü modelleri incelemek ne anlama geliyor?

Genel olarak, sonlu bir bant Turing makinesinin muhtemelen gerçek bilgisayarlar için daha iyi bir model olacağını söyleyebilirim. Ancak birçok bilimsel soru için, sonlu fakat büyük ve sonsuz bir bant arasındaki ayrım önemsizdir, bu yüzden sadece sonsuz bir bant iddia etmek işleri kolaylaştırır. Diğer sorular için, kullanılan bantın miktarı, sorunun özünde yer almaktadır, ancak model, hesaplamanın bantta bitmesi durumunda ne olacağını belirtmekle uğraşmadan bant kullanımının miktarı hakkında konuşmanıza olanak sağlar.


1

Çoğu problem sonlu büyüklükte Turing makineleri gerektirir

Sınırlandırılmamış bandın kullanışlı bir basitleştirme olduğu varsayılırken, çoğu problem / algoritma aslında sınırlı miktarda bant gerektirir ve gerekli belleğin sınırları (muhtemelen girişin boyutuna bağlı olarak) analiz edilebilir ve sıklıkla kanıtlanabilir.

Bu aynı zamanda diğer bilgisayar türlerine de genel olarak bağlanır (bunun için bağlı analiz veya kanıt bir Turing makinesinden çok daha karmaşık olabilir) ve belirli bir sorun için gereken geçici depolama miktarını tahmin etmeyi sağlar - sabit bir miktarda yapılabilir mi? boşluk? Girişe orantılı mı? Girdiler büyüdükçe üssel miktarda alan gerektiriyor mu?


1

Sonlu otomataların paylaşmadığı turing makinelerinin önemli bir özelliği , problemi problemin büyüklüğü ile çözmek için gereken bellek miktarını ölçeklendirebilmeleridir .

nn2

Mesele şu ki, birçok problem daha fazla bellek kullanan doğal çözümlere sahipse, problem o kadar büyük olur. Bu nedenle, bu çözümleri sonsuz bellek kullanabilen temsillerle tanımlamak doğaldır - bir örnek sonsuz miktarda kullanacağı için değil, her miktarı kullanan bir örnek olduğu için. Turing makineleri ile, aynı zamanda sonlu otomata dizileri ile yapabilirsiniz.


İlgili bir notta, N durumlu bir Turing makinesi, başlangıç ​​pozisyonundan önce ve sonra sınırlı sayıda C boş olmayan karakter içeren bir kasetle başlatılırsa, herhangi bir makinenin hiç durmayacak olan bir makine, bandı T (N, C) karakterleriyle sınırlı bir makine tarafından taklit edilebilir.
supercat,

-2

Gerçek bilgisayarlar sınırlı belleğe ve yalnızca sınırlı sayıda duruma sahiptir. Bu yüzden aslında sonlu otomatlardır.

Turing makineleri sonlu otomata türevleridir. Turing makineleri pratikte Nuemann mimarisidir.

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.