Les , özlü ve doğru bir cevap sağlar: matematiksel tanımlar mümkün olduğunca özlüdür ve açıkça bir Turing makinesinin tanımına sonsuz bir bant eklemek, tanımını daha az özlü hale getirecektir, bu yüzden yapmayız.
Bu şu soruyu cevaplamıyor: neden ? Tanıma ihtiyacımız olduğunda sonsuz bandı nasıl hariç tutabilirim?
Cevap: Yapmıyoruz. Bir anlamda, Turing makineleri aslında sonsuz bantlar gerektirmez ve tanımları bunu netleştirir.
Tanım olarak, bir Turing makinesinin hareketi makineyi bir konfigürasyondan diğerine götürür; bir konfigürasyon, yazılı bandın sonlu bir parçası olarak gördüğümüz sonlu bir dize içerir . Her hareket, bant kafasını bir konum hareket ettirir veya bant kafasının altındaki sembolün üzerine yazar. Ancak - ve bu onun çalışması için önemlidir:
- b
- bunu sonsuza kadar sık sık yapabiliriz .
nn
Bunu yeniden anlatmanın bir yolu: makine, bant kafasının açık olduğu sonlu bir parça haricinde, tamamen boşluklarla dolu sonsuz bir bant üzerinde çalışır. Çoğu açıklama bunu söylüyor.
Bunu yeniden ifade etmenin başka bir yolu: makine, başı her iki uçtan banttan çıktığında boşluklarla uzatılmış sonlu bir bant üzerinde çalışır.
Bunların her ikisi de makinenin nasıl çalıştığını kavramsallaştırmanın geçerli yollarıdır: her iki durumda da, gerçekten böyle çalışan bir makineniz varsa, Turing makinesini doğru şekilde uygular.
İlgilendiğiniz tek şey öğrencilere Turing makinelerinin nasıl çalıştığını öğretmekse, muhtemelen hangi kavramsallaştırmayı seçtiğiniz önemli değildir.
Ancak, ilk kavramsallaştırmanın iki nedenden dolayı bir hata olduğunu düşünüyorum:
- Öyle gerçekçi . Aslında sonsuz bantlı bir makine yapamayız. Biz yapabilirsiniz istek üzerine uzatıldı sonlu bantla bir makine inşa.
- Mantıksız. Görevleri keyfi olarak yapan makinelerin sık sık sonsuz miktarda kaynak içerdiğini düşünmüyoruz. Örneğin, bir fotokopi makinesinin sonsuz miktarda fotokopi kağıdı içerdiğini düşünmüyoruz. Turing makineleri hesaplama faaliyetini modellemektedir. Bir bilgisayarı (buluş sırasında kağıt üzerinde hesaplamalar yapan bir kadındı) keyfi programlanabilir hesaplamalar yapabilen bir makine ile değiştirirsek ne olacağını modelliyorlar. O kadını sonsuz miktarda kağıt içerdiğini düşünmüyoruz. Aksine, ona ihtiyaç duyduğu miktarda kağıt sağlanacağını varsayarız ve böyle bir kadının var olamayacağını söylemek yerine, bunu yapamamayı çevre başarısızlığı olarak kabul ederiz. Neden aynısını makine için yapmıyorsunuz?
- Yanıltıcı sonuçlar doğurur. Bunu çok gördüm. Örneğin:
- İnsanlar, Turing makinelerinin gerçekte inşa edilemeyeceğini söylerken, sonlu durum makineleri de yapabilir. Eh, bir Turing makinesine rastgele miktarda bant sağlayabildiğimizden daha fazla keyfi sonlu durum makineleri üretemeyiz.
- İnsanlar, Turing makinelerinin bilgisayarları doğru bir şekilde modellemediğini söylerken, sonlu durum makineleri bunu yapar. Bu önemli bir noktaya hizmet eder: ilgilendiğimiz tek şey giriş dillerine karar vermek için bir makine kullanıyorsa, sadece (sabit) dahili deposunda çalışan bir bilgisayar belirli bir boyuta kadar herhangi bir sonlu durum makinesini tam olarak uygulayabilir. çoğu Turing makinesini tam olarak uygulayamaz, çünkü çoğu için dahili depolama alanı tükenir. Ancak, bu genellikle söyleyerek genelleştirilmiş: bilgisayarlar vardır , yanıltıcı olduğu sonlu durum makineleri:
- Çoğu bilgisayar programlamasının gerçekçi bir resmini çizmez. Gerçekten de, veri akışı programlama aslında sonlu durum makinelerine dayanır, ancak geleneksel zorunlu programlama değildir; Turing makine örneklerine çok daha yakın olan programlar kullanır.
- Pratikte, bilgisayarlar ayrıca boyutu sabit olmayan harici girdi, çıktı ve depolama kaynaklarıyla da etkileşime girer.
- Turing makinelerinin ilk etapta bilgisayar modellemesi gerekmez; rastgele hesaplamayı modelliyorlar.
Özetle: Sonsuz bir bant kullanan veya içeren bir Turing makinesi fikri önemli bir teknik noktayı vurgulamaya hizmet eder, ancak Turing makineleri hakkında en sezgisel düşünme şekli değildir ve bazı yanlış sonuçlar doğurur. Dikkatle kullanın.