Hesaplanabilir sayılar (Turing anlamında) neden numaralandırılabilir? Çok açık olmalı, ama şu anda görmüyorum.
Hesaplanabilir sayılar (Turing anlamında) neden numaralandırılabilir? Çok açık olmalı, ama şu anda görmüyorum.
Yanıtlar:
Hesaplanabilir bir sayı tanımınızın bu olduğunu varsayıyorum: girişte bir Turing makinesi var ile durur sayının th biti.
Hesaplanabilir sayılar üreten Turing makinelerinin tekrarlayan bir sayımı olduğunu varsayalım. Köşegenleştirmeyi, bu yinelemeli numaralandırmanın bir parçası olmayan yeni bir hesaplanabilir sayı bulmak için kullanabilirsiniz.
Turing makinelerini numaralandırarak hesaplanabilir sayıları numaralandırmak cazip gelebilir, ancak her Turing makinesi hesaplanabilir bir sayıya karşılık gelmez ve genel olarak bir Turing makinesinin tüm girişler için durup durmadığına karar verir (yalnızca 0 veya 1 çıktı olsun) hesaplanamaz. Bununla birlikte, çalışma süresi polinom olan tüm etkili hesaplanabilir sayıları saatli Turing makineleri kullanarak numaralandırmak mümkündür.
Numaralandırılabilir olarak, doğal sayılarla (yani sayılabilir) bir bijection olduğunu kastediyorsanız, o zaman hayır, hesaplanabilir sayılar numaralandırılamaz.
Sorunu daha açık bir şekilde tanımlayalım: "Sayı-Baskı Turing Makinesi (NPTM)", her durum geçişinde hiçbir şey basamayan veya ondalık basamak, eksi işareti veya nokta basabilen bir Turing Makinesi'dir. Bu, gerçek sayıların ondalık temsillerini yazdırmak için yeterlidir.
Hesaplanabilir bir gerçek sayıyı, boş bir kasetten başlayan bir NPTM tarafından, yeterince uzun bir süre, keyfi olarak uzun bir sunumla basılabilen herhangi bir gerçek sayı olarak tanımlayalım. Ayrıca, bir sayının, iyi biçimlendirilmiş gerçek bir sayı yazdırıldıktan sonra durduğu belirli bir NPTM tarafından hesaplandığını da söyleyelim (bu durumda sayının sonlu ondalık bir temsili vardır) veya sonlu bir sürede iyi biçimlendirilmiş sayı yazdırır ondalık nokta ile ve daha fazla basamak yazarak, daha fazla zaman verilen sayının kesinliğini artıracaktır.
Bu sonraki koşul gerekliydi, örneğin, örneğin, bir rakamın sonsuz bir dizisini basan bir makinemiz varsa, diyelim ki 1111111111111111111
... herhangi bir gerçek sayıyı hesapladığı söylenemez, çünkü gerçek sayılar sadece sağda sonsuz bir temsile sahiptir ondalık dönem tarafı. Öte yandan, makine yazdırır 3.14
ve sonra yazdırmayı durdurur, ancak asla durmazsa, sayının kesinliği artmadığı için herhangi bir gerçek sayıyı hesapladığı söylenemez, bu nedenle bu makine onu yapmaz Daha ileri.
Bunlar bazı sayıları hesaplayan NPTM örnekleridir. Bir NPTM:
1
, daha sonra durur. 1 sayısını hesaplar.1.0
, daha sonra durur. Ayrıca 1 numarayı hesaplar.1.0000000
ve sıfırları sonsuza kadar yazdırmaya devam eder. Bu aynı zamanda 1 numarayı da hesaplar.3.14
, daha sonra durur. 3.14 sayısını hesaplar.3.14159
ve sonsuza kadar. Bu sayı hesaplar.-42.
ve sonra durur. -42 sayısını hesaplar.Ve bunlar do NPTM örnekleridir değil herhangi bir sayıda hesaplamak. Bir NPTM:
123123123
ve ardından diziyi 123
sonsuza dek yazdırmaya devam eder. Bu sonsuz sıra herhangi bir gerçek sayıyı temsil etmediğinden sayı hesaplamıyor.1.0.0
ve sonra durur. Çünkü bu sonlu dizi iyi biçimlendirilmemiş.....-..---
ve sonra durur. Bu iyi biçimlendirilmiş gerçek bir sayı olmadığı için de değil.3.14
, durmaz, ama asla başka bir şey yazdırmaz. Bir sayı hesaplamıyor çünkü hassasiyeti zamanla artmıyor.Fikriniz var. O zaman iki NPTM sınıfımız var: gerçek sayıları hesaplayanlar ve yapmayanlar.
Hesaplanabilir sayılar için bazı numaralandırma bulma problemi, NPTM kendileriyle hesaplanabilse bile, bir tür NPTM'yi diğerinden ayıran bir prosedürümüzün olmamasıdır.
Sayılabilir kümenin tanımını düşünün: bir küme için sayılabilmesi için bazı iki işlevli bir işlev olmalıdır .
Hesaplanabilir sayıların sayılabilir olduğunu "kanıtlamak" için, NPTM sayımından böyle bir işlevi tanımlamak cazip gelebilir (ve hesaplanabilir sayıların sayılabileceğine inandıklarında insanların sık sık yaptığı şey budur). Bunun gibi bir şey:
NPTM sayılabilir, bu nedenle iki yönlü bir fonksiyon var böylece var olan tüm NPTM'leri sonsuza dek sıralayabiliriz. Böylece, aynı şekilde tüm hesaplanabilir sayıları numaralandırmak ve bijektif fonksiyonu tam olarak tanımlamak için, sadece tüm NPTM'leri numaralandırmak gerekir, ancak sadece gerçek bir sayı hesaplayanları saymak gerekir. Ama bunun gerçek bir sayı hesapladığını nereden biliyoruz?
Biz bilmiyoruz. Hemen yazdıran 1.0
ve ardından yazdırmayı durduran ve Yazışma sonrası sorununun bir örneğini çözmeye çalışan bir makine düşünün . Sorunu çözerse, durur, sonra makine sadece bir numarayı hesaplar. Ancak bu sorun kararsızdır, bu yüzden asla durmayabilir ve asla durmazsa, asla gerçek bir sayı hesaplamaz. Ama durup durmayacağını bilemeyiz, çünkü Durma problemi de kararsızdır! Bu nedenle, bu özel makinenin ve sonsuz sayıda başka makinenin, ya gerçek bir sayı hesaplayıp hesaplamadığını bilmenin bir yolu olmadığından, iki yönlü fonksiyonumuzu bu şekilde inşa edemeyiz / tanımlayamayız.
Bijection'ı tanımlamanın naif yolu başarısız olur ve bunu yapmanın bir yolu olmadığını kanıtlamak çok zor değildir. Yuval Filmus'un önerdiği gibi, köşegenleştirme kullanılabilir.