Для каждой вычислимой функции существует ли задача, которая может быть решена в лучшем случае за время или существует вычислимая функция такая, что любая задача, которая может быть решена в может также быть решено в время?
Этот вопрос возник в моей голове вчера. Я думал об этом немного сейчас, но не могу понять это. Я действительно не знаю, как я Google для этого, поэтому я спрашиваю здесь. Вот что я придумала:
Сначала я подумал, что ответ «да»: для каждой вычислимой функции проблема «Вывести точек» (или создать строку с точками или чем-либо еще), очевидно, не может быть решена в время. Таким образом, нам нужно только показать, что это может быть решено за время. Нет проблем, просто возьмите следующий псевдокод:
x = f(n)
for i from 1 to x:
output(".")
Понятно, что этот алгоритм решает поставленную задачу. И время его выполнения явно в , поэтому проблема решена. Это было легко, правда? Кроме нет, это не потому, что вы должны учитывать стоимость первой строки. Время выполнения вышеупомянутого алгоритма только в если время, необходимое для вычисления находится в . Очевидно, что это не так для всех функций 1 .
Так что такой подход никуда меня не привел. Я был бы благодарен всем, кто указал мне правильное направление, чтобы понять это должным образом.
1 Рассмотрим, например, функцию . Ясно, что , но нет алгоритма, который вычисляет за времени. O ( p ( n ) ) = O ( 1 ) p O ( 1 )