Rozstrzygalność języka przedrostka


9

W połowie kadencji istniała odmiana następującego pytania:

Dla rozstrzygalnego zdefiniuj Pokaż, że niekoniecznie jest rozstrzygalny.L

Pref(L)={xy s.t. xyL}
Pref(L)

Ale jeśli wybiorę to myślę, że jest również , a zatem jest rozstrzygalne. Również daje ten sam wynik. A ponieważ musi być rozstrzygalny, nie mogę wybrać problemu z zatrzymaniem lub coś takiego ...L=ΣPref(L)ΣL=L

  1. Jak mogę znaleźć , że nie podlega rozstrzygnięciu?LPref(L)
  2. Jakie warunki na sprawią, że rozstrzygalny, a które sprawią, że będzie nierozstrzygalny?LPref(L)

Odpowiedzi:


9

Zauważ, że używając egzystencjalnego kwantyfikatora przed rozstrzygającym językiem, możemy uzyskać dowolny język re, tzn. Każdy język re jest wyrażalny jako

{xΣyΣ x,yV}

gdzie Vjest rozstrzygalnym językiem. Należą do nich niezdecydowane języki re, takie jak

ATM={e,x e encodes a Turing machine which accepts x}
.

Jedyną różnicą jest to, że tutaj musimy się rozdzielić x i ymy sami. Standardową sztuczką jest użycie nowego symbolu do rozdzielenia dwóch części (załóżmy, że należy do separatoray). Dlatego każdy inny język, w tym nierozstrzygalny, można wyrazić w tym formacie.

W przypadku drugiego pytania nie ma ogólnego algorytmicznego sposobu sprawdzenia, czy prefiksy danego rozstrzygalnego języka są nierozstrzygalne. Wynika to z twierdzenia Rice'a.


czy możesz wyraźnie podać V to tworzy ATM?
Ran G.

2
niech y być ciągiem, który ma reprezentować przerywanie obliczeń akceptujących Me na x, V sprawdzi, czy y jest obliczeniem akceptującym Me na x.
Kaveh

To miłe rozwiązanie!
Ran G.

3

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ę zestawuSN który jest ponownie i nie rekurencyjny, i niech f być wyliczeniem S (S=f(x)xN).

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 ). GdybynN, 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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.