Turing makinesi neden tam olarak bir dili tanıyor?


13

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?


12
"Dil" ile kastettiğimiz hakkında net bir fikriniz olmayabilir. "Dil" in ne olduğuna inandığını söyleyebilir misin?
Eric Lippert

Bunu neden bilmeniz gerekiyor? Sizce bu nasıl bir fark yaratabilir?
babou

Yanıtlar:


29

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.


6
"Tanım olarak" tam olarak söylediğim şeydi.
Dave Clarke

1
@DaveClarke Tabii ki, tanımı gereği. Ama bu bana biraz kısa görünüyor, çünkü tanımımızı farklı yapabileceğimizi söylüyor, böylece bir TM iki dili veya herhangi bir sayıyı kabul edecekti. Aslında David Richerby'nin bir TM'nin iki dili kabul edebileceği bir mekanizma olmadığı konusundaki görüşüne katılmıyorum: sadece onları görmezden gelmeyi seçtiğimiz için ve aksi takdirde yapabiliriz. Dolayısıyla soru tam olarak cevaplandırılmamıştır, imho, eğer bunu neyin haklı kıldığını açıklamazsak.
babou

2
Bence buradaki sorun "dili" tanımlamak için kullanılan dildir. Bir Turing makinesi, dil tanımımıza bakılmaksızın her şeyi bir dize biçiminde kabul eder. TM dili kabul ettiği şeyle tanımlar, bu bizim (insan) dil anlayışımızla aynı şey değildir. Bu yüzden bu cevap iyi ve "... tam olarak cevaplandı".
David Barker

2
OP'nin büyük olasılıkla Turing makinelerinin sadece bir dili kabul ettiği ve bunun ne anlama geldiğini anlamaya çalıştığı bir yerde okuduğuna katılıyorum. Bunun muhtemelen normal bir kaynaktan geldiği düşünüldüğünde, hesaplama teorisinde tanımlandığı gibi "dil" in normal tanımını kullandıklarını varsayabiliriz, başka bir tanım kullanamazlar. Tanım keyfi olabilir, ancak keyfi bir tanım üzerinde iyi anlaşılmış ve üzerinde anlaşmaya varılmıştır.
Cort Ammon

3
İki dili kabul eden bir Turing makinesi, iki dili birleştiren bir dili kabul eden bir Turing makinesidir.
Simon Richter

9

Şö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).


Küçük nokta: Bir TM'nin "evet ya da hayır" çıktığını söyleyemem, çünkü bu sonlandırmayı ihmal eder. Bu basitleştirme daha sonra başka sorunlara neden olabilir.
chi

4

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.L1L2L1L2Li

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 2L1L2

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.


İlk paragrafın biraz yanıltıcı olduğuna inanıyorum. OP'nin neden işleri bu şekilde tanımladığımızı sormadığını, ancak bunun böyle olduğunu bile bilmediklerini iddia ediyorum. “Daha sofistike tanımlara sahip olabiliriz, ama soru bir amaca hizmet edip etmeyeceğidir”, ona bir isim vermeden önce bir kavramın amacını bilmeniz gerekiyor gibi görünüyor - bence, bu kötü öğrenmek için bir yol.
ilginç bir şekilde

OP, TM'nin neden başka bir şeyi anlamak için sadece bir dili tanıdığını bilmek istediğini söylüyor. Ona cevap veriyorum, öyle yapıyorlar çünkü onları bu şekilde tanımlıyoruz. Farklı tanımları kullanabileceğimizi, ancak teoriyi değiştirmeyeceğini de ekliyorum. Bu ona ne peşinde olursa olsun, tanım seçiminin önemsiz olduğunu ve tanınabilirliğin tamamen aynı kümeleri kapsayacak şekilde tanımlanabileceğini söylemenin bir yoludur. Tanımı seçmenin nedeni kolaylık ve verimli olmaktır ve bu yüzden zamanla gelişirler ve kavramların adlandırılma veya not alma şekli.
babou

Tamam, bu mantıklı. Sanırım çoğunlukla "sofistike" kullanımına itiraz ediyorum - bu daha az basit bir tanımın istenmesi anlamına geliyor.
ilginçtir16

3

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.


2

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.


2
Bilgisayar Bilimine Hoşgeldiniz ! Cevabınız (IMO) doğru ancak önceden var olan cevaplara eklendiğini düşünmüyorum. Çok sayıda cevaplanmamış sorumuz var ve bunlardan birine cevap vermek, mevcut cevapları tekrar etmekten çok daha ilginç ve üretken olacaktır.
David Richerby

1
Teşekkürler! Aslında şu anda kabul edilen cevabı ilk başta görmedim (ki bu iyi olduğunu düşünüyorum) çünkü çok kısaydı ve diğer cevapların soruyu doğrudan doğruya cevaplamadığını hissettim.
ilginç bir

1

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):

  • sözdizimi,
  • semantik,
  • kabul kriterleri.

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.


0

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.M1L1L2L1L2s1s1L1s1L2M1s1s1L2M1s1sL2sL1

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 LMLsLMssMsL

ssLM kabul eders

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. .ATM


Bir TM'nin sadece bir dili tanıdığını kanıtlamak gerekli değildir: bu, "tanıma" tanımından derhal. Bu tanım göz önüne alındığında, bir TM'nin birden fazla dili kabul etmesinin ne anlama geldiğini (ilk cümlede tahmin ettiğiniz gibi) veya böyle bir varsayımdan (üçüncü cümlenizde olduğu gibi) herhangi bir çıkarımın geçerli olup olmadığı bile net değildir. Çelişkili kanıt yalnızca kesintiler su geçirmez olduğunda işe yarar: burada, hata, böyle bir makinenin var olduğu varsayımından ziyade, bir TM'yi tanıyan bir TM'nin nasıl davrandığına dair varsayımda olabilir.
David Richerby

-2

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.


2
Ancak Turing makinesi , aslında aynı olmadıkça her iki dili de tanımıyor. L1'in tanınması, L1 dışında herhangi bir dizeyi kabul etmediği anlamına gelir; L2'yi tanımak, L2 dışında hiçbir şeyi kabul etmediği anlamına gelir. L1 ve L2 farklıysa, her ikisini de tanıyamaz.
David Richerby

-3

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.


4
Hayır. Evrensel bir Turing makinesi Turing makinelerinin ve girişlerinin bazı kodlama için tek dil . - {M,xM accepts x}
David Richerby

ve bu ne yazılandan farklı?
vzn

2
Dillerin kodlarını tanımak, dilleri tanımakla aynı şey değildir.
David Richerby

evet aynen belirtildiği gibi
vzn

1
{(m,x)m=M,}xm
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.