Boş sembol neden bir Turing makinesinin giriş alfabesinin bir parçası olarak kabul edilmiyor?


12

Turing makinelerinin tanımları , boş sembolün giriş alfabesinin bir parçası olmadığı konusunda her zaman açıktır.

Ben ne zaman yanlış giderse merak ediyorum etkili bir boş sembol zaten girişin bir parçası gibi görünüyor, çünkü giriş alfabenin bir parçası olun.

Son cümlede 'görünüyor' ifadesini açıklamak için aşağıdakileri göz önünde bulundurun.

Varsayılan kurulumda, girişin sağında sonsuz sayıda boş sembol görünür. Teyp kafası ilk boş sembolün üzerinde hareket ettiğinde, hesaplama kabul veya reddetme durumu olması gerekmediği için devam edebilir.

Şimdi, hesaplamanın daha sonra ilk boş sembolün sağındaki giriş alfabesinden semboller yazacağını, ardından başlangıç ​​durumuna geri dönerken en soldaki konuma geri döneceğini varsayalım. Daha sonra farklı bir bantla 'baştan başlayacaktır'. Etkili olarak, şimdi farklı bir girişle başlar, burada boşluğun sağında daha önce olmayan giriş sembolleri vardır. Girdi, boş sembolü etkin bir şekilde içeriyor gibi görünüyor. Makinenin başka davranışı da farklı olabilir: işlenmemiş parça ile tekrar karşılaştıktan sonra, sağda farklı sembollerle karşılaşacaktır.

Bu senaryonun gerçekten mümkün olduğunu varsayalım, neden giriş alfabesinin boş sembol kısmını düşünmüyorsunuz ve neden 'başlangıç' girdisinin bir parçası olarak dahil edilmesine izin vermiyorsunuz?

Belki de girdiyi her zaman sonsuz olmayacak şekilde tanımlamanın bir yoludur?


Sınıftayken girişlerinde alan ayırıcılar olarak β (yerel boş sembol) kullanılmasına izin veren Turing makineleri tasarladım.
Joshua

Yanıtlar:


23

Ana nedeni, makinenin girdisinin sonunu algılamasına izin vermesidir: ilk boşluktur (önceki karakter). Girişte boşluklara izin verdiyseniz, makine daha sağda tarayarak daha fazla giriş bulabileceğini asla bilemez. Tabii ki, karakterin özel bir "giriş sonu" alarak bu çözebilir ama o zaman bunda ısrar o sadece derin sorun bir seviye kaymış ettik böylece, girişteki görünemez.

Ayrıca başlangıç ​​koşullarının belirtilmesini çok daha kolay hale getirir: giriş, başlangıç ​​bandının sonlu ve bitişik olması gereken boş olmayan kısmıdır. Boş bir karakterin giriş alfabesinin bir parçası olmasını istiyorsanız, her zaman ekstra bir karakter ekleyebilir ("boşluk" veya başka bir şey olarak adlandırın) ve makinenin gördüğünüz gibi istediğiniz gibi davranmasını sağlayabilirsiniz.


2
Ah, elbette, ilk girdinin sonunu belirleyemeden, bazı hesaplamalar imkansız olurdu. Fakat aksi takdirde sembol hakkında özel bir şey yoktur. Ve sanırım boş sembolü kullanmak terminolojik ekonomi meselesi, çünkü yine de alfabenizde buna ihtiyacınız var. Başlangıçta açık bir giriş sonu sembolü ve kesinlikle gerekli olmadığı ve genellikle dışarıda bırakıldığı bir açıklama ile tanımlandığında benim için daha açık olacağını düşünüyorum.
Karışıklık

1
Fazladan bir sembol gerektirmeyen basit giriş kodlamaları vardır. Örneğin, 00, 01, 10 ve 11 karakter çiftlerini göz önünde bulundurarak dört karakterli bir alfabe simüle edebilir ve sonra (örneğin) bir kod çözme . Ancak üçüncü bir karaktere izin vermek için konuları büyük ölçüde basitleştirir ve bunu yapmak gerçek bir dezavantaj oluşturmaz. {00}0,{11}1,{10,01}b
Yonatan N

2
Turing makinesi, boşluk okursa ne yapacağını yöneten kurallara ihtiyaç duyar ve boşluk yazmasını söyleyen bir kuralı olabilir, bu boşlukun gerçekten alfabesinin bir parçası olduğu anlamına gelmez mi? Girişin neden boşluk içermediğini anlamıyorum. Boş olmayan karakterleri ve ayırıcı olarak tek bir boşluğu kullanarak giriş öğelerini kodlamaya ne dersiniz? Ardından birden fazla ardışık boşluk girişin sonunu gösterir.
Rosie F

3
@YonatanN Elbette. Bu "basit" ama boş bir simgeye sahip olmak daha basit.
David Richerby

3
@RosieF Boş bant kasetinin bir parçasıdır; giriş alfabe bunun bir alt kümesidir. Ve elbette, girdinin belirli koşullar altında nasıl boşluklar içerebileceğine dair kurallar oluşturabilirsiniz (yaptığınız gibi), ancak bu sadece tanımları daha karmaşık hale getirir. Daha karmaşık tanımlar, Turing makineleri hakkında bir şeyleri kanıtlamanın daha zor olduğu anlamına gelir. Ve Turing makineleri gerçekten sadece şeyleri kanıtlamak için kullanıldığından (gerçek bir bilgisayar tasarlamak istiyorsanız, bir TM olmayacak), bu iyi bir takas değildir.
David Richerby

6

Boş sembolü alfabenin bir parçası olarak tanımlayabilirsiniz. Sorun şu ki, b010010b girişine sahip bir Turing makinesi (b boş anlamına gelir ) asla ikinci b'yi geçmezse, makine b010010b ile başlayan tüm girişlerde tam olarak aynı şekilde davranacaktır.

Bu Turing makineleri Turix öneki olarak adlandırılır ve Kolmogorov karmaşıklığı hakkında bazı teoremleri kanıtlamak için çok yararlıdır.


5

Çok kısa cevap: Bant alfabesi , bantta görünebilecek simgeler kümesidir ve boş sembolü içerir. Giriş alfabesi görünebilir sembollerin kümesidir ilk girişte ve boş sembolü içermez. Makinenin önem verdiği ana alfabe teyp alfabesidir: örneğin, boş göründüğünde ne yapılacağı konusunda kurallara ihtiyacı vardır.

Diğerlerinin söylediği gibi bu ayrım önemlidir, böylece makine girdisinin nerede bittiğini söyleyebilir. C'de bir dizenin ortasına sıfır karakteri (yararlı bir şekilde) yerleştirememenizin nedeni de budur: sıfır karakteri "bu, verilerin sonundan önceki son sıfır olmayan karakter" anlamına gelir; bunu gördüğünüzde işiniz bitti ". Dizenin ortasında sıfır karakter beklemeniz gerekiyorsa, yazma işlemi strlençok daha zorlaşı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.