Tanınmayan dillerin varlığını anlamaya çalışıyorum. Bunu elde etmek için bir Turing makinesinin neden birden fazla dili değil, yalnızca bir dili tanıdığını bilmem gerekir. Bu neden?
Tanınmayan dillerin varlığını anlamaya çalışıyorum. Bunu elde etmek için bir Turing makinesinin neden birden fazla dili değil, yalnızca bir dili tanıdığını bilmem gerekir. Bu neden?
Yanıtlar:
Bir Turing makinesi tarafından tanınan dil, tanım gereği kabul ettiği dizeler dizisidir. Makineye bir giriş verildiğinde ya kabul edilir ya da edilmez. Bu makineye yapılan herhangi bir girdi ya daima kabul edilir (dilde) ya da her zaman kabul edilmez (dilde değil). Dolayısıyla, tek bir Turing makinesinin birden fazla dili kabul edebileceği bir mekanizma yoktur.
Şöyle düşünün: TM, yüklü yazılımı olan bir bilgisayar gibidir. Her yazılım bir şey yapar, değil mi? Örneğin, bilgisayarınızı düşünün ve içinde sadece 1 programın yüklü olduğunu varsayın. Sonra PC + "photoshop" sadece photoshop yaparken, PC + "mine sweeper" sadece mayınları süpürür.
Yani bir Turing makinesi çok basit bir yaratıktır, her çalışmada tek bir giriş alır ve bir evet veya hayır çıkar . Hangi girdilerde evet diyor ve hangisinde hayır diyor - bu TM'nin durumları ve geçiş fonksiyonu tarafından belirlenen "programı" tarafından belirlenir. Bunlar düzeltildikten sonra, "program" sabittir ve herhangi bir giriş için sadece bir cevap vardır: Evet veya Hayır (kabul et / reddet). Bu tam olarak tek bir dil tanımlar = TM'ye verildiğinde Evet veren tüm girişler .
Öte yandan, set arasında tüm TM'ler olası tüm programları ile bilgisayar + "yazılım" setine eşdeğerdir. Artık daha fazla dile karar verilebilir - ancak yine de her bir TM yalnızca bir dile karar verir (veya tanır).
Turing Machine onların yaptığı gibi çalışıyor çünkü onları tanımlamayı seçiyoruz. Daha sofistike tanımlara sahip olabiliriz, ancak soru bunun bir amaca hizmet edip etmeyeceği, daha fazla şey yapmamıza izin verip vermeyeceği. Ve bildiğimiz kadarıyla, cevap hayır.
İki dili tanıyan Turing Makineleri modelleri yapmak çok kolaydır. ve dilleri , 2 tür kabul durumu olan bir TM tanımlayabiliriz: biri ve diğeri . Bir TM'nin karşılık gelen bir kabul durumuna geçmesi durumunda kabul ettiği söylenir . Ancak, diğer tür kabul eden devlete de girip giremeyeceğini görmek için hesaplamaya devam edecektir. Ve daha sonra durmasını isteyebiliriz, ya da olmayabilir. Daha sonra tüm teoriyi bu tür makineler üzerinde inşa edebilirsiniz. Çalışır ve genellikle yaptığımızdan çok daha karmaşık olur.
David Richerby'nin " tek bir Turing makinesinin birden fazla dili kabul edebileceği bir mekanizma olmadığı" ifadesine cevap vermek , sadece bu tür mekanizmaları düşünmemeyi tercih ettiğimiz için. çok standart bir modelle bile, TM kabul edilebilir bir durumda tek bir durduğunda kabul edildiğini ve TM'nin çift adım. Determinizmsizlik sayesinde bu, TM'nin kesişen iki dili de tanımasını engellemez.L 2
Mesele şu ki, teori yapmak için her türlü varyant kullanılabilir. Ayrıca, lambda hesabı, derleme mantığı, özyinelemeli fonksiyonlar teorisi ve daha fazlası gibi hesaplamanın ne olduğunu modellemek için çok farklı yaklaşımlar denenmiştir.
TM'nin yalnızca bir dili tanıdığı basit modelimiz tarafından hiçbirinin yapamayacağı her zaman gösterilmiştir. Öyle ki, yapılabilecek her şeyi yaptığını tahmin etti. Buna Kilise Turing tezi denir . Bildiğimiz kadarıyla hangi dillerin tanınabilir olup olmadığını belirleyen hesaplanabilirlik teorisinin temel taşıdır.
Bu yüzden basit bir model de kullanabiliriz, çünkü karmaşık bir model gerçek bir fayda olmadan hayatımızı zorlaştıracaktır.
Tabii ki bazen başka modeller kullanıyoruz çünkü bazı sorunları daha iyi anlamamıza izin veriyorlar.
Richerby'nin cevabında bir noktayı genişletmek istiyorum:
Makineye bir giriş verildiğinde ya kabul edilir ya da edilmez.
Bunun nedeni Turing makinesinin deterministik olması: aynı giriş ve başlangıç durumu göz önüne alındığında, her çalıştırdığınızda her zaman aynı şeyi yapacaktır (aynı kabul durumunda veya aynı reddetme durumunda sonlandırma veya sonsuza kadar döngü ).
Ayrıca, her Turing makinesinin tam olarak bir dili tanıdığını kolayca kanıtlayabiliriz:
Çelişkili bir şekilde, bir Turing makinesi M'nin iki farklı L1 ve L2 dilini tanıdığını varsayalım. L1 ve L2 farklı olduğu için, L1'de olan ancak L2'de olmayan bir S dizisi olmalıdır (genelleme kaybı olmadan - bunun tersi olabilir, ancak kanıt, L1 ve L2 değiş tokuşuyla buradan aynı şekilde devam edecektir. ). Şimdi M'yi S üzerinde çalıştırın. Kabul ederse, o zaman bir çelişkiye ulaşılır, çünkü o zaman S L2'de olacaktır. Kabul etmezse (reddederse veya döngüler), S'nin L1'de olmaması nedeniyle bir çelişkiye ulaşılır.
O kelimenin tanımı var çünkü Turing makinası bir dili tanır tanımak bir Turing makinesi dil: tanır Turing makinası kabul ettiği için tüm dizeleri / girdilerin kümesidir.
Bunun cevabı, "Turing makinesi" demek istediğinizde tam olarak ne anladığınıza bağlıdır. Herhangi bir hesaplama modelinin üç bileşeni vardır (burada karar vericileri / alıcıları kısıtlayan):
Turing makineleri için sözdizimi , durum kümesi, alfabe, geçiş fonksiyonu vb. Semantik bir tanımı olur hesaplama , bazı adımların ardından kaset içeriği elde etmek amacıyla geçiş fonksiyonunu nasıl uygulanacağını tarif etmektir. Kabul kriter ki, "bu olduğunda, biz durdurmak ve sonuç olmasıdır" etmektir.
Şimdi, Turing makineleri size sadece sözdizimi ve anlambilim midir, yoksa kabul ölçütünü de ekliyor musunuz? Birincisini yaparsanız, herhangi bir TM farklı kabul kriterleri kullanarak birden fazla dili kabul edebilir; birden fazla kabul edilen dile izin veren kabul kriterini bile düşünebilirsiniz (örneğin, iki parametreli TM'leri düşünün). Bununla birlikte, ikincisini yaparsanız, kıpır kıpır bir oda yoktur ve olağan kabul kriteri, TM (bu türden) başına tam olarak bir dile izin verir.
Her zamanki TCS teriminin tanımı ve kullanım her üç bileşenleri içerir. Bu mantıklıdır, özellikle, kabul kriterinin değiştirilmesi, otomasyonun temsil ettiği nesne sınıfını büyük ölçüde değiştirebilir , bu nedenle neden bahsettiğimizi bilmek için kriteri düzeltmemiz gerekir .
Örnek olarak, sonlu otomata ve Büchi otomatalarını karşılaştırın . Sözdizimi ve anlambilim tamamen aynıdır, ancak biri sonlu kelimeleri kabul ederken diğeri sonsuz kelimeleri kabul eder!
Büchi otomatlarının kabul kriterlerini TM tanımına bağlarsanız ne olacağını anlamaya çalışın.
Şimdi, normal kabul kriteri neden anlamlı? Kendinizi sonlu dizelerin diliyle sınırladığınız sürece, kavramsal düzeyde TM başına birden çok dil olması çok fazla değişmeyecektir: yine de aynı dil kümesini kabul edebileceğiz. Bu yüzden daha basit bir modele bağlı kalıyoruz. Bununla birlikte, daha katılımcı bir modelin uygulamalarda modelleme için yararlı olamayacağı anlamına gelmez - ancak bu, TCS'nin (tanımlayıcı otoriteye sahip olan) kapsamının ötesindedir.
ve tanıyan bir TM , burada . Bir dizge olup varsayalım burada ve . O zaman kabul eder , ancak bu yüzden kabul , bu nedenle bir çelişkiye ulaştık. Diğer durumda örneğin, aynı oynar ve . Bu nedenle, TM yalnızca bir dili kabul eder.
Bir TM söylemek bir dil tanır her dize için bu araçlar , kabul ve her dize için o , kabul .L s ∈ L M s s M s ∈ L
s kabul eder
Tanınmayan dillerin varlığını anlamak için karar verilebilir dillerin tanımını göz önünde bulundurun. Bir dilin karar verilebilir olduğunu söylemek, dilin tanınabilir ve ortak Turing tanınabilir olduğu anlamına gelir. Tanınmayan bir dil olmasaydı, her dil karar verilebilirdi. Bu yanlıştır, bkz. .
Bir dil dizeler kümesidir. L1 ve L2 dillerinin birleşimi bir dizi değil mi (buna L3 diyelim), bu yüzden başka bir dil olur mu? Ardından, Turing makinesi her iki dili de tanırsa, tek bir dil olan L3'ü tanır.
başka hiçbir yanıt Turing'in durdurma kanıtında ilk tanımladığı / keşfettiği Evrensel Turing Makine (ler) inin varlığına işaret etmez . evet, TM tek bir yinelenen numaralandırılabilir dili kabul eder, ancak UTM, giriş dizesiyle birlikte girişte kodlanmışsa, yinelenen numaralandırılabilir dilleri tanıyabilir. bu yüzden sorunun bazı zenlike kalitesi var. TM'ler hem tek bir dili hem de tüm olası kodlanabilir dilleri kabul eder.