В формулировке теоремы 14 Φ
e
(x) > b(x) почти для всех x. Это огра-
ничение существенно; усилить теорему 14, доказав, что Φ
e
(x) > b(x) для
всех без исключения x не удастся. В принципе, понятно, почему это так,
если мы рассмотрим какой-нибудь конкретный пример меры сложности;
например, время вычисления. Пусть дана программа P , вычисляющая
функцию f(x). Для любого конечного множества аргументов {x
1
, . . . , x
k
}
можно так видоизменить программу P , что модифицированная програм-
ма P
0
будет вычислять f(x) значительно быстрее, если x принадлежит
нашему конечному множеству (и чуть-чуть медленнее, если x ему не при-
надлежит). Работа программы P
0
должна начинаться с проверки усло-
вия: верно ли, что аргумент x принадлежит {x
1
, . . . , x
k
}? Если ответ по-
ложительный, то программа P
0
дает результат немедленно, а если нет,
то запускает программу P . Поскольку значения любой функции на за-
ранее заданном конечном числе аргументов можно задать явно, в виде
таблицы, то сложность вычислений имеет смысл рассматривать только
с точностью до конечного числа аргументов, то есть в ”асимптотике”.
Теорема 14, в принципе, довольно проста (ее доказательство можно
даже рекомендовать слушателям курса в качестве упражнения). Приве-
дем формулировку другой, более сложной (но и более интересной) тео-
ремы.
Теорема 15 (об ускорении) Пусть {Φ
e
(x)}
e∈N
— мера вычислитель-
ной сложности и r(x) — произвольная рекурсивная функция. Существует
рекурсивная функция f, такая что для каждого i ∈ N если f = ϕ
i
, то
существует j ∈ N, для которого f = ϕ
j
и r(Φ
j
(x)) < Φ
i
(x) почти для всех
значений x.
Доказательство. Без доказательства ¤
Из теоремы об ускорении, в частности, следует, что для некоторых
рекурсивных функций не существует оптимальной программы вычис-
ления. Пусть, например, мера сложности — это время вычисления, а
r(x) = 100x. Применим теорему 15 к этой функции r и получим некото-
рую функцию f. Тогда для любой программы, вычисляющей функцию
f, найдется другая программа, которая вычисляет ту же самую функ-
цию f, причем почти для всех аргументов вторая программа делает это в
100 раз быстрее, чем первая. Если мы, например, улучшим конструкцию
компьютера, который мы обычно используем для вычислений, и сдела-
ем так, что новая машина будет выполнять в 100 раз больше операций
122