Wariant funkcji bobra zajętego

9

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ę:Σ()

BB(M)={1M computes Σ()0 otherwise

Teraz zdefiniuj język:

L={M|M halts and BB(M)=0}

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).LMM

Czy możemy zredukować problem zatrzymania do ? (wydaje się, że nie jest w stanie „uchwycić” zatrzymania zajętych bobrów)L

Vor
źródło
Czyliczba stanów? |M|
Pål GD
Kiedy policzysz literę , która nie zatrzymuje się na ? nie może być RE, chyba że wyliczysz wszystkich jego członków, a procedura, którą opisałeś, wylicza tylko tych, którzy faktycznie się zatrzymali. MLL
Steven Stadnicki
@ PålGD: tak, jest to liczba stanów (bez stanu wstrzymania)
Vor
@StevenStadnicki: Domyślnie założyłem, że zawiera tylko maszyny, które zatrzymują się ... być może powinienem to wyjaśnić w pytaniu (pozwól mi trochę o tym pomyśleć, być może pytanie to będzie trywialne). L
Vor
2
@Kaveh Nie jest to nawet obietnica - możesz po prostu zdefiniować (jak wierzę, że OP zamierzał) jako . LL={M|M haltsBB(M)=0}
Steven Stadnicki

Odpowiedzi:

3

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, żeLLLΣ2(n)nf()Σ(n)Σ2(f(n))f(n)=n+1zał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 naMnΣ(M)c>1cnΣ(M)Σ(M)+1M Mf(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ć.MnMLMf(n)Lf(n)MMM

Steven Stadnicki
źródło
Dzięki; zainspirowany twoją odpowiedzią znalazłem szybką (trywialną) -: bezpośrednią redukcję problemu zatrzymania w osobnej odpowiedzi.
Vor
3

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,wMMw

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 )MBB(M)=0LMwMwML

... okazało się, że pytanie jest rzeczywiście banalne :-)

Vor
źródło