Введение
Математическая функция, которая может быть вычислена программой. Вычислимые функции являются основными объектами изучения в теории вычислимости. Вычислимые функции представляют собой формальный аналог интуитивного понятия алгоритма, в том смысле, что функция вычислима, если существует алгоритм, способный выполнять вычисления, соответствующие этой функции, то есть, получив на вход значение из области определения функции, он может вернуть соответствующее значение. Вычислимые функции используются для обсуждения вычислимости, не прибегая к какой-либо конкретной модели вычислений, такой как машины Тьюринга или регистровые машины. Однако любое определение должно опираться на некоторую конкретную модель вычислений, но все корректные определения приводят к одному и тому же классу функций. К особым моделям вычислимости, порождающим множество вычислимых функций, относятся функции Тьюринга и общие рекурсивные функции. Согласно тезису Черча-Тьюринга, вычислимые функции – это именно те функции, которые можно вычислить с помощью механического (то есть автоматического) вычислительного устройства при неограниченном времени и объеме памяти. Более точно, любая когда-либо придуманная модель вычислений может вычислять только вычислимые функции, и все вычислимые функции могут быть вычислены любой из нескольких моделей вычислений, которые кажутся весьма различными, например, машинами Тьюринга, регистровыми машинами, лямбда-исчислением и общими рекурсивными функциями. До точного определения вычислимой функции математики часто использовали неформальный термин «эффективно вычислимая». С тех пор этот термин стал отождествляться с вычислимыми функциями. Эффективная вычислимость этих функций не подразумевает, что они могут быть вычислены эффективно (то есть за разумное время). Фактически, для некоторых эффективно вычислимых функций можно показать, что любой алгоритм, который их вычисляет, будет крайне неэффективным, в том смысле, что время работы алгоритма экспоненциально (или даже сверхэкспоненциально) возрастает с увеличением длины входных данных. Области допустимой вычислимости и вычислительной сложности изучают функции, которые могут быть вычислены эффективно. Аксиомы Блума могут быть использованы для определения абстрактной теории вычислительной сложности на множестве вычислимых функций. В теории вычислительной сложности задача определения сложности вычислимой функции известна как функциональная задача.
Computable functions are the basic objects of study in computability theory. Computable functions are the formalized analogue of the intuitive notion of algorithms, in the sense that a function is computable if there exists an algorithm that can do the job of the function, i. e. given an input of the function domain it can return the corresponding output. Computable functions are used to discuss computability without referring to any concrete model of computation such as Turing machines or register machines. Any definition, however, must make reference to some specific model of computation but all valid definitions yield the same class of functions. Particular models of computability that give rise to the set of computable functions are the Turing computable functions and the general recursive functions. According to the Church–Turing thesis, computable functions are exactly the functions that can be calculated using a mechanical (that is, automatic) calculation device given unlimited amounts of time and storage space. More precisely, every model of computation that has ever been imagined can compute only computable functions, and all computable functions can be computed by any of several models of computation that are apparently very different, such as Turing machines, register machines, lambda calculus and general recursive functions. Before the precise definition of computable function, mathematicians often used the informal term effectively calculable. This term has since come to be identified with the computable functions. The effective computability of these functions does not imply that they can be efficiently computed (i. e. computed within a reasonable amount of time). In fact, for some effectively calculable functions it can be shown that any algorithm that computes them will be very inefficient in the sense that the running time of the algorithm increases exponentially (or even superexponentially) with the length of the input. The fields of feasible computability and computational complexity study functions that can be computed efficiently. The Blum axioms can be used to define an abstract computational complexity theory on the set of computable functions. In computational complexity theory, the problem of determining the complexity of a computable function is known as a function problem.
Официальные языки
В теории вычислимости в информатике принято рассматривать формальные языки. Алфавит – это произвольное множество. Слово в алфавите – это конечная последовательность символов из алфавита; один и тот же символ может использоваться несколько раз. Например, двоичные строки – это как раз слова в алфавите {0, 1}. Язык – это подмножество множества всех слов в фиксированном алфавите. Например, множество всех двоичных строк, содержащих ровно 3 единицы, является языком над двоичным алфавитом. Ключевым свойством формального языка является уровень сложности, требуемый для определения, принадлежит ли данное слово языку. Необходимо разработать некоторую систему кодирования, позволяющую вычислимой функции принимать произвольное слово из языка в качестве входных данных; это обычно считается стандартной задачей. Язык называется вычислимым (синонимы: рекурсивным, разрешимым), если существует вычислимая функция f, такая, что для каждого слова w над алфавитом, функция возвращает значение, если слово принадлежит языку, и не возвращает значение, если слово не принадлежит языку. Таким образом, язык является вычислимым тогда и только тогда, когда существует процедура, способная правильно определить, принадлежит ли произвольное слово языку. Язык называется вычислимо перечислимым (синонимы: рекурсивно перечислимым, полуразрешимым), если существует вычислимая функция f, такая, что f(w) определена тогда и только тогда, когда слово w принадлежит языку. Термин "перечислимый" имеет ту же этимологию, что и в вычислимо перечислимых множествах натуральных чисел.
Теза Черча и Тюринга
В тезисе Черча-Тьюринга утверждается, что любая функция, вычислимая посредством процедуры, обладающей тремя вышеперечисленными свойствами, является вычислимой функцией. Поскольку эти три свойства не сформулированы формально, тезис Черча-Тьюринга невозможно доказать. Следующие факты часто приводятся в качестве аргументов в пользу тезиса: известно множество эквивалентных моделей вычислений, и все они дают одинаковое определение вычислимой функции (или, в некоторых случаях, более слабое определение). Не было предложено более мощной модели вычислений, которая общепризнанно считалась бы эффективно вычислимой. Тезис Черча-Тьюринга иногда используется в доказательствах для обоснования вычислимости конкретной функции, путем предоставления конкретного описания процедуры для ее вычисления. Это допустимо, поскольку предполагается, что все подобные применения тезиса можно исключить, выполнив трудоемкий процесс формализации процедуры для данной функции в какой-либо модели вычислений.
Many equivalent models of computation are known, and they all give the same definition of computable function (or a weaker version, in some instances). No stronger model of computation which is generally considered to be effectively calculable has been proposed. The Church–Turing thesis is sometimes used in proofs to justify that a particular function is computable by giving a concrete description of a procedure for the computation. This is permitted because it is believed that all such uses of the thesis can be removed by the tedious process of writing a formal procedure for the function in some model of computation.
Доказательность
При наличии функции (или, аналогично, множества) может быть интересно не только то, вычислима ли она, но и то, можно ли это доказать в конкретной системе доказательств (обычно, в арифметике Пеано первого порядка). Функция, для которой можно доказать вычислимость, называется доказуемо полной. Множество доказуемо полных функций рекурсивно перечислимо: все доказуемо полные функции можно перечислить, перечислив все соответствующие им доказательства, удостоверяющие их вычислимость. Это можно сделать, перечисляя все доказательства данной системы доказательств и отбрасывая несущественные.
Отношение к рекурсивно определенным функциям
В функции, заданной рекурсивным определением, каждое значение определяется формулой первого порядка от других, ранее определенных значений той же функции или других функций, которые могут быть просто константами. Подмножеством таких функций являются примитивно рекурсивные функции. Каждая такая функция доказуемо полна: для такой k-арной функции f каждое значение может быть вычислено, прослеживая определение в обратном порядке, итеративно, и после конечного числа итераций (что легко доказать), достигается константа. Обратное неверно, поскольку не каждая доказуемо полная функция является примитивно рекурсивной. Действительно, можно перечислить все примитивно рекурсивные функции и определить функцию en так, что для всех n, m: en(n, m) = fn(m), где fn – n-я примитивно рекурсивная функция (для k-арных функций это будет установлено как fn(m, m, ..., m)). Теперь, g(n) = en(n, n) + 1 является доказуемо полной, но не примитивно рекурсивной, согласно аргументу диагонализации: если бы существовало j такое, что g = fj, мы получили бы g(j) = en(j, j) + 1 = fj(j) + 1 = g(j) + 1, что является противоречием. (Числа Гёделя всех примитивно рекурсивных функций могут быть перечислены примитивно рекурсивной функцией, хотя сами значения примитивно рекурсивных функций не могут быть перечислены.) Одной из таких функций, которая является доказуемо полной, но не примитивно рекурсивной, является функция Аккермана: поскольку она определена рекурсивно, ее вычислимость действительно легко доказать. (Однако аналогичный аргумент диагонализации можно построить и для всех функций, заданных рекурсивным определением; таким образом, существуют доказуемо полные функции, которые не могут быть определены рекурсивно.)
Суммарные функции, которые не являются доказуемо суммарными
В непротиворечивой системе доказательств любая доказуемо полная функция действительно является полной, но обратное неверно: в любой достаточно сильной и непротиворечивой системе доказательств первого порядка (включая арифметику Пеано) можно доказать (в другой системе доказательств) существование полных функций, которые нельзя доказать полными в данной системе доказательств. Если полные вычислимые функции перечисляются посредством машин Тьюринга, которые их генерируют, то вышеуказанное утверждение можно показать, при условии непротиворечивости системы доказательств, с помощью аналогичного диагонального аргумента, использованного ранее, используя перечисление доказуемо полных функций, представленное выше. Используется машина Тьюринга, которая перечисляет соответствующие доказательства, и для каждого входа n вызывает fn(n) (где fn – это n-я функция в этом перечислении), запуская машину Тьюринга, которая вычисляет её согласно n-му доказательству. Гарантируется, что такая машина Тьюринга остановится, если система доказательств непротиворечива.
Невычислимые функции и неразрешимые проблемы
Каждая вычислимая функция имеет конечный алгоритм, предоставляющий чёткие и однозначные инструкции по её вычислению. Более того, этот алгоритм должен быть закодирован в конечном алфавите, используемом вычислительной моделью, поэтому существует лишь счётное количество вычислимых функций. Например, функции могут быть закодированы с помощью строки битов (алфавит }). Действительные числа несчётны, поэтому большинство действительных чисел не являются вычислимыми. См. вычислимое число. Множество функций на натуральных числах, заданных конечными алгоритмами, несчётно, поэтому большинство из них не являются вычислимыми. Конкретными примерами таких функций являются функция «загруженный бобр», сложность Колмогорова или любая функция, выводящая цифры невычислимого числа, например, константа Чейтина. Аналогично, большинство подмножеств натуральных чисел не являются вычислимыми. Задача останова была первым таким множеством, которое было построено. Проблема Entscheidungsproblem, предложенная Давидом Гильбертом, спрашивала, существует ли эффективный алгоритм для определения истинности математических утверждений (кодируемых как натуральные числа). Тьюринг и Черч независимо друг от друга в 1930-х годах показали, что это множество натуральных чисел не является вычислимым. Согласно тезису Черча — Тьюринга, не существует эффективного алгоритма, способного выполнять эти вычисления.
Относительная вычислимость
Понятие вычислимости функции может быть релятивизировано к произвольному множеству натуральных чисел A. Функция f определяется как вычислимая в A (эквивалентно, A-вычислимая или вычислимая относительно A), если она удовлетворяет определению вычислимой функции с изменениями, допускающими доступ к A в качестве оракула. Как и понятие вычислимой функции, относительная вычислимость может быть определена эквивалентными способами в различных моделях вычислений. Обычно это достигается путем расширения модели вычислений дополнительной примитивной операцией, которая проверяет, принадлежит ли данное целое число множеству A. Также можно говорить о том, что f вычислима в g, отождествляя g с её графом.
Высшая теория рекурсии
Гиперарифметическая теория изучает множества, которые могут быть вычислены из вычислимого порядкового числа итераций прыжка Тьюринга пустого множества. Это эквивалентно множествам, определяемым как универсальной, так и экзистенциальной формулой в языке арифметики второго порядка, а также некоторым моделям гипервычислений. Исследовались и более общие теории рекурсии, такие как E-рекурсивная теория, в которой любое множество может использоваться в качестве аргумента для E-рекурсивной функции.
Гипервычисления
Хотя тезис Черча-Тьюринга утверждает, что вычислимые функции включают все функции, для которых существуют алгоритмы, можно рассматривать более широкие классы функций, ослабляющие требования к алгоритмам. Область гипервычислений изучает модели вычислений, превосходящие обычные вычисления по Тьюрингу.