Özetle : Turing Machine (sonlu olarak tanımlanmış) sonsuz veriler üzerinde (sonlu olarak tanımlanmış) sonsuz hesaplamalar yapabilir ve (sonlu olarak tanımlanmış) sonsuz sonuçlar üretebilir. Temel fikir, bu sonsuzlukların matematiksel olarak uygun bir şekilde tanımlanan sonlu varlıkların limiti olarak tanımlanabilmesidir. Bu, hesaplamanın matematiksel anlambiliminin temelidir. Turing Machines yerine programları göz önünde bulundurursanız, bu programlar ayrıca (sonlu olarak belirlenmiş) sonsuz veri yapıları içerebilir. fact
Olası bir algoritma olarak tablo haline getirilmiş bir fonksiyonun sonunda, sonsuz nesnelerin tembel değerlendirmesi ile ilgili bir ipucu ile, bir program veya bir TM modeli olarak analiz edilir.
Daha fazla ayrıntıyla
Son sorunuzla ilgili olarak, bir TM rastgele sayılar üzerinde değil, bu sayıların bunları temsil eden keyfi (sınırsız) uzun dizeler olarak sembolik gösterimi üzerinde hesaplar. Modulo uygun kodlama, bu temsiller yoluyla aritmetiği bu sayılarla karşılaştırabildikleri veya yapabildikleri doğrudur.
Ancak asıl soru, Turing Makinalarında sonsuzluğun rolü hakkında.
Bu sorunun ortak bir cevabı Turing Machines'in asla sonsuzlukla uğraşmamasıdır. Sonlu olarak tanımlanırlar ve hesapladıkları her şey, bandın sınırlı bir kısmında sınırlı bir zamanda hesaplanır (bu nedenle daha büyük bir sonlu bant yeterli olacaktır). Doğru olan, TM'nin alan süresi gereksiniminin sınırsız olmasıdır, ki bu sonsuz değildir.
Dolayısıyla, bir TM tarafından hesaplanan herhangi bir cevap, bir dereceye kadar tablolamaya bakmanın bir yolu olan bir sonlu durum otomatı (FSA) tarafından da hesaplanabilir. Zorluk, bazı giriş boyutlarının (sadece girişi okumak için neredeyse her zaman gelir) otomatiğin boyutunu aşmasıdır. Ama sonra sadece daha büyük bir tane kullanabiliriz. Dolayısıyla, sınırsız girdi boyutunu dikkate almak istiyorsak, hesaplamayı yapabilen sonsuz bir FSA dizisine ihtiyacımız var. Aslında, hesaplanacak bir çıktı (evet-hayır cevabı yerine) olabileceğinden, geleneksel FSA'dan biraz daha karmaşık bir sonlu durum makinesine ihtiyacımız olabilir, ancak sonlu durum dönüştürücüsünün muhtemelen yapması gerekir.
Dolayısıyla, bir GCD hesaplamak veya sadece keyfi boyuttaki tamsayılarda aritmetik kullanmak gibi sonsuz bir dizi örneğe sahip bir soruna bakarsak, sonsuzluğun arka kapıdan bize geri geldiğini görüyoruz, bu sonsuz FSA kümesi.
Ama başka bir sorun daha var. Yukarıdaki analiz, yalnızca bir sonuçla sona eren hesaplamaları düşündüğümüzde işe yarar. Ancak tüm TM bunu yapmaz. Bazıları sonsuz bir kümenin üyelerini numaralandırabilir. Bu genellikle ondalık sayıları hesaplayan bir TM için geçerlidir.πve süresiz olarak yenisini eklemeye devam edin. Tabii ki, sonlu bir zamanda sadece sonlu bir cevap hesaplar, ama ilgilendiğimiz şey gerçekten sonsuz bir hesaplama tarafından üretilen sonsuz dizidir. Şimdi sonsuzluğun iki yönüne sahip olduğumuza dikkat edin: hesaplama sonsuzluğu ve sonucun sonsuzluğu (yani bazı hesaplanmış veriler). Aslında bu sonsuz girişi düşünmeye bile yol açabilir ... ama sınırsız veri akışlarıyla ilgilenen bu komplikasyonu görmezden gelelim. Ayrıca evet dışında bir çıktı veren bu tür hesaplamaların
Daha sonra, bunu sonlu makinelerle sonsuz bir sonlu hesaplama dizisi ile değiştirebiliriz. Ama aldatıyor muyuz?
Fiziksel bir bakış açısından, yapabileceğimiz en iyi şey budur. Sadece en azından fizikteki son teknolojiye göre, yakın gelecekte bu konuda çok fazla değişmesi beklenmeyen sonlu makinelerin nasıl inşa edileceğini biliyoruz.
Ancak bu sonsuzlukları matematiksel açıdan tutarlı ve izlenebilir bir şekilde nasıl ele alabiliriz?
Sonsuz bir cevap kümesini hesaplamak için bir tür işbirliği yapabilen sonsuz bir FSA seti düşündüğünüzde, bunu keyfi olarak yapamazsınız. Yaptığınız şeyin mantıklı olmasını sağlamak için bazı güvencelere ihtiyacınız var. Herhangi bir seti önemsiz bir şekilde düzenli setlerin sonsuz birliği ile, aslında sonsuz bir singleton setleri birliği ile inşa edebileceğiniz iyi bilinmektedir. Yani, herhangi bir kısıtlama olmaksızın keyfi sonsuz otomata sendikalarını düşünmek sizi hiçbir yere götürmez. Hatta size tutarsız cevaplar veren aynı otomatada düşünün.
Gerçekten istediğiniz şey tutarlılık kavramını tanımlamaktır. Ancak bu bazı önlemler gerektirir. Evet veya hayır yanıtı veren veya durmayan bir TM benzetimi yapmak için sonsuz bir otomata dizisi kullandığınızı varsayalım. Sorun şu ki, bir ÖSO her zaman evet ya da hayır gibi bir cevapla duracaktır. Ancak, seçilen girdi için yeterince büyük olmayan bir FSA kullanırsanız, neye cevap vermelidir. Hem evet hem de hayır, FSA'nın TM hesaplamasını gerçekten sonlandırdığı durumlar için ayrılmıştır ve bu cevaplardan birini bitmemiş bir hesaplamayla kullanmak sadece karışıklığa yol açacaktır. İstediğin bir cevap: " Üzgünüm, çok küçüküm ve söyleyemem. Lütfen ailede daha büyük biriyle dene ". Başka bir deyişle, taşma gibi bir cevap istiyorsunuz
veya bilmiyorum. Aslında semantikler tarafından " tanımsız " veya ayrıca " alt " olarak adlandırılır ve genellikle⊥".
Yani 3 çeşit durumu olan otomatlara ihtiyacınız var: kabul etme, kabul etmeme ve tanımsız. Tanımlanmamış bir durum, otomanın, hesaplamayı durmaya zorlayan eksik bir kısmı için duran bir durum olarak görülebilir. Yani, hesaplama durduğunda, durduğu duruma bağlı olarak, evet , hayır veya tanımsız yanıtı alırsınız .
Şimdi, istediğiniz şeyin tutarlı olan sonsuz otomata dizileri olduğunu görüyorsunuz . Hem evet ve hayır ile tutarlı
tanımsız ama evet ile tutarlı değil hiçbir . Daha sonra aynı girdi üzerinde tutarlı cevaplar verdiğinde iki otomata tutarlıdır.
Bu, diğer cevap türlerini hesaplayan otomata genişletilebilir. Örneğin, kırmızı, mavi, yeşil gibi renkleri hesaplarlarsa, diğerleriyle tutarlı olan tanımlanmamış rengi ekleyebilirsiniz. Eğer cevap, bunlar gibi sonsuz bir rakam dizisi ise,π, her basamak tutarlı ve bağımsız bir şekilde tanımsız ile değiştirilebilir, böylece 3.14 ⊥ ⊥ ⊥ ⊥ . . . ile tutarlı 3.1415 ⊥ ⊥ ⊥ ⊥ . . . Ve birlikte
⊥ . 15 5159 ⊥ ⊥ ⊥ ⊥ . . ., ancak son ikisi birbiriyle tutarlı değil 3.1416 ⊥ ⊥ ⊥ ⊥ . . .. Aslında, bu anlamda,3.1416 ⊥ ⊥ ⊥ ⊥ . . . bir yaklaşımı değildir π. Bir yanıtın, diğerinde bulunabilecek tüm bilgileri ve muhtemelen daha fazlasını içerdiğinde diğerinden daha iyi tanımlandığını söylüyoruz. Bu aslında kısmi bir sıralamadır.
Turing Makinalarına dayanıldığında biraz garip olan bu teorik yönleri daha fazla geliştirmeyeceğim. Mesele şu ki, bu kavramlar hesaplama alanlarının (ister veri ister makine olsun), sonsuz nesne (örneğin daha iyi ve daha iyi tanımlanmış) sonlu cisimler. Sonsuz dizileri tanımlamak için biraz daha aparat ve bir süreklilik kavramı gerekir. Dana Scott'ın anlambilim teorisi temelde budur ve hesaplanabilirlik kavramlarına biraz farklı bir bakış açısı verir.
Daha sonra, Turing makineleri veya "sonsuz hesaplama" yapabilen diğer resmi cihazlar, daha iyi ve daha iyi tanımlanmış olan makinelerin sonlu yaklaşım dizilerinin sınırları olarak tanımlanabilir. Aynı şey, ister girdi ister çıktı olsun, makinelerin hesapladığı tüm veriler için de geçerlidir.
Bu konuda şimdiye kadar okuduğum en basit belge, Dana Scott tarafından genellikle Amsterdam ders notları olarak adlandırılan elle yazılmış bir dizi ders notudur. Ama web'de bulamadım. Bir kopyaya herhangi bir işaretçi (bir parçası olarak tamamlanmamış olsa bile) memnuniyetle karşılanacaktır. Ancak Scott'ın Matematiksel Hesaplama Teorisinin Anahatları gibi diğer erken yayınlarına bakabilirsiniz
.
Sorunun ilk örneğine dön
Bu yaklaşım kavramları veriler için olduğu kadar programlar için de geçerlidir. Fonksiyon fact
özyinelemeli olarak tanımlanır, yani bir dizinin yakınsak sonlu yakınsamasını hesaplamak için kullanılabilen bir fonksiyonun en az sabit noktasıdır fact
. Daha fazla tanımlanmış sonlu fonksiyonlar dizisi, fonksiyon olarak adlandırdığınız sonsuz bir varlığa yakınsar fact
.
Ancak dizi araması kullanırsanız, kodunuz, önceden hesaplanmış değerlerin sonsuz tablosunun sonlu yaklaşımları olan daha büyük ve daha büyük tablolar içeren kodla tam olarak aynı şeyi yapabilirsiniz fact
. Bu dizilerin her biri aslında herhangi bir tam sayı için bir cevap verebilir, ancak cevap⊥( tanımsız ) tablo yeterince tanımlanmadığında (yeterince büyük). Tablo arama algoritması da sonsuz bir tabloyla hesaplandığı için bir dizi yaklaĢımla tanımlanmalıdır.
Eğer temel TM hesaplama modelini göz önüne alırsanız, böylesine sonsuz bir dizinin bu formalizmde ifade edilemeyeceği doğrudur. Bu mantıklı olmayacağı anlamına gelmez. Bir Turing makinesinde, gibi bazı işlevlerin tablo değerleri ile başlatılması gereken ikinci bir bant olabilir fact
. Bu işlev hesaplanabilir bir işlev olduğu sürece TM'nin hesaplama gücünü değiştirmez, yani tablo ilgili işlev için tüm bağımsız değişken değer çiftlerini hesaplayabilen başka bir TM'nin sonsuz bir hesaplamasıyla başlatılabildiği sürece.
Ancak pratikte sonsuz bir hesaplamayı tamamlayamazsınız. Dolayısıyla bunu yapmanın doğru yolu, tabloyu tembel bir şekilde hesaplamak, yani yalnızca gerektiğinde girdileri doldurmaktır. Memolaştırma ile yapılan şey tam olarak budur, bu da önceki sorunuz için farklı gerekçelerle size verdiğim cevaptır.