Bu bir Polisler ve soyguncular dilleri tanımlamaya ve bunların tamamlandığını kanıtlamaya dayalı bir meydan okuma.
Bu polislerin iş parçacığı. Soyguncuların ipi burada .
Polisler
Bir polis olarak iki şey hazırlayacaksınız:
Bir programlama dilinin veya başka bir hesaplama sisteminin resmi bir belirtimi. (Hesaplamalı sistemler aşağıda tanımlanmıştır.)
Aşağıdaki biraz tanımlamaya göre, sisteminizin Turing'in tamamlandığına dair bir kanıt.
Dilinizi belirttiğinizi yayınlayacaksınız ve soyguncular Turing'in bütünlüğünü kanıtlayarak dili "kırmaya" çalışacaklar. Gönderiniz bir hafta içinde kırılmazsa, güvenli olarak işaretleyebilir ve kanıtınızı gönderebilirsiniz. (Birisi ispatınızda bir kusur bulursa, düzeltemediğiniz sürece cevabınız geçersiz olabilir.)
Bu bir popülarite Yarışma, kazanan en çok oyu alan ve çatlamayan veya geçersiz olmayan cevap olacaktır. Zorluk açık uçlu - bir yanıtı kabul etmeyeceğim.
Bu zorluk uğruna, bir hesaplama sistemi dört şey olarak tanımlanacaktır:
Bir "program seti"
P
. Bu sayı dizisi, tamsayı, ikili ağaçlar, bir ızgara üzerindeki piksellerin konfigürasyonları, vb. Gibi sayılabilir sonsuz bir küme olacaktır (Ancak aşağıdaki teknik kısıtlamaya bakınız.)I
Aynı zamanda sayılabilecek sınırsız bir küme olacak veP
(olabilse de) ile aynı küme olması gerekmeyen bir "girdi kümesi" .Bir "çıkış seti"
O
, ki bu da yine sayılabilir sonsuz dizi olabilmektedir ve ya aynı olmayabilir olacakP
yaI
Bir çıkış üretmek için bir belirleyici, mekanik bir işlem
o
programındanp
ve girişi
,p
,i
veo
üyedirP
,I
veO
sırasıyla. Bu prosedür, prensip olarak bir Turing makinesinde veya başka bir soyut hesaplama modelinde uygulanabilecek şekilde olmalıdır. Prosedür, elbette, programa ve girişine bağlı olarak durmayabilir.
Setleri P
, I
ve O
bir hesaplanabilir şekilde dizeleri olarak bunları ifade edebilen şekilde olmalıdır. (En mantıklı seçimler için bu önemli olmayacaktır; bu kural, durmayan Turing makineleri seti gibi garip setler seçmenizi önlemek için mevcuttur.)
Turing tamlığı aşağıdaki gibi tanımlanacaktır:
- Hesaplanabilir bir kısmi işlevi için
f
gelenI
içinO
, bir program vardırp
deP
verilen şekildep
ve girişi
, çıkışıf(i)
isef(i)
bir değere sahiptir. (Aksi takdirde program durmaz.)
Yukarıdaki tanımda "hesaplanabilir" kelimesi "bir Turing makinesi kullanılarak hesaplanabilir" anlamına gelir.
Not ne olduğunu kural 110 ne de bitsel halkalı etiketi , bu tanım gereği Turing karmaşıklığındadır, gerekli giriş-çıkış yapısı yok çünkü. Biz define olarak Lambda hesabı sürece, tam Turing olduğunu I
ve O
olmaya Kilise rakamları . (Bu Turing tamamlama değil biz alırsak I
ve O
genel olarak lambda ifadeleri olmak.)
Dilinizin bir uygulamasını sağlamanız gerekmediğini unutmayın, ancak isterseniz cevabınıza bir tane de ekleyebilirsiniz. Bununla birlikte, dili herhangi bir şekilde tanımlamak için uygulamaya güvenmemelisiniz - spesifikasyon kendi içinde eksiksiz olmalıdır ve spesifikasyon ve uygulama arasında bir çelişki varsa, bu uygulamada bir hata olarak ele alınmalıdır.