Czy dla każdej funkcji obliczalnej istnieje problem, który można najlepiej rozwiązać w czasie czy też istnieje funkcja obliczalna tak że każdy problem, który można rozwiązać w może również być rozwiązany w czasie ?
To pytanie wpadło mi do głowy wczoraj. Zastanawiam się przez chwilę, ale nie mogę tego rozgryźć. Naprawdę nie wiem, jak to zrobić w Google, więc pytam tutaj. Oto, co wymyśliłem:
Moją pierwszą myślą było, że odpowiedź brzmi tak: dla każdej funkcji obliczeniowej problemu „Wyjście kropek” (lub utworzenie ciągu z kropkami lub cokolwiek innego) oczywiście nie można rozwiązać w czas. Musimy więc tylko pokazać, że można to rozwiązać w czasie . Żaden problem, po prostu weź następujący pseudo kod:
x = f(n)
for i from 1 to x:
output(".")
Oczywiście ten algorytm rozwiązuje określony problem. I jego czas działania jest oczywiście w , więc problem został rozwiązany. To było łatwe, prawda? Z wyjątkiem nie, to nie dlatego, że musisz wziąć pod uwagę koszt pierwszej linii. Czas trwania powyższego algorytmu jest tylko , jeżeli czas potrzebny do oblicz w . Oczywiście nie jest to prawdą dla wszystkich funkcji 1 .
Więc to podejście nigdzie mnie nie doprowadziło. Byłbym wdzięczny za to, że ktoś wskazywałby mi właściwy kierunek, aby poprawnie to rozgryźć.
1 Rozważmy na przykład funkcję . Oczywiście O ( P ( N ) ) = O ( 1 ) , ale nie jest algorytm oblicza t w O ( 1 ) czas.