Вычислимые функции являются основными объектами изучения в теории вычислимости . Вычислимые функции являются формализованным аналогом интуитивного понятия алгоритмов , в том смысле, что функция вычислима, если существует алгоритм, который может выполнить работу функции, т. е. при заданном входе области определения функции он может вернуть соответствующий выход. Вычислимые функции используются для обсуждения вычислимости без ссылки на какую-либо конкретную модель вычислений, такую как машины Тьюринга или регистровые машины . Однако любое определение должно ссылаться на некоторую конкретную модель вычислений, но все допустимые определения дают один и тот же класс функций. Конкретными моделями вычислимости, которые порождают множество вычислимых функций, являются функции, вычислимые по Тьюрингу , и общие рекурсивные функции .
Согласно тезису Чёрча–Тьюринга , вычислимые функции — это именно те функции, которые можно вычислить с помощью механического (то есть автоматического) вычислительного устройства, имеющего неограниченное количество времени и места для хранения. Точнее, каждая модель вычислений, которая когда-либо была представлена, может вычислять только вычислимые функции, и все вычислимые функции могут быть вычислены с помощью любой из нескольких моделей вычислений, которые, по-видимому, сильно отличаются, таких как машины Тьюринга , регистровые машины , лямбда-исчисление и общие рекурсивные функции .
До точного определения вычислимой функции математики часто использовали неформальный термин эффективно вычисляемый . С тех пор этот термин стал отождествляться с вычислимыми функциями. Эффективная вычислимость этих функций не означает, что они могут быть эффективно вычислены (т. е. вычислены за разумное время). Фактически, для некоторых эффективно вычисляемых функций можно показать, что любой алгоритм, который их вычисляет, будет очень неэффективным в том смысле, что время выполнения алгоритма увеличивается экспоненциально (или даже суперэкспоненциально ) с длиной входных данных. Области допустимой вычислимости и вычислительной сложности изучают функции, которые могут быть вычислены эффективно.
Аксиомы Блюма могут быть использованы для определения абстрактной теории сложности вычислений на множестве вычислимых функций. В теории сложности вычислений проблема определения сложности вычислимой функции известна как функциональная проблема .
Вычислимость функции — неформальное понятие. Один из способов описать его — сказать, что функция вычислима, если ее значение может быть получено эффективной процедурой . С большей строгостью функция вычислима тогда и только тогда, когда существует эффективная процедура, которая для любого кортежа из k натуральных чисел даст значение . [1] В соответствии с этим определением, оставшаяся часть этой статьи предполагает, что вычислимые функции принимают конечное число натуральных чисел в качестве аргументов и производят значение , которое является одним натуральным числом.
В качестве аналогов этого неформального описания существуют многочисленные формальные математические определения. Класс вычислимых функций может быть определен во многих эквивалентных моделях вычислений , включая
Хотя эти модели используют разные представления для функций, их входов и выходов, существуют переводы между любыми двумя моделями, и поэтому каждая модель описывает по сути один и тот же класс функций, что порождает мнение, что формальная вычислимость является как естественной, так и не слишком узкой. [2] Эти функции иногда называют «рекурсивными», чтобы противопоставить их неформальному термину «вычислимый», [3] различие, вытекающее из дискуссии 1934 года между Клини и Гёделем. [4] стр.6
Например, можно формализовать вычислимые функции как μ-рекурсивные функции , которые являются частичными функциями , которые принимают конечные кортежи натуральных чисел и возвращают одно натуральное число (как и выше). Они являются наименьшим классом частичных функций, который включает константные, последовательные и проекционные функции и замкнут относительно композиции , примитивной рекурсии и оператора μ .
Эквивалентно, вычислимые функции могут быть формализованы как функции, которые могут быть вычислены идеализированным вычислительным агентом, таким как машина Тьюринга или регистровая машина . Формально говоря, частичная функция может быть вычислена тогда и только тогда, когда существует компьютерная программа со следующими свойствами:
Основная характеристика вычислимой функции заключается в том, что должна быть конечная процедура ( алгоритм ), говорящая, как вычислить функцию. Перечисленные выше модели вычислений дают различные интерпретации того, что такое процедура и как она используется, но эти интерпретации имеют много общих свойств. Тот факт, что эти модели дают эквивалентные классы вычислимых функций, вытекает из того факта, что каждая модель способна читать и имитировать процедуру для любой другой модели, подобно тому, как компилятор может читать инструкции на одном компьютерном языке и выдавать инструкции на другом языке.
Эндертон [1977] дает следующие характеристики процедуры вычисления вычислимой функции; аналогичные характеристики были даны Тьюрингом [1936], Роджерсом [1967] и другими.
Эндертон далее перечисляет несколько разъяснений этих трех требований процедуры для вычислимой функции:
Подводя итог, можно сказать, что согласно этой точке зрения функция вычислима, если:
Область вычислительной сложности изучает функции с заданными ограничениями по времени и/или пространству, разрешенным для успешного вычисления.
Множество A натуральных чисел называется вычислимым (синонимы: рекурсивным , разрешимым ), если существует вычислимая, полная функция f такая, что для любого натурального числа n , f ( n ) = 1, если n принадлежит A, и f ( n ) = 0, если n не принадлежит A.
Множество натуральных чисел называется вычислимо перечислимым (синонимы: рекурсивно перечислимым , полуразрешимым ), если существует вычислимая функция f такая, что для каждого числа n , f ( n ) определена тогда и только тогда, когда n входит в множество. Таким образом, множество является вычислимо перечислимым тогда и только тогда, когда оно является областью определения некоторой вычислимой функции. Слово перечислимый используется, поскольку следующие условия эквивалентны для непустого подмножества B натуральных чисел:
Если множество B является диапазоном функции f, то функцию можно рассматривать как перечисление B , поскольку список f (0), f ( 1), ... будет включать каждый элемент B.
Поскольку каждое конечное отношение на натуральных числах можно отождествить с соответствующим набором конечных последовательностей натуральных чисел, понятия вычислимого отношения и вычислимо перечислимого отношения можно определить из их аналогов для множеств.
В теории вычислимости в информатике принято рассматривать формальные языки . Алфавит — это произвольное множество. Слово в алфавите — это конечная последовательность символов из алфавита; один и тот же символ может использоваться более одного раза. Например, двоичные строки — это в точности слова в алфавите {0, 1} . Язык — это подмножество совокупности всех слов в фиксированном алфавите. Например, совокупность всех двоичных строк, содержащих ровно 3 единицы, является языком над двоичным алфавитом.
Ключевым свойством формального языка является уровень сложности, требуемый для определения, есть ли данное слово в языке. Должна быть разработана некоторая система кодирования, позволяющая вычислимой функции принимать произвольное слово в языке в качестве входных данных; это обычно считается рутиной. Язык называется вычислимым (синонимы: рекурсивный , разрешимый ), если существует вычислимая функция f такая, что для каждого слова w в алфавите f ( w ) = 1 , если слово есть в языке, и f ( w ) = 0 , если слово отсутствует в языке. Таким образом, язык является вычислимым только в том случае, если существует процедура, которая способна правильно определить, есть ли произвольные слова в языке.
Язык вычислимо перечислим (синонимы: рекурсивно перечислимый , полуразрешимый ), если существует вычислимая функция f такая, что f ( w ) определена тогда и только тогда, когда слово w есть в языке. Термин перечислимый имеет ту же этимологию, что и вычислимо перечислимые множества натуральных чисел.
Вычислимы следующие функции:
Если f и g вычислимы, то вычислимы и: f + g , f * g , если f является унарным , max( f , g ), min( f , g ), arg max { y ≤ f ( x )} и многие другие комбинации.
Следующие примеры иллюстрируют, что функция может быть вычислимой, хотя неизвестно, какой алгоритм ее вычисляет.
Тезис Чёрча –Тьюринга утверждает, что любая функция, вычислимая из процедуры, обладающей тремя свойствами, перечисленными выше, является вычислимой функцией. Поскольку эти три свойства формально не сформулированы, тезис Чёрча–Тьюринга не может быть доказан. Следующие факты часто принимаются в качестве доказательств тезиса:
Тезис Чёрча–Тьюринга иногда используется в доказательствах, чтобы обосновать, что конкретная функция вычислима, давая конкретное описание процедуры для вычисления. Это разрешено, поскольку считается, что все подобные использования тезиса могут быть устранены утомительным процессом написания формальной процедуры для функции в некоторой модели вычисления.
Если задана функция (или, аналогично, множество), может быть интересно не только, вычислима ли она, но и можно ли это доказать в конкретной системе доказательств (обычно арифметике Пеано первого порядка ). Функция, вычислимость которой можно доказать, называется доказуемо полной .
Множество доказуемо полных функций рекурсивно перечислимо : можно перечислить все доказуемо полные функции, перечислив все соответствующие им доказательства, которые доказывают их вычислимость. Это можно сделать, перечислив все доказательства системы доказательств и проигнорировав нерелевантные.
В функции, определенной рекурсивным определением , каждое значение определяется фиксированной формулой первого порядка других, ранее определенных значений той же функции или других функций, которые могут быть просто константами. Подмножеством их являются примитивные рекурсивные функции . Другим примером является функция Аккермана , которая рекурсивно определена, но не примитивно рекурсивна. [5]
Чтобы определения такого типа избегали цикличности или бесконечного регресса, необходимо, чтобы рекурсивные вызовы той же функции в пределах определения были для аргументов, которые меньше в некотором хорошо-частичном-порядке на области определения функции. Например, для функции Аккермана , всякий раз, когда определение ссылается на , то относительно лексикографического порядка на парах натуральных чисел . В этом случае и в случае примитивных рекурсивных функций хорошо-упорядоченность очевидна, но некоторые отношения "ссылается на" нетривиально доказываются как хорошо-упорядоченные. Любая функция, определенная рекурсивно хорошо-упорядоченным образом, вычислима: каждое значение может быть вычислено путем расширения дерева рекурсивных вызовов функции, и это расширение должно заканчиваться после конечного числа вызовов, потому что в противном случае лемма Кёнига привела бы к бесконечной нисходящей последовательности вызовов, нарушая предположение о хорошо-упорядоченности.
В надежной системе доказательств каждая доказуемо полная функция действительно является полной, но обратное неверно: в каждой системе доказательств первого порядка, которая достаточно сильна и надежна (включая арифметику Пеано), можно доказать (в другой системе доказательств) существование полных функций, для которых невозможно доказать полноту в системе доказательств.
Если все вычислимые функции перечисляются с помощью машин Тьюринга, которые их производят, то приведенное выше утверждение может быть показано, если система доказательств является надежной, с помощью аналогичного аргумента диагонализации, который использовался выше, используя перечисление доказуемо полных функций, данное ранее. Используется машина Тьюринга, которая перечисляет соответствующие доказательства, и для каждого входного значения n вызывается f n ( n ) (где f n является n -й функцией по этому перечислению), вызывая машину Тьюринга, которая вычисляет ее в соответствии с n-м доказательством. Такая машина Тьюринга гарантированно остановится, если система доказательств является надежной.
Каждая вычислимая функция имеет конечную процедуру, дающую явные, недвусмысленные инструкции о том, как ее вычислить. Более того, эта процедура должна быть закодирована в конечном алфавите, используемом вычислительной моделью, поэтому существует только счетное число вычислимых функций. Например, функции могут быть закодированы с использованием строки битов (алфавит Σ = {0, 1 }).
Действительные числа неисчислимы, поэтому большинство действительных чисел невычислимы. См. вычислимое число . Множество финитных функций от натуральных чисел неисчислимо, поэтому большинство из них невычислимы. Конкретными примерами таких функций являются Busy beaver , Kolmogorov difficulty или любая функция, которая выводит цифры невычислимого числа, например, константа Чайтина .
Аналогично, большинство подмножеств натуральных чисел невычислимы. Проблема остановки была первым таким множеством, которое было построено. Entscheidungsproblem , предложенная Дэвидом Гильбертом , спрашивала, существует ли эффективная процедура для определения того, какие математические утверждения (закодированные как натуральные числа) являются истинными. Тьюринг и Чёрч независимо показали в 1930-х годах, что это множество натуральных чисел невычислимо. Согласно тезису Чёрча–Тьюринга, не существует эффективной процедуры (с алгоритмом), которая может выполнять эти вычисления.
Понятие вычислимости функции может быть релятивизировано к произвольному множеству натуральных чисел A . Функция f определяется как вычислимая в A (эквивалентно A -вычислимая или вычислимая относительно A ), когда она удовлетворяет определению вычислимой функции с модификациями, позволяющими получить доступ к A как к оракулу . Как и в случае с понятием вычислимой функции, относительной вычислимости можно дать эквивалентные определения во многих различных моделях вычислений. Обычно это достигается путем дополнения модели вычислений дополнительной примитивной операцией, которая спрашивает, является ли заданное целое число членом A . Мы также можем говорить о том, что f вычислима в g , отождествляя g с его графиком.
Гиперарифметическая теория изучает те множества, которые могут быть вычислены из вычислимого порядкового числа итераций скачка Тьюринга пустого множества. Это эквивалентно множествам, определяемым как универсальной, так и экзистенциальной формулой на языке арифметики второго порядка и некоторыми моделями гипервычислений . Были изучены даже более общие теории рекурсии, такие как теория E-рекурсии , в которой любое множество может быть использовано в качестве аргумента E-рекурсивной функции.
Хотя тезис Чёрча–Тьюринга утверждает, что вычислимые функции включают все функции с алгоритмами, можно рассмотреть более широкие классы функций, которые смягчают требования, которым должны соответствовать алгоритмы. Область гипервычислений изучает модели вычислений, которые выходят за рамки обычных вычислений Тьюринга.