Bant neden Turing Makinesi tanımının bir parçası değil?


11

Kasetin / bantların neden Turing Machine'nin resmi tanımının bir parçası olmadığını merak ettim. Örneğin, bir Turing makinesinin Wikipedia sayfasındaki resmi tanımını düşünün . Hopcroft ve Ullman'ı izleyen tanım şunları içerir: sonlu durum kümesi , bant alfabesi , boş simge , başlangıç ​​durumu , son durum kümesi , geçiş fonksiyonu . Bunların hiçbiri bandın kendisi değildir.S ΓbΓq0SFSδ:(QF)×ΓQ×Γ×{L,R}

Bir Turing Makinesi her zaman bir bant üzerinde çalıştığı düşünülür ve geçiş işlevi başını hareket ettirme, sembolün değiştirilmesi ve durum değiştirme olarak yorumlanır. Peki, kaset neden bir Turing makinesinin matematiksel tanımının dışında bırakılıyor?

Görebildiğim kadarıyla, resmi tanımın kendisi, Turing Machine'in genellikle gayri resmi olarak tarif edildiği gibi (bir kafa bantta hareket ederken) çalıştığı anlamına gelmiyor gibi görünüyor. Yoksa öyle mi?


1
Vikipedi'deki bir sonraki bölüm şöyle diyor: "Van Emde Boas (1990), s. ve hesaplamaları neye benzeyecek. "" yazılım / donanım ikilemi / sinerji / karşılıklı bağımlılığa oldukça benziyor. yazılımı üzerinde çalıştığı belirli bir donanımı varsayar. Birisi gelecekte bir yazılım keşfettiyse, üzerinde çalıştığı donanımı da anlamadan "anlamını" anlayamazdı.
vzn

Yol neden arabanın parçası değil?
Andrej Bauer

Yanıtlar:


8

Bir Turing makinesinin (genel konsept değil) bir örneğini resmi olarak tanımlamak için, bandın kendisini veya içeriğini açıkça belirtmeniz gerekmez. Bu makinenin bir yapılandırmasını veya onun tarafından gerçekleştirilen bir hesaplamayı belirtmek için, yani bandın içeriğini tanımlamak için bir tür gösterime ihtiyacınız olduğunda.


Yani sadece bir konfigürasyon ve hesaplamayı tanımlamak için bir kasete ihtiyaç var mı?
Shuzheng

Evet, makine sadece bant üzerinde çalışıyor. Bandın farklı içerikleri farklı makineler oluşturmaz.
André Souza Lemos

1
Başka bir deyişle: soru sadece TM'lerin sözdiziminden bahsediyor . Bant yalnızca semantiği tanımlarken resme girer. (Analoji: C'nin sözdizimi tanımı (veya başka bir programlama dili) varsayılan donanım mimarisi / OS / CPU komut setinden de bahsetmiyor.)
Raphael

Anlamsal olarak bile, bant içeriği değişse bile makinenin aynı makinede kaldığını düşünmek en doğal olanıdır. (Resmi olarak, ilk içerikler makinenin tanımının bir parçası olduğu için durum böyle değildir.)
reinierpost

2

Bu biraz gri bir alan, ama tanım böler söyleyebilirim modeli gelen örneği . Aklınızda basit bir fikir edinmek istiyorsanız, donanım vs yazılım hakkında düşünün.

Modeli donanım: bir başıdır. Bir bant var. Bant bir tarafta sonsuzdur ve boşluklar içerir (girişin yanı sıra). Kafa her seferinde bir adım hareket edebilir.

Örneğin yazılımdır: nasıl baş hareket eder ve makinenin nasıl "eserlerini" kaset başında ne tutar giriş dikte, eyalet / geçiş fonksiyonu söyler. Nihai durumlar başarı / başarısızlık anlamını verir.

Her iki parametre de yapılandırılabilir --- her ikisi de değiştirilebilir. Alternatif modeller iki bant, iki kafa, iki taraflı bant, boş olmayan bant vb. İle mevcuttur. Ancak modeli sabitledikten sonra, olası durumların sayısı ve geçiş işlevi olarak diğer "yapılandırılabilir" parametreleri ayarlamanız gerekir. .

PMpbirttern


1

İşte zaten iyi cevaplar, ama özlü bir cevap vermeye çalışıyorum.

Tanımlar fazla veya ayrıntılı olmamalıdır.

Gerçekten de, Turing makinesi tanımı bant soyutlamasını da tanımlar. Q0 - bandın başlangıcıdır . Alfabe kasetin içeriğidir . Ve δ: (Q ∖ F) × Γ → Q × Γ × {L, R}, bandın her iki yönde sol ve sağ ve sonsuz olduğunu belirtir .

Yani, bant, kafa, modelin sadece insan dostu temsillerini taşır, zaten matematiksel modeldedir , ancak bunlar resmi bir model değildir.


1

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.

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.