Turing'in eksiksiz olmasının anlamı nedir?


34

Turing-tamamlamanın ne olduğunun çoğu tanımının bir dereceye kadar totolojik olduğunu görüyorum. Örneğin, Google’ın "Turing tam olmak ne anlama geliyor" anlamına gelirse, şunları elde edersiniz:

Bir Turing makinesinin yapabileceği herhangi bir sorunu çözebiliyorsa, bilgisayar Turing'i tamamlar ...

Farklı sistemlerin Turing'in eksiksiz olup olmadığı çok iyi tanımlanmış olsa da, Turing'in eksiksiz olmasının sonuçları / sonuçlarının ne olduğunu bir açıklama görmedim.

Bir Turing makinesi, aynı görevi gerçekleştirebilecek Turing olmayan bir makinenin olmadığı yerlerde ne yapabilir? Örneğin, bir bilgisayar gibi basit hesaplamalar yapabilir (1+5)/3=?, ancak normal bir hesap makinesi bunları yapabilir, ki eğer doğru değilsem Turing işlemi tamamlanmadı.

Sadece "başka bir Turing Makinesi simüle edebilmek" demeden Turing Makinesi'nin yeteneklerini tanımlamanın bir yolu var mı?


31
"Turing makinesi" tanımını arayın. Bir Turing makinası nedeniyle şimdilik döngüsel tanım var, değil "Başka Turing makinesi simüle edememek" olarak tanımlanan - bu tamamen tasarlanmış bulunuyor teorik bilgisayar (temelde, sonsuz bant durum makinesi). Sadece "turing-complete" ve "turing machine" ı karıştırıyorsunuz. Bildiğim kadarıyla, bir turing makinesinde çalışamayan algoritmaları hala bilmiyoruz, ama bu sadece benim cehaletim olabilir.
Luaan

2
@Luaan Kilise Turing Tezi sizinle aynı fikirde olacaktır.
Brian McCutchon

"Turing Makinesi'nin yeteneklerini tanımlamanın bir yolu var mı". Emin. Teori, Turing makineleriyle (L, NL, P, NP, PSPACE, vb.) Algoritmaları çözmek için ne kadar alan ve zaman gerektiğine girer ve çözülemeyen problemler de vardır (genellikle indirgemelerle çözülebilir). diğer çözülemeyen problemler). Turing makineleri tarafından çözülemeyen bir problem örneği durma problemidir.
Millie Smith

CS (ya da başka herhangi bir) teorisine gelince, konuyla ilgili bir kitap okumak, Google'a bakmaktan ve konuyla ilgili birkaç blog yazısını okumaktan, çoğu zaman konuyu tam olarak anlamayan kişilerce yazılmış olanlardan daha iyidir. kendilerini. İyi bir kitap size zaman kazandıracak, daha geniş resim ve daha iyi bir anlayış sağlayacaktır.
Bozidar Sikanjic

Ackermann fonksiyonu Turing makinesi hesaplamak ama hesaplama (daha sınırlı bir model olabilir şeyin belirgin örneğidir ilkel yineleme olamaz).
zwol

Yanıtlar:


13

Bir süre sonra başka bir cevap ekleyip eklemeyeceğimi düşündüm. Diğer cevaplar, sorusunun ortasına odaklanır ("turing complete", "tautology" ve diğerleri hakkında). İlk ve son kısmı ve böylece daha büyük ve biraz felsefi tabloyu çekeyim:

Ama bu ne demektir?

Turing'in eksiksiz olmasının anlamı nedir?

Sadece "başka bir Turing Makinesi simüle edebilmek" demeden Turing Makinesi'nin yeteneklerini tanımlamanın bir yolu var mı?

Gayri resmi konuşmak gerekirse, Turing'in eksiksiz olması, ne kadar karmaşık, derin, özyineli, karmaşık, ne kadar uzun olursa olsun (kod açısından) ve ne kadar saklama veya zamana bakılmaksızın , mekanizmanızın aklınıza gelebilecek herhangi bir algoritmayı çalıştırabilir . değerlendirmek için gerekli. Bu sorunun hesaplanabilir ise sadece başarılı söylemeye gerek yok, ama eğer olduğunu hesaplanabilir, bu olacak (halt) başarılı.

(Not: Bunun niçin "gayrı resmi" olduğunu bulmak için, bu satırlar boyunca devam eden Kilise-Turing tezini inceleyin; bir yorumda bu küçük ihmali işaret ederek.)

"Algoritma", günümüzde yaygın olarak bilgisayar algoritması olarak anladığımız anlamına gelir; yani, bazı kontrol mantıkları karıştırılmış olarak depolamayı manipüle eden bir dizi ayrı adım. Bir Oracle makinesi gibi değildir, yani "tahmin edemez".

Pratik tc olmayan bir dil için örnek

Kendinizi programladıysanız, muhtemelen dizeleri bir kalıpla eşleştirmek için kullanılan normal ifadeleri bilirsiniz.

Bu Turing Complete değil bir yapı örneğidir . Belirli ifadelerle eşleşen düzenli bir ifade oluşturmanın imkansız olduğu egzersizleri kolayca bulabilirsiniz.

Örneğin (ve bu, gerçek uygulamalarda birçok programcıyı kesinlikle sarstı), bir programlama dili veya XML belgesine uyan düzenli bir ifade oluşturmak teorik ve pratik olarak imkansızdır: Bir regexp'in blok yapısını bulması imkansızdır ( do ... endveya { ... }(dillerde, etiketleri XML belgelerinde açma ve kapatma) isteğe bağlı olarak derinlemesine izin verilirse. Orada bir sınır varsa, örneğin sadece 3 seviye “özyineleme” ye sahip olabilirsiniz, o zaman düzenli bir ifade bulabilirsiniz; ama eğer sınırlı değilse, o zaman gitmez.

Kaynak kodu ayrıştırmak için Turing tamamlandı bir dilde (C gibi) bir program oluşturmak açıkça mümkün olduğu için (herhangi bir derleyici bunu yapar), düzenli ifadeler asla söz konusu programı taklit edemez, bu nedenle bunlar tam anlamıyla Turing-tamamlanmadı

Motivasyon

Döner makinanın fikri kendi başına pratik değildir; Örneğin, Turing kesinlikle, örneğin Charles Babbage veya von Neumann'ın aksine gerçek bir bilgisayar veya bunun gibi bir şey yaratmaya icat etmedi. Turing Makinesi konseptine sahip olmanın amacı son derece basittir. Neredeyse hiçbir şeyden oluşmuyor. Olası (ve gerçek) bilgisayarları hayal edilebilecek en düşük seviyeye indirger.

Bu sadeleştirmenin amacı ise, bunun teorik sorular (problemleri durdurmak, karmaşıklık sınıfları ve ne teorik bilgisayar bilimi ile uğraştığı gibi) hakkında düşünmeyi kolaylaştırmasıdır. Özellikle bir özellik, söz konusu Turing Machine'i (bu çok kolay!) Bu dilde programlayarak belirli bir dilin veya bilgisayarın Turing Machine'i simüle edip edemediğini doğrulamanın çok kolay olmasıdır.

Sonsuzluğa

Asla sonsuz zamana veya depolamaya ihtiyacınız olmadığını unutmayın ; ancak hem zaman hem de depolama sınırsızdır. Her hesaplanabilir her çalıştırma için maksimum değere sahip olacaklardır, ancak bu değerin ne kadar büyük olabileceği konusunda bir sınır yoktur. Gerçek bir bilgisayarın sonunda RAM tükeneceği gerçeği burada belirtilmiştir; Elbette bu, herhangi bir fiziksel bilgisayar için bir sınırdır, ancak aynı zamanda, makinenin teorik "hesaplama gücü" ile de ilgilidir. Ayrıca, gerçekte ne kadar sürdüğü ile de ilgilenmiyoruz. Böylece küçük makinemiz keyfi zaman ve mekan kullanabilir ve bu da kesinlikle pratik değildir.

... ve ötesinde

Bir şaşırtıcı son nokta, o zaman, böyle basit, basit bir şey yapabilmesidir şeyi herhangi akla gerçek bir bilgisayar olabilir hiç bugün bildiğimiz kadarıyla en azından -, evrenin içindeki (sadece çok yavaş) başarmak.


"Gayrı resmi olarak konuşmak, Turing'in eksiksiz olması, mekanizmanızın aklınıza gelebilecek herhangi bir algoritmayı çalıştırabileceği anlamına gelir" Peki, Turing makinelerinin aklınıza gelebilecek herhangi bir algoritmayı uygulayabildiğini söyleyen Kilise-Turing tezini kabul etmeye dayanıyor. Veya, alternatif olarak, Turing makinelerini algoritmanın tanımı olarak kabul edebilirsiniz, bu durumda gayrı resmi açıklama "herhangi bir Turing makinesini simüle edebilir" in (sadece kötü bir şey değil, sadece bir gözlem) resmi olmayan bir versiyonudur.
David Richerby

Benim izlenimim, OP'nin, turing işleminin tam olarak ne anlama geldiğini sezgisel bir şekilde anlamasını istediği idi. Bu nedenle, bu tür saygısız, teorik olmayan bilgisayar bilimi cevap. Buna dikkat çektiğiniz için teşekkür ederim, cevaba ekleyeceğim. @DavidRicherby
Ano

Teşekkürler! Aradığım cevap bu. Durma problemini ve basit sınırlı for-döngülerine sahip dillerin nasıl tahmin edilebilir olduğunu (her zaman nasıl dururlar) - ve böylece Turing olmayan tamamlamayı düşünüyordum. Belki (? Bu işlevleri için doğru terim kaotik) bir şekilde potansiyel olarak öngörülemeyen olmanın Turing-tam aracı olma düşünüyordum
sashoalm

@Sashoalm, cevabı beğendiğinize sevindim. Hayır, tahmin edilemezlik konuyu gerçekten etkilemiyor. Sınırlı döngüler (tc olmayan) da güzel bir örnektir. Aslında, basit (ve daha gerçek dünya) bir tc dili için iyi bir örnek, sadece değişkenleri olan ve (sınırlandırılmamış) bir tc dili olacaktır while- bu zaten tc için yeterlidir. Kontrol yapısının (un) sınırlılığı anahtar öğelerden biridir.
Saat

38

Hiç bir şekilde totolojik değil.

Tüm Turing makinelerini simüle edebiliyorsa, bir hesaplama modeli Turing-complete'dur, yani en azından Turing makineleri kadar güçlüdür.

Turing makinelerinin yapabileceği bir şey, diğer Turing makinelerini simüle etmektir (üniversal Turing makinesi üzerinden). Bunun anlamı, eğer hesaplama modeliniz Turing makinelerini simüle edemiyorsa, Turing makinelerinin yapabileceği en az bir şey yapamaz, bu nedenle tanımı yerine getirmiyor, yani Turing tam değil. Döngüsellik yoktur, çünkü Turing bütünlüğünü kendimiz olarak tanımlamadık: Turing bütünlüğünün, Turing makinelerinin yapabildikleri her şeyi yapabilme özelliği olduğunu söyledik.

birb

Sadece "başka bir Turing Makinesi simüle edebilmek" demeden Turing Makinesi'nin yeteneklerini tanımlamanın bir yolu var mı?

"Turing makinelerinin yeteneklerini tanımla" derken ne demek istediğinizi anlamadım. Yetenekler, sonsuz bantta çalışan sonlu durum otomatiği cinsinden tanımlanır. (Tam tanımı tekrarlamayacağım, ancak örneğin Wikipedia'da bulabilirsiniz .)


19
Bence OP, Turing makinesini karıştırıyor ve Turing'i tamamlıyor. Aslında aradığı şey bir Turing makinesinin tanımı; Son cümleniz cevap. en.wikipedia.org/wiki/Turing_machine yardımcı olacaktır.
JollyJoker

Peki bir Turing makinesi ne yapabilir ? Bir turing makinesini taklit edebileceğini ispatlamak isteseydim, makinemin de yapabileceğini gösterebilmem için ne kadar az davranış sergilemeliyim?
Akshat Mahajan

2
Boşver - Bir dilin Turing makinesinin işleyiş biçimini taklit edebileceğini göstermenin yeterli olduğunu ve bunun Turing tamamlandığını kanıtlamak için yeterli olduğunu belirttim.
Akshat Mahajan

17

Turing'in hesaplama modeli, birçok eşdeğer hesaplama modelinden sadece biridir. Gödel'in özyinelemeli işlevleri ve aynı zamanda önerilmiş olan Church lambda matematiği ile aynı işaretçi makinesi gibi diğer modellerle aynı güce sahiptir. Bu nedenle

Excel'in yapabileceği herhangi bir sorunu çözebiliyorsa, bilgisayar Turing-tamam'dir.

Bu, Excel'in de Turing-tamamlanmış olduğundan beri çalışır. Wikipedia'nın Kilise Turing tezi sayfasını ve Blass ve Gurevich, Algoritmalar: Mutlak Tanımlamalar Arayışı'ndaki bir anket çalışmasını incelemenizi tavsiye ederim. .


Sorunuzla ilgili olarak, bir Turing makinesi Turing olmayan bir makinenin yapamayacağı ne yapabilir, genel olarak cevap ne yazık ki Turing olmayan makineye bağlıdır.

Bununla birlikte, Turing-komple problemlerin önemsiz olmayan kavramlarını tanımlamak mümkündür, örneğin:

Dil L Hesaplanabilir her dil için bir "verimli hesaplanabilir" bir işlev var f öyle ki birbir iFF f(bir)L.

Bu tanım uyarınca, durdurma probleminin uygun kodlamaları Turing tamamlandı ve bu nedenle makul bir makine sınıfı için ("verimli bir şekilde hesaplanabilir" tanımına bağlı olarak), makine Turing tamamlandıysa, bir miktarını (eşit olarak tüm Turing tamamlanmış bir dil.

Turing yazışma problemi gibi "verimli bir şekilde hesaplanabilir" tanımına ve Wang fayanslarına ve Yaşam Oyununa ilişkin problemlere bağlı olarak, bu formalizmin yakaladığı birçok Turing-komple problemi var. Bu sorunlardan herhangi biri, durma problemi yerine kıyaslama işlevi görebilir.


"Maalesef cevap Turing olmayan makineye bağlı" - Sorumu açık olmadığı için sordum. Turing yapılmayan bir makineyi seçerek, Turing tamamlanmayan kaldığı sürece görevi gerçekleştirebilir.
sashoalm

5
Excel is also Turing-complete.- sadece Excel'e sonsuz bellek verebilirseniz. Excel, 1.048.576 satır ve 16.384 sütunla sınırlıdır;
MattClarke

5
@MattClarke: Doğru, ancak aynı şekilde hiçbir sistem kurulu olmadı Turing-complete.
Emil

3
@Emil: tam olarak ve CS öğrencilerinin hesaplama modellerinin yetenekleri ile gerçek makinelerin yeteneklerini ayırt etmeleri önemlidir. Gerçek makinelerimizin fiziksel sınırlarını art arda vurmuş olanlarımız elbette bu ayrımı kolaylaştırabilir. Böylece, Excel'in bilgi işlem modelinin sınırsız bir sürümünü nasıl tanımlayacağımızı ve bunun Turing-tamamlandı olacağını biliyoruz. Gerçi bu tanımı biraz yanlış yazmış olsa bile.
Steve Jessop

4
@SteveJessop Makinelerin fiziksel sınırları? Bir insan nasıl böyle bir şeye çarptı? 640k herkes için yeterli!
David Richerby

4

Öncelikle, Turing-eksiksizliğinin tanımının hiçbir şekilde totolojik olmadığını belirtmek isterim. Yalnızca bir hesaplama modelini kanıtlamakla kalmaz Turing-complete, başlı başına ilginç bir sonuçtur, ancak aynı zamanda tüm sonuçları hesaplanabilirlik teorisinden bu diğer hesaplama modeline kadar genişletmenizi sağlar; örneğin: 2 tezgahlı tezgahlar Turing tamamlandı, Turing makinalar durma problemini çözemedi, bu nedenle hiçbir 2 tezgahlı makinalar yapamıyor.

Bir Turing makinesi tarafından hesaplanabilen fonksiyonların basit bir karakteristiği, μözyinelemeli işlevler, kompozisyon altında kapatılmış asgari işlevler kümesi, sürekli sıfır işlevini, özdeşliği ve ardışık işlevi içeren ilkel özyineleme ve küçültme işleci.

Bu sınıf, "sezgisel olarak hesaplanabilir" olan, yani hesaplamanın bir insan tarafından kurşun kalem ve kâğıttan oluşan kesin bir algoritmayı takiben yapabileceği işlevleri içerir.

Açıkçası "sezgisel olarak hesaplanabilir" gerçekten resmi bir tanım değildir, "sezgisel olarak hesaplanabilir" in "hesaplanabilir Turing" ile tanımlanması Kilise-Turing tezi olarak bilinir. Hesaplanabilirliği karakterize etmek için yapılan birçok resmi girişim sonuçta Turing-tamamlanmış bir hesaplama modeline yakınlaştığından, matematiksel anlamda böyle bir iddianın resmi bir kanıtı olmamasına rağmen, buna inanmak için güçlü nedenler vardır.


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.