Jedno stwierdzenie twierdzenia Rice'a znajduje się na stronie 35 „Złożoności obliczeniowej: nowoczesne podejście” (Arora-Barak):
Funkcja częściowa od do to funkcja, która niekoniecznie jest zdefiniowana na wszystkich jej wejściach. Mówimy, że TM oblicza funkcję cząstkową jeżeli dla każdego na którym zdefiniowano , i dla każdego na którym nie zdefiniowano przechodzi w nieskończoną pętlę po wykonaniu na wejściu . Jeśli jest zbiorem funkcji częściowych, to definiujemy jako funkcję boolowską, która na wejściu wyjścia 1 iffoblicza częściowy funkcję . Twierdzenie Rice'a mówi, że dla każdej niebrywalnej funkcja nie jest obliczalna.
Wikipedia stwierdza, że języki ograniczonych urządzeń do pomiaru czasu są WYGODNE. Oczekuję, że ten język wygląda jak akceptuje mniej niż kroków . Więc niech będzie jakimś DTM, który decyduje o tym ograniczonym języku w czasie wykładniczym. Wygląda na to, że DTM decyduje o jakiejś właściwości WSZYSTKICH maszyn Turinga, więc moja intuicja podpowiada mi, że twierdzenie Rice'a wyklucza taką decyzję. Ale oczywiście oblicza całkowitą funkcję.
Czego mi brakuje w związku między tym językiem a twierdzeniem Rice'a?
Twierdzenie Rice'a mówi, że nie można nic powiedzieć o ostatecznym zachowaniu programu, gdy jest on uruchamiany do nieskończoności - bez względu na to, jak klasyfikujesz programy, będą dwa programy, które zbiegną się do tego samego ostatecznego zachowania (funkcja obliczona ), chociaż sklasyfikowałeś je inaczej.
Ale uruchomienie programów do nieskończoności jest niezbędne. Aby dowiedzieć się, co robią w pierwszej kolejnościn kroki, możesz po prostu symulować je po raz pierwszy n kroki, a następnie zakończ wydawanie werdyktu na temat zachowania programu. Podobna symulacja do nieskończoności nie działa, ponieważ jeśli symulowany program nigdy nie zakończy działania na symulowanym wejściu, klasyfikator również się rozejdzie, zamiast podać klasyfikację.
źródło
Po pierwsze, słowa w twoim języku nie są kodowaniem maszyn, zawierają więcej informacji, więc nie możesz bezpośrednio zastosować twierdzenia Rice'a. To powiedziawszy, twierdzenie Rice'a mówi o niemożności rozumowania funkcji obliczonej przez maszynę Turinga (mianowicie, czy leży ona w jakimś zbiorzeS. ). W tym przypadku tak nie jest, ponieważ, jak wspomniał Raphael, istnieją dwie maszynyM.,M.′ którzy obliczają tę samą funkcję, ale jedna leży w twoim języku, a druga nie (tutaj ignoruję problem składniowy i zapominam o tym, że x , n są częścią danych wejściowych). Chodzi o to, że oglądana tutaj właściwość jest mechaniczna, a nie semantyczna (maszyny mogą obliczać tę samą funkcję, ale w inny sposób).
źródło
Twierdzenie Rice'a mówi, że dla każdego nietrywialnego zestawuL. języków, zestaw maszyn Turinga, które rozpoznają język L. jest nierozstrzygalny. Wikipedia mówi, że określony język jest rozstrzygalny. Więc nie ma sprzeczności.
źródło