В теории сложности функция, конструируемая по времени, — это функция f от натуральных чисел до натуральных чисел со свойством, что f ( n ) может быть построена из n машиной Тьюринга за время порядка f ( n ). Цель такого определения — исключить функции, которые не обеспечивают верхнюю границу времени выполнения некоторой машины Тьюринга. [1]
Существует два различных определения функции, конструируемой по времени. В первом определении функция f называется конструируемой по времени, если существует положительное целое число n 0 и машина Тьюринга M , которая, при заданной строке 1 n , состоящей из n единиц, останавливается ровно через f ( n ) шагов для всех n ≥ n 0 . Во втором определении функция f называется конструируемой по времени , если существует машина Тьюринга M , которая, при заданной строке 1 n , выводит двоичное представление f ( n ) за время O ( f ( n )) (вместо этого можно использовать унарное представление, поскольку они могут быть преобразованы друг в друга за время O ( f ( n ))). [1]
Существует также понятие полностью конструируемой по времени функции. Функция f называется полностью конструируемой по времени , если существует машина Тьюринга M , которая, имея строку 1 n из n единиц, останавливается ровно через f ( n ) шагов. [2] Это определение немного менее общее, чем первые два, но для большинства приложений можно использовать любое из определений. [3]
Аналогично, функция f является пространственно-конструируемой , если существует положительное целое число n 0 и машина Тьюринга M , которая, при заданной строке 1 n, состоящей из n единиц, останавливается после использования ровно f ( n ) ячеек для всех n ≥ n 0 . Эквивалентно, функция f является пространственно-конструируемой , если существует машина Тьюринга M , которая, при заданной строке 1 n, состоящей из n единиц, выводит двоичное (или унарное) представление f ( n ), при этом используя только O ( f ( n )) пространства. [1]
Кроме того, функция f полностью конструируема в пространстве , если существует машина Тьюринга M , которая, имея строку 1 n , состоящую из n единиц, останавливается после использования ровно f ( n ) ячеек. [2]
Все обычно используемые функции f ( n ) (такие как n , n k , 2 n ) являются конструируемыми по времени и пространству, пока f ( n ) является по крайней мере cn для константы c > 0. Никакая функция, которая является o ( n ), не может быть конструируемой по времени, если она в конечном итоге не является константой, поскольку недостаточно времени для чтения всего ввода. Однако является конструируемой по пространству функцией.
Функции, конструируемые по времени, используются в результатах теории сложности, таких как теорема об иерархии времени . Они важны, поскольку теорема об иерархии времени опирается на машины Тьюринга, которые должны определить за время O ( f ( n )) потребовалось ли алгоритму больше f ( n ) шагов. Это, конечно, невозможно без возможности вычислить f ( n ) за это время. Такие результаты обычно верны для всех естественных функций f , но не обязательно верны для искусственно сконструированных f . Чтобы сформулировать их точно, необходимо иметь точное определение для естественной функции f , для которой теорема верна. Функции, конструируемые по времени, часто используются для предоставления такого определения.
Аналогичным образом используются функции, конструируемые в пространстве, например, в теореме об иерархии пространства .
В данной статье использованы материалы из constructible на PlanetMath , которые лицензированы в соответствии с лицензией Creative Commons Attribution/Share-Alike License .