Durdurma sorununun kısıtlı sürümleri hakkında ne biliyoruz?


16

( GÜNCELLEME : Daha iyi bir oluşmuş bir soru çıkmaktadır burada bu soruyu iyi tanımlanmış olmadığını göstermek altında kabul cevap yorumlar)


Durma probleminin imkansızlığının klasik kanıtı, durma algılama algoritmasını girdi olarak uygulamaya çalışırken bir çelişki göstermeye bağlıdır. Daha fazla bilgi için aşağıdaki arka plana bakın.

Gösterilen çelişki, öz-referans paradoksundan dolayı geçerlidir ("Bu cümle doğru değildir" cümlesi gibi). Ancak, bu tür öz referansları kesinlikle yasaklamış olsaydık (yani, söz konusu öz referansların durmak için karar verilemez olduğu gerçeğini kabul ettiysek), sonuç ne kaldı? Kendini referans almayan makinelerin geri kalan setinin durdurma sorunu durdurulabilir mi, değil mi?

Sorular:

Kendi kendine referanslamayan (yani kendiliğinden girdi olarak almayan) olası tüm Turing makinelerinin bir alt kümesini düşünürsek, bu alt kümenin durdurma problemi hakkında ne biliyoruz?

GÜNCELLEME

Belki de peşimde olduğum şeyin daha iyi bir şekilde yeniden düzenlenmesi, kararlı bir seti neyin tanımladığını daha iyi anlamaktır. Kendisini HALT çalıştırdığınız durumlar dışında, kararsızlık hakkında herhangi bir bilgi eklemediği için klasik kararsızlık kanıtını izole etmeye çalışıyordum.

Arka plan: Turing makinesi olduğu bir çelişki doğru varsayıldığında giriş karar verebilir M Turing makinesi ve bir kodlama X olsun ya da olmasın, M ( X ) durur. Daha sonra, bir Turing makinesi dikkate K alır M ve X ve kullanan Q olmadığına karar vermek için M ( x ) karşısında durmasının veya olmayan, ve daha sonra yapar, yani K ise durur M ( X ) durdurmak değildir ve eğer durdurmaz M ( X )SMXM(X)KMXSM(X)KM(X)M(X)durur. Sonra bir çelişki gösterir, çünkü K durmazsa durur ve durduğunda durmaz.K(K)K

Motivasyon: Bir meslektaşım yazılım sistemlerinin resmi doğrulaması üzerinde çalışıyor (özellikle sistem kaynak kodu düzeyinde kanıtlanmışsa ve derlenmiş sürümü için derlemek, derleyici sorunlarını etkisiz hale getirmek için) ve onun durumunda bir kendilerine referans vermeyeceklerinden emin olduğumuz özel gömülü kontrol programları seti. Gerçekleştirmek istediği doğrulamanın bir yönü, giriş kaynak kodunun sona erdiği kanıtlanmışsa, derlenmiş programın durup durmayacağının garanti edilip edilmeyeceğidir.

GÜNCELLEME

Aşağıdaki yorumlara dayanarak, kendinden referans göstermeyen Turing makinelerinin anlamını açıklığa kavuşturuyorum.

Amaç, bunu kanıtta belirtilen çelişkiye yol açmayan küme olarak tanımlamaktır (bkz. Yukarıdaki "Arkaplan"). Aşağıdaki gibi tanımlanabilir:

Turing makinesi olduğu varsayılarak Turing makinesi bir dizi için durdurulması problemi karar S , daha sonra S -olmayan kendinden referans alınmak sureti ile Q bu çağırır tüm makineleri hariç olmadığını Q üzerindeki S (doğrudan ya da dolaylı olarak). (Bu açıkça Q'nun S üyesi olamayacağı anlamına gelir .)SSSSSSSS

Çağırarak neyin kastedildiğini açıklamak için üzerinde S dolaylı:SS

Çağırma ile S Turing makinesi ile gösterilir Q (herhangi bir elemanına karşılık gelen bant üzerine durumları ve belirli bir Başlangıçtaki girişler kümesi ile S o giriş başında ilk kafa ile,). Bir makine B başlatır Q üzerindeki S "dolaylı" bu adımlar (sonlu) sırası varsa B ilk yapılandırmasına yapılandırma "yapılı bir" neden olacak Q ( S ) .SSSSWSSWS(S)

GÜNCELLEME 2

Aşağıdaki aynı cevabı yapan sonsuz sayıda Turing makinesinin olduğunu ve bu nedenle benzersiz olmadığını iddia eden bir cevaptan , Q'nun tek bir Turing makinesi değil, tüm bilgisayarların (sonsuz) setini söyleyerek yukarıdaki tanımı değiştiriyoruz aynı işlev (HALT), burada HALT, bir Turing makinesinin belirli bir girişte durduğuna karar veren işlevdir.SS

GÜNCELLEME 3

Turing Machine homomorfizmasının tanımı:

A geçiş grafik olarak, B edilene homomorfik ise bir TM TM B homomorfik olan standart etiketli düğümleri ve kenarlara sahip grafikler homomorfizması anlamında kullanılmaktadır. Bir TM'nin geçiş grafiği (V, E), V = durumları, E = durumlar arasındaki geçiş yaylarıdır. Her yay (S, W, D), S = sembol bandı okur ve W = üzerine yazılacak sembol ve D = kafanın gösterdiği yön ile etiketlenir.


5
"Kendine gönderme yapmayanların geri kalanı" Bu seti mantıklı bir şekilde tartışmadan önce, "kendine gönderme" tanımını almak istiyorum. Ancak, bunun tanımlanması zor bir şey olacağını düşünüyorum?
Sam Nead

1
Kanıtlanabilir durma programları hakkında çalışmalar vardır (bu sınıf, tüm durma programlarını içermez). Temelde bir çift program ve durduğunun bir kanıtıdır. Örneğin, yanılmıyorsam Agda sadece durdurulan programlara izin verir. Mantık ve programlama dilleri üzerinde çalışan insanların bunun hakkında söyleyecek daha çok şey olduğunu düşünüyorum.
Tsuyoshi Ito

1
@M. Alaggan. Şimdi "çağıran bir tanımını isterdim üzerinde S orijinal "kendini referans" :) olarak tanımlamak Zor gibi olması şüpheli dolaylı"SS
Rob Simmons

2
Bu ilginç bir soru doğuruyor: Tüm hesaplanamazlık (kararsızlık) kanıtları Cantor'un köşegenleştirme yöntemiyle izlenebilir mi? Köşegenleştirme yöntemine doğrudan ya da dolaylı olarak dayanmayan kararsızlık kanıtı var mı?
Muhammed Al-Türkistan

Yanıtlar:


9

"İyi tanımlanmış" bir soruya ulaşmak biraz daha fazla iş gerektireceğini düşünüyorum. Özellikle, bu sorunlu:

S'yi S'ye çağırmak, bir dizi durum ve bantta belirli bir olası ilk girişlerle (S'nin herhangi bir üyesine karşılık gelir), kafa başlangıçta bu girişin başlangıcında olan bir Turing makinesi Q ile gösterilir. W yapılandırmasını Q (S) 'nin ilk yapılandırmasına "homomorfik" yapmak için atacağı (sonlu) bir dizi aşama varsa, bir makine W, S'yi "dolaylı olarak" çağırır.

Bir sorun, aynı işlevi hesaplayan sonsuz sayıda Turing makinesinin olmasıdır. Standart köşegenleştirme argümanında, Q altyordamını HALT için başka bir kararlayıcı ile değiştirebilirim, çünkü sonsuz sayıda var. Veya HALT ile tamamen eşdeğer bir işlev. Dolayısıyla "dolaylı çağırma" nosyonunu nasıl tanımlayacağım tam olarak açık değil.

Farklı bir soru olabilir: hangi Turing makineleri setleri için durdurma problemi kararlaştırılabilir? Burada çok sayıda cevap vardır: kaynak kısıtlı TM'ler (örneğin, yalnızca f (n) alanı kullanın, burada f, belirli bir hesaplanabilir fonksiyondur), belirli bir şekilde işlevsel olarak kısıtlanan TM'ler (örneğin, okuma kafası sadece bir şekilde hareket eder), vb. Ancak, bir başka ilginç soru da, bu kısıtlı sete üyeliğin karar verilebilir olup olmadığı veya kendinizi sadece bazı "vaat edilen" girdi alt kümesinde doğru bir cevabı garanti ettiğiniz, ancak doğrulamadığınız "vaat problemleri" ile sınırlandırmanız gerekip gerekmediğidir. üyelik.


S'H

Bu o kadar basit değil. Tanımlanabilir bir HALT aradığınız için tanımınız şimdi paradoksal. Fakat eğer bu hesaplanabilir ise, herhangi bir hesaplanabilir fonksiyon ona tamamen denktir. Ancak, girdi kümeniz yarı hesaplanabilir sorunlar (TM) içeriyorsa, böyle bir TM için durdurma sorununun size bu sorun için bir karar prosedürü vereceğine karar vermenizden dolayı bir çelişki yaşarsınız.
Mark Reitblatt

1) Hesaplanamayan bir HALT, kararsızlık anlamına gelmez mi? Çelişki umarak böyle hesaplanabilir bir HALT'ın var olduğunu varsayıyordum. 2) Tüm hesaplanabilir fonksiyonların birbirleriyle karşılaştırmalı olarak eşdeğer olduğu, size alıntı yaptığımı ve HALT problemini çözen bir fonksiyon olduğu kavramını bilmiyorum. Görünüşe göre λx.1 hesaplanabilir, ancak HALT'a karar vermez. Yanlışsam beni düzeltin lütfen. Yarı hesaplanabilir problemler hakkında HALT, HALT'ın karar verilemez olduğuna dair orijinal kanıtta çelişkiye yol açmayacak sonsuz sayıda adım atabilir.
M. Alaggan

1) Doğru. Ancak sorun "kendi kendini referans göstermeme" fikrinizi tanımlamaya çalışıyor. Ya tartıştığım şekilde köşegenleştirmeye izin veren zayıf bir kısıtlama ya da her şeyi ortadan kaldıran güçlü bir kısıtlama. 2) Çok basit. "Tamamen eşdeğer", kabaca yanıtları koruyan birinden diğerine hesaplanabilir bir eşleme olduğu anlamına gelir. Ama eğer bir cevap hesaplayabilirsem, haritayı aldatabilir ve önemsiz yapabilirim. 3) HALT'a karar veren TM'nin kendisi sona ermezse, HALT için bir karar verici değildir.
Mark Reitblatt

Biraz kafa karıştırıcı olan başka bir şey, TM'nin hesapladıkları karar problemiyle karıştırılmasıdır. Bir TM'nin hesaplamaya dayalı olarak birbirine eşit olduğundan bahsetmek normal değildir. Aksine, hesapladıkları işlevler eşdeğer (veya eşit) olabilir. Sorun, bir TM'nin başka bir TM'yi simüle etmediğini söylemeye çalışmanın, hesapladıkları işlevleri ayırmak için somut bir şey vermeden tanımlanması zor olmasıdır. Örneğin, bir Log-space TM bir EXP-uzay problemini çözen bir TM'yi simüle edemez.
Mark Reitblatt

9

Motivasyonunuzu doğru anlarsam, bu bir "derleyici doğruluğu" sorunu "kısıtlı durma sorunu" sorunundan daha fazla gibi görünüyor. Bir derleme (Prog) özelliği elde etmek için derlenmiş koda uzatmak istediğiniz bazı kaynak düzeyinde program Prog için kanıtlamış bir özellik (sonlandırma) var . Ancak derleyici (genel olarak) bir tur-tam çalışma zamanı (JVM diyelim) uygulamak gibi son derece aptalca şeyler yapabilir, sonlandırma programınızı bir JVM bayt koduna derleyebilir ve sonra JVM'yi başlatan ve derlenmiş bayt kodunuzu besleyen bir yürütülebilir dosyayı dökebilir.

Uygulamada , derleyicinizin derlenmiş programların doğru kaynak programları göz önüne alındığında doğru olduğunu kanıtlayan bazı doğrulama prosedürlerini uygulamak için nasıl çalıştığına dair örtük bilgileri kullanmak muhtemelen mümkündür (aslında, programlar için birçok otomatik doğrulama aracı örtük bilgileri kullanıyor) programcıların beynindeki algoritma-kod "derleyicisi"). Ancak, genel olarak derleyici doğruluğu sorununa bakıyorsunuzdur. Anladığım kadarıyla bunu yapmanın iki klasik yolu var.

Seçeneklerden biri Prog programını girdi olarak alan bir derleyiciye sahip olmak ve prova sonlanır (Prog) ve çıktılar derlenir (Prog) ve sonlanır (derlenir (Prog)) - ikincisi daha sonra bağımsız olarak iki kez kontrol edilebilen bir kanıttır. derleyici. Bu konudaki klasik makale Necula ve Lee'nin Onaylayıcı bir derleyicinin tasarımı ve uygulanmasına inanıyorum.

Alternatif olarak, compiles () işlevi hakkında bir gerçek kanıtlayabilirsiniz - compiles () her sonlandırıcı girdi verdiğinde sonlandırıcı çıktı üretir. Derleyici doğruluğu hakkında bu düşünme biçimine erişilebilir bir giriş Xavier Leroy'un gerçekçi bir derleyicinin resmi doğrulaması olan CACM makalesidir .

(PS Umarım bu cevap faydalıdır - sorduğunuz sorudan biraz farklı olduğunu anlıyorum, bu yüzden temelden uzak olduğumu ve / veya zaten bildiğiniz bir şeyi tekrarladığımı bana bildirin.)


Harika cevap için teşekkürler. Bu kesinlikle meslektaşım için yararlı olacaktır. Ancak ben (meslektaşımdan bağımsız olarak) durma sorununun kanıtı üzerindeki teorik çıkarımlarla daha fazla ilgileniyorum, çelişkiyi gösteren davadan kurtulursak, durma sorununun karar verilebilirliği hakkında başka ne biliyoruz?
M. Alaggan
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.