Po przeczytaniu tego pytania „ Naturalne problemy RE nierozstrzygalne, ale nie pełne Turinga ” przyszedł mi do głowy następujący język:
Jeśli jest funkcją bobra zajętego (maksymalny osiągalny wynik wśród wszystkich zatrzymujących 2-symbolowych maszyn Turinga n-stanu opisanego powyżej typu, gdy jest uruchamiany na czystej taśmie), zdefiniuj funkcję:
Teraz zdefiniuj język:
Czy rekurencyjnie wyliczalny? (powinno być ponownie: po prostu symuluj równolegle M ze wszystkimi bazami TM tej samej długości, a jeśli zatrzymuje się i kolejne zatrzymuje się z wyższym wynikiem, dodaj M do wyliczenia).
Czy możemy zredukować problem zatrzymania do ? (wydaje się, że nie jest w stanie „uchwycić” zatrzymania zajętych bobrów)
Odpowiedzi:
Nie mogę uwierzyć, że nie widziałem tego wcześniej - ale tak, z wyrocznią dla możesz rozwiązać problem zatrzymania. Oczywiście wyrocznia dla daje nam „rekurencyjnie” wszystkie maszyny zatrzymujące bobry nie zajęte , więc pytanie brzmi „czy możemy rekurencyjnie dowiedzieć się w jakie są zajęte bobry?”. Zdefiniuj jako funkcję zliczania „drugiego najbardziej ruchliwego bobra”; to jest drugi najwyższy możliwy do uzyskania wynik spośród wszystkich zatrzymujących dwumaganiowe TM stanowych TM. Sztuczka polega na tym, że istnieje funkcja rekurencyjna taka, że (jest prawie pewne, żeL. L. L. Σ2)( n ) n fa( ) Σ ( n ) ≤Σ2)( f( n ) ) fa( n ) = n + 1 załatwi sprawę, ale to wymaga wiedzy, że funkcja BB ściśle się zwiększa): biorąc pod uwagę maszynę o rozmiarze która drukuje 1 na swojej taśmie, a następnie zatrzymuje się, jest trochę i dwie maszyny o rozmiarze które drukują dokładnie 1s i dokładnie 1s odpowiednio na swoich taśmach - i dotyczy to maszyny „zajętej bobra” nawet jeśli nie nie znam wprost . Oznacza to, że ograniczenie dla funkcji „drugi zajęty bóbr” dla daje ograniczenie dla funkcji zajętego bobra naM. n Σ ( M) c > 1 ≤ c n Σ(M) Σ(M)+1 M M f(n) n ; ale mając to, łatwo jest rozwiązać problem zatrzymania dla TM o rozmiarze - jeśli to powiedz, że zatrzymuje się; w przeciwnym razie znajdź najdłużej działającą maszynę o rozmiarze w (co można zrobić rekurencyjnie, ponieważ istnieje tylko skończona liczba maszyn o rozmiarze ) i symuluj na tyle kroków, ile potrzeba, aby ta maszyna postój. Jeśli nie zatrzyma się w tym czasie, prawdopodobnie nie może się zatrzymać.M n ⟨M⟩∈L M f(n) L ≤f(n) M M M
źródło
To jest przerobiona wersja dobrej odpowiedzi Stevena, z wyraźnym zmniejszeniem problemu Halting.
Biorąc pod uwagę build który uruchamia na a jeśli się zatrzyma, idzie na prawo od taśmy, zapisuje 0 i zatrzymuje.⟨M⟩,w M′ M w
Jeśli zatrzymuje się, ponieważ istnieje odpowiednik TM o tym samym rozmiarze, który zapisuje 1 i zatrzymuje się; więc możemy użyć decydatora dla aby sprawdzić, czy zatrzymuje się ( zatrzymuje się iff )M′ BB(M′)=0 L M w M w M′∈L
... okazało się, że pytanie jest rzeczywiście banalne :-)
źródło