Meta-wiedza: chcesz znaleźć nierozstrzygalny język, który ma jednak pewne właściwości obliczeniowe. Arbitralny język, który nie podlega rozstrzygnięciu, prawdopodobnie nie doprowadzi cię zbyt daleko. Ale na wpół rozstrzygalne…
Silniejsza wskazówka: co to jest język częściowo rozstrzygalny? Oznacza to, że możemy wyliczyć słowa: to jakiś zestaw słówu taki, że istnieje liczba całkowita n takie, że
u=f(n)
Wpatrz się trochę w to równanie, mając na uwadze rozstrzygalność i prefiksy.
Intuicyjnie mówiąc, załóżmy, że masz x i chcesz sprawdzić, czy jest w środku Pref(L). Ogólnie rzecz biorąc, nie zrobisz nic lepszego niż czekxa, xb, xaaitp. gdzie a,b,⋯to litery alfabetu. Jest to częściowa funkcja rekurencyjna, która testuje członkostwoPref(L). Oczywiście wiedzieliśmy o tymPref(L)był już; musimy pokazać, że czasami nie ma alternatywnej metody. Weźmy trochę zestawuS⊂N który jest ponownie i nie rekurencyjny, i niech f być wyliczeniem S (S=f(x)∣x∈N).
Załóżmy, że alfabet zawiera trzy symbole 0, 1 i : (jeśli masz tylko dwa symbole {ℵ,ℶ}, koduj 0 tak jak ℵℵ, 1 tak jak ℵℶ i : tak jak ℶ). Gdybyn∈N, pozwolić n¯ być n zapisane w bazie 2 za pomocą symboli 0 i 1 bez prowadzenia 0.
Pozwolić L={y¯:x¯∣y=f(x)}. Mówiąc prosto po angielsku, bierzemy elementyS i określając ich indeks wyliczeniowy. L jest wyraźnie rozstrzygalne (sprawdź, czy jest jeden) :, że dwucyfrowe sekwencje nie zawierają wiodących 0, i że pierwsza sekwencja cyfr oznacza obraz według fliczby, którą przeliteruje drugi). Ale decyduje, czy niektórzyy¯ jest prefiksem L jest równoznaczne z podjęciem decyzji, czy y jest w S, czego nie możesz zrobić bez wiedzy x od Sz założenia nie jest rekurencyjny. Formalnie,Pref(L) nie jest rozstrzygalne, ponieważ Pref(L)∩{0,1}∗:=S: nie podlega rozstrzygnięciu.