Для кожної обчислюваної функції чи існує проблема, яку можна вирішити в кращому випадку за час чи є обчислювальна функція така, що кожна проблема, яку можна вирішити в може також вирішуються в час?
Це питання спливе в голову вчора. Я трохи про це думав зараз, але не можу це зрозуміти. Я насправді не знаю, як би я google для цього, тому я прошу тут. Ось що я придумав:
Моя перша думка полягала в тому, що відповідь - так: для кожної обчислюваної функції проблема "Виведення крапок" (або створення рядка з крапок чи будь-чого іншого) очевидно не може бути вирішена в час. Тож нам потрібно лише показати, що це можна вирішити за час. Немає проблем, просто візьміть наступний псевдо-код:
x = f(n)
for i from 1 to x:
output(".")
Очевидно, що алгоритм вирішує заявлену проблему. І час виконання, очевидно, у , тому проблема вирішена. Це було легко, правда? За винятком ні, це не тому, що вам доведеться враховувати вартість першого рядка. Вищенаведений алгоритм виконує лише у якщо час, необхідний для обчислення знаходиться в . Зрозуміло, що це не так для всіх функцій 1 .
Тож такий підхід мене ніде не змусив. Буду вдячний за те, щоб хтось вказував мене в правильному напрямку, щоб це правильно зрозуміти.
1 Розглянемо для прикладу функцію . Зрозуміло, що , але немає алгоритму, який обчислює за час. O ( p ( n ) ) = O ( 1 ) p O ( 1 )