Duruş Probleminin kararsızlığının kanıtı sonuçları tersine çevirerek aldatıyor mu?


12

Turing'in durma problemini anlamakta zorlanıyorum.

Kanıtı, bir bilgisayarın belirli bir giriş için sonsuza kadar durup durmayacağını belirleyebilecek sihirli bir makine olduğunu varsayar . Sonra çıktıyı tersine çeviren başka bir makine ekliyoruz ve bir çelişkimiz var ve bu nedenle olamaz.HH

Benim kaygım, sanki bir cevabın yanlış olduğunu söylüyoruz, çünkü tersine çevirdik. Bir benzetme olarak, adlandırılan bir makine varsa , belirli girişlerde doğru cevap ve diğerlerinde yanlış cevap veren bir makine varsa . Sonra sonucunu tersine çeviren başka bir makine ekliyoruz, böylece iki makinenin kombinasyonu nasıl tanımlandığı ile çelişiyor . İki makine artık girişler için yanlış cevap üretmek çıkış doğru cevap tanımlandığı gibidir ve bu girişler için doğru yanıtları çıkışını çıkış Yanlış cevap olarak tanımlanır. Buna çelişki denir mi ve bu nedenle bazı girdilere doğru cevap, diğerlerine yanlış cevap veren bir makine yoktur?AAAAA

Yanıtlar:


20

Kısa versiyon: Makinelerin çıktıları doğru veya yanlış değildir, sadece çelişkilidir, bu da giriş makinesinin verilen dizede durup durmadığına karar veren ilk makinenin var olamayacağını kanıtlar .

Uzun versiyon : İlk önce kanıtı çizeceğiz (veya en az bir versiyonu - çok var).

  1. Turing Machine girişinde durup durmadığına karar veren bir Turing Machine olduğunu varsayın .HALT(M,x)Mx
  2. kullanarak üzerinde durup kontrol etmek için kullanan bir makine inşa ediyoruz , aksi takdirde , üzerinde durursa , döngüler, üzerinde durmazsa , durur.HALTFLIP(M,x)HALTMxMxFLIPMxFLIP
  3. Sonunda , bir TM'nin tanımını alan ve girişiyle çalışan bir TM (iyi isimlerim oluşturduk , her ne olursa olsun çıktılarını çıktılar.C(M)FLIP(M,M)FLIP

karar vericisinin var olduğu sürece , bu adımların her birinin uygulanması basittir; , ne yapılacağını kontrol etmek için kullanmalı ve , e geçmek için girdisini çoğaltır .HALTFLIPHALTCFLIP

Çelişki, çalıştırdığımızda ne olduğuna baktığımızda ortaya çıkar . Ya santraline de girdi olarak ya da kendi kendine verildiğinde. buna karar verecektir:C(C)CHALT

  • Eğer girişi durur , diyecekler , ama sonra irade döngü, bu nedenle irade döngü , çelişiyor .CCHALTYesFLIPCHALT
  • Eğer giriş döngüler , der o zaman, ama , bu nedenle durur , aynı zamanda olacak dur, çelişiyor .CCHALTNoFLIPCHALT

İnşaattaki adımların her biri açıkça sağlam olduğundan, sadece olamayacağı sonucuna varabiliriz ; ne olursa olsun, neyin çıktı karar veremeyeceği bir durum oluşturduk , yani problem kararlaştırılamaz. Sadece noktayı gerçekten kırmak için, olamaz - bu Durma Sorunu'na karar veren bir TM olamaz - çünkü hiçbir yerde, mantıklı olarak mümkün cevap. Bir karar vericinin yanlış cevap vermesine izin verilmediğini ve bir şeyler çıkarması gerektiğini unutmayın, ancak inşa ettiğimiz durumda, her iki olası cevap da yanlıştır.HALTHALTHALT


makinesi tanımınız mantıklı değil çünkü kabul ettiği girişleri kabul etmiyor . Peki nasıl çalışır? CM
AleksandrH

7

İki farklı “çelişki” anlamını tartışıyorsunuz.

Analojinizde, makine A ve tersine çevrilmiş modifikasyonu, çıktılarının her zaman farklı olması anlamında birbiriyle çelişir. (Örneğin, “ x ≤ 5?” Ve “ x > 5?” Tamsayılarına iki test fonksiyonu uygulayabilirler. Bu kesinlikle “çelişki” nin günlük kullanımda ne anlama gelebileceği anlamına gelir, ancak mantıksal olarak kastedilen bu değildir ispatları.

Mantıksal kanıtlarda, daha güçlü bir şey anlamına gelir: basitçe imkansız olan bir şey. Örneğin, 5'ten fazla tüm girişlerde “true” ve 10'dan küçük tüm girişlerde “false” döndüren bir işlev - bu daha güçlü anlamda çelişkilidir, çünkü 7 için çıktısının hem “gerçek” olması gerekir. ve "yanlış", ancak bunlar aynı değil. Turing'in argümanı durma programının daha güçlü anlamda çelişkili olduğunu gösterir: imkansız olan veya zaten yanlış olduğu bilinen bir şeye yol açtığını varsayarsak.


2

Durma sorununun kararsız olduğuna dair başka bir kanıt. Biz bir program olduğunu söylemek verir bir dize o durur ve çıkışlar eğer . (Program hiç durmazsa, herhangi bir dize çıkarmaz.) değerini, en fazla uzunluğundaki bir C programı tarafından çıkarılan en uzun dizenin uzunluğu olarak tanımlayın .xxf(n)n

Durma probleminin karar verilebilir olduğunu varsayalım. Daha sonra bir C programı ile hesaplanabilir:f(m)

girişinde , en fazla uzunluğundaki tüm durdurma C programlarını çalıştırın ve çıktılarını belirleyin; maksimum çıkışın uzunluğunu döndürür.mm

Bu, her için sıfır veren bir programı anlamına gelir . uzunluğu nedir ? uygulayan bir yer sabit bir C program şablonu ; yer tutucu sabitiyle doldurulmalıdır . Belirleme alırkarakter (burada ondalık temsil uzunluğudur ) . Şablon bir sabit sayı alır karakter ve uzunluğu bu nedenle olan . Eğer seçersekmPmf(m)+1PmPmmm|m||m|m|m|log10mTPmT+log10mm yeterince büyük ( olurdu), ve bu nedenle en azından tarafından dize çıktısının boyutu , yani . Bir çelişkiye ulaştık.m=2TT+log10mmf(m)Pmf(m)f(m)+1

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.