stringtranslate.com

Вычислимость

Вычислимость — это способность решать проблему эффективным способом. Это ключевая тема области теории вычислимости в математической логике и теории вычислений в информатике . Вычислимость проблемы тесно связана с существованием алгоритма для ее решения.

Наиболее широко изучаемыми моделями вычислимости являются вычислимые по Тьюрингу и μ-рекурсивные функции , а также лямбда-исчисление , все из которых имеют эквивалентную вычислительную мощность. Другие формы вычислимости также изучаются: понятия вычислимости, слабее машин Тьюринга, изучаются в теории автоматов , в то время как понятия вычислимости, сильнее машин Тьюринга, изучаются в области гипервычислений .

Проблемы

Центральной идеей вычислимости является идея ( вычислительной ) проблемы , то есть задачи, вычислимость которой можно исследовать.

Существует два основных типа проблем:

Другие типы проблем включают проблемы поиска и проблемы оптимизации .

Одной из целей теории вычислимости является определение того, какие задачи или классы задач могут быть решены в каждой модели вычислений.

Формальные модели вычислений

Модель вычислений — это формальное описание определенного типа вычислительного процесса. Описание часто принимает форму абстрактной машины , которая предназначена для выполнения поставленной задачи. Общие модели вычислений, эквивалентные машине Тьюринга (см. тезис Чёрча–Тьюринга ), включают:

Лямбда-исчисление
Вычисление состоит из начального лямбда-выражения (или двух, если вы хотите разделить функцию и ее входные данные) и конечной последовательности лямбда-терминов, каждый из которых выводится из предыдущего с помощью одного применения бета-редукции .
Комбинаторная логика
Концепция, которая имеет много общего с -исчислением, но также существуют и важные различия (например, комбинатор с фиксированной точкой Y имеет нормальную форму в комбинаторной логике, но не в -исчислении). Комбинаторная логика была разработана с большими амбициями: понимание природы парадоксов, создание более экономичных основ математики (концептуально), устранение понятия переменных (тем самым проясняя их роль в математике).
μ-рекурсивные функции
Вычисление состоит из μ-рекурсивной функции, т. е. ее определяющей последовательности, любых входных значений и последовательности рекурсивных функций, появляющихся в определяющей последовательности с входами и выходами. Таким образом, если в определяющей последовательности рекурсивной функции f ( x ) появляются функции g ( x ) и h ( x , y ) , то могут появиться члены вида g (5) = 7 или h (3,2) = 10. Каждая запись в этой последовательности должна быть применением базовой функции или следовать из записей выше с помощью композиции , примитивной рекурсии или μ-рекурсии . Например, если f ( x ) = h ( x , g ( x )) , то для появления f (5) = 3 выше должны появиться члены типа g (5) = 6 и h (5,6) = 3. Вычисление завершается только в том случае, если последний член дает значение рекурсивной функции, примененной к входам.
Системы перезаписи строк
Включает в себя алгоритмы Маркова , которые используют правила, подобные грамматике, для работы со строками символов; а также постканоническую систему .
Регистрационная машина
Теоретическая идеализация компьютера. Существует несколько вариантов. В большинстве из них каждый регистр может содержать натуральное число (неограниченного размера), а инструкции просты (и немногочисленны), например, существуют только декрементация (в сочетании с условным переходом) и инкрементация (и остановка). Отсутствие бесконечного (или динамически растущего) внешнего хранилища (наблюдаемого в машинах Тьюринга) можно понять, заменив его роль методами нумерации Гёделя : тот факт, что каждый регистр содержит натуральное число, позволяет представить сложную вещь (например, последовательность или матрицу и т. д.) соответствующим огромным натуральным числом — однозначность как представления, так и интерпретации может быть установлена ​​с помощью теоретических основ этих методов.
машина Тьюринга
Также похоже на конечный автомат, за исключением того, что входные данные предоставляются на исполнительной «ленте», которую машина Тьюринга может считывать, записывать или перемещать вперед и назад мимо своей «головки» чтения/записи. Лента может увеличиваться до произвольного размера. Машина Тьюринга способна выполнять сложные вычисления, которые могут иметь произвольную продолжительность. Эта модель, возможно, является самой важной моделью вычислений в информатике, поскольку она имитирует вычисления при отсутствии предопределенных ограничений ресурсов.
Многоленточная машина Тьюринга
Здесь может быть больше одной ленты; более того, на ленте может быть несколько головок. Удивительно, но любое вычисление, которое может быть выполнено таким типом машины, может быть выполнено и обычной машиной Тьюринга, хотя последняя может быть медленнее или требовать большего общего региона ленты.
П′′
Как и машины Тьюринга, P′′ использует бесконечную ленту символов (без случайного доступа) и довольно минималистичный набор инструкций. Но эти инструкции сильно отличаются, поэтому, в отличие от машин Тьюринга, P′′ не нужно поддерживать отдельное состояние, поскольку вся «памятеподобная» функциональность может быть предоставлена ​​только лентой. Вместо того чтобы перезаписывать текущий символ, он может выполнять модульное арифметическое приращение на нем. P′′ также имеет пару инструкций для цикла, проверяя пустой символ. Несмотря на свою минималистичную природу, он стал родительским формальным языком реализованного и (для развлечения) используемого языка программирования под названием Brainfuck .

В дополнение к общим вычислительным моделям, некоторые более простые вычислительные модели полезны для специальных, ограниченных приложений. Регулярные выражения , например, определяют шаблоны строк во многих контекстах, от офисного программного обеспечения до языков программирования . Другой формализм, математически эквивалентный регулярным выражениям, конечные автоматы используются в проектировании схем и в некоторых видах решения проблем. Контекстно-свободные грамматики определяют синтаксис языка программирования. Недетерминированные магазинные автоматы являются другим формализмом, эквивалентным контекстно-свободным грамматикам.

Различные модели вычислений способны выполнять различные задачи. Один из способов измерения мощности вычислительной модели — изучить класс формальных языков , которые может генерировать эта модель; таким образом получается иерархия языков Хомского .

Другие ограниченные модели вычислений включают в себя:

Детерминированный конечный автомат (DFA)
Также называется конечным автоматом. Все существующие сегодня реальные вычислительные устройства можно смоделировать как конечный автомат, поскольку все реальные компьютеры работают на конечных ресурсах. Такая машина имеет набор состояний и набор переходов состояний, на которые влияет входной поток. Определенные состояния определяются как принимающие состояния. Входной поток подается в машину по одному символу за раз, и переходы состояний для текущего состояния сравниваются с входным потоком, и если есть соответствующий переход, машина может перейти в новое состояние. Если в конце входного потока машина находится в принимающем состоянии, то принимается весь входной поток.
Недетерминированный конечный автомат (НКА)
Еще одна простая модель вычислений, хотя ее последовательность обработки не определена однозначно. Ее можно интерпретировать как принятие нескольких путей вычислений одновременно через конечное число состояний. Однако можно доказать, что любой NFA сводится к эквивалентному DFA.
Автомат Pushdown
Похож на конечный автомат, за исключением того, что у него есть стек выполнения, который может увеличиваться до произвольного размера. Переходы состояний дополнительно указывают, следует ли добавлять символ в стек или удалять символ из стека. Он мощнее DFA из-за своего стека с бесконечной памятью, хотя в любой момент времени доступен только верхний элемент стека.

Мощность автоматов

Имея эти вычислительные модели на руках, мы можем определить, каковы их пределы. То есть, какие классы языков они могут принять?

Мощность конечных автоматов

Специалисты по информатике называют любой язык, который может быть принят конечным автоматом, регулярным языком . Из-за ограничения, что число возможных состояний в конечном автомате конечно, мы можем видеть, что для того, чтобы найти язык, который не является регулярным, мы должны построить язык, который потребовал бы бесконечного числа состояний.

Примером такого языка является множество всех строк, состоящих из букв 'a' и 'b', которые содержат равное количество букв 'a' и 'b'. Чтобы понять, почему этот язык не может быть правильно распознан конечным автоматом, предположим сначала, что такой автомат M существует. M должен иметь некоторое количество состояний n . Теперь рассмотрим строку x, состоящую из 'a', за которыми следуют 'b'.

Поскольку M считывает x , в машине должно быть некоторое состояние, которое повторяется при считывании первой серии 'a's, поскольку есть 'a's и только n состояний по принципу ящика . Назовем это состояние S , и далее пусть d будет числом 'a's, которые наша машина считывает, чтобы перейти от первого появления S к некоторому последующему появлению в последовательности 'a'. Тогда мы знаем, что при этом втором появлении S мы можем добавить дополнительное d (где ) 'a's, и мы снова окажемся в состоянии S . Это означает, что мы знаем, что строка 'a's должна оказаться в том же состоянии, что и строка 'a's. Это подразумевает, что если наша машина принимает x , она должна также принимать строку 'a's, за которой следуют 'b's, что не соответствует языку строк, содержащих равное количество 'a's и 'b's. Другими словами, M не может правильно различить строку с равным количеством букв «a» и «b» и строку с буквами «a» и «b».

Мы знаем, следовательно, что этот язык не может быть правильно принят никаким конечным автоматом, и, таким образом, не является регулярным языком. Более общая форма этого результата называется леммой Pumping для регулярных языков , которую можно использовать для того, чтобы показать, что широкие классы языков не могут быть распознаны конечным автоматом.

Мощность автоматов толкающего типа

Специалисты по информатике определяют язык, который может быть принят магазинным автоматом , как контекстно-свободный язык , который может быть определен как контекстно-свободная грамматика . Язык, состоящий из строк с равным количеством 'a' и 'b', который, как мы показали, не является регулярным языком, может быть определен магазинным автоматом. Кроме того, в общем случае магазинный автомат может вести себя так же, как конечный автомат, поэтому он может определить любой язык, который является регулярным. Таким образом, эта модель вычислений строго более мощна, чем конечные автоматы.

Однако оказывается, что существуют языки, которые также не могут быть определены с помощью push-down-автомата. Результат аналогичен результату для регулярных выражений и не будет здесь подробно описываться. Существует лемма Pumping для контекстно-свободных языков . Примером такого языка является множество простых чисел.

Мощность машин Тьюринга

Машины Тьюринга могут решать любой контекстно-свободный язык, в дополнение к языкам, неразрешимым автоматом с обратным отсчетом, таким как язык, состоящий из простых чисел. Поэтому это строго более мощная модель вычислений.

Поскольку машины Тьюринга обладают способностью «делать резервную копию» на своей входной ленте, машина Тьюринга может работать долгое время способом, который невозможен с другими ранее описанными моделями вычислений. Можно построить машину Тьюринга, которая никогда не закончит работу (остановится) на некоторых входах. Мы говорим, что машина Тьюринга может выбрать язык, если она в конечном итоге остановится на всех входах и даст ответ. Язык, который может быть выбран таким образом, называется рекурсивным языком . Мы можем далее описать машины Тьюринга, которые в конечном итоге остановятся и дадут ответ для любого входа на языке, но которые могут работать вечно для входных строк, которых нет в языке. Такие машины Тьюринга могли бы сказать нам, что данная строка находится в языке, но мы никогда не можем быть уверены на основе ее поведения, что данная строка не находится в языке, поскольку в таком случае он может работать вечно. Язык, который принимается такой машиной Тьюринга, называется рекурсивно перечислимым языком .

Машина Тьюринга, как оказалось, является чрезвычайно мощной моделью автоматов. Попытки изменить определение машины Тьюринга, чтобы создать более мощную машину, на удивление, потерпели неудачу. Например, добавление дополнительной ленты к машине Тьюринга, придание ей двумерной (или трехмерной, или любой другой) бесконечной поверхности для работы, все это может быть смоделировано машиной Тьюринга с базовой одномерной лентой. Таким образом, эти модели не являются более мощными. Фактически, следствием тезиса Чёрча-Тьюринга является то, что не существует разумной модели вычислений, которая могла бы решать языки, которые не могут решаться машиной Тьюринга.

Тогда возникает вопрос: существуют ли языки, которые рекурсивно перечислимы, но не являются рекурсивными? И, более того, существуют ли языки, которые даже не являются рекурсивно перечислимыми?

Проблема остановки

Проблема остановки — одна из самых известных проблем в информатике, поскольку она имеет глубокие последствия для теории вычислимости и для того, как мы используем компьютеры в повседневной практике. Проблему можно сформулировать так:

Учитывая описание машины Тьюринга и ее начальный ввод, определите, останавливается ли (завершается) ли программа, выполняемая на этом вводе. Альтернативой является то, что она работает вечно без остановок.

Здесь мы задаем не простой вопрос о простом числе или палиндроме, а вместо этого меняем столы и просим машину Тьюринга ответить на вопрос о другой машине Тьюринга. Можно показать (см. основную статью: Проблема остановки ), что невозможно построить машину Тьюринга, которая может ответить на этот вопрос во всех случаях.

То есть, единственный общий способ узнать наверняка, остановится ли данная программа на определенном входе во всех случаях, — просто запустить ее и посмотреть, остановится ли она. Если она остановится, то вы знаете, что она остановится. Однако, если она не остановится, вы никогда не узнаете, остановится ли она в конечном итоге. Язык, состоящий из всех описаний машин Тьюринга, сопряженных со всеми возможными входными потоками, на которых эти машины Тьюринга в конечном итоге остановятся, не является рекурсивным. Поэтому проблема остановки называется невычислимой или неразрешимой .

Расширение проблемы остановки называется теоремой Райса , которая утверждает, что в общем случае невозможно определить, обладает ли данный язык каким-либо конкретным нетривиальным свойством.

За пределами рекурсивно перечислимых языков

Однако проблему остановки легко решить, если мы допустим, что машина Тьюринга, которая ее решает, может работать вечно, если ей подан вход, представляющий собой представление машины Тьюринга, которая сама по себе не останавливается. Таким образом, останавливающийся язык рекурсивно перечислим. Однако возможно построить языки, которые даже не являются рекурсивно перечислимыми.

Простым примером такого языка является дополнение к останавливающемуся языку; то есть язык, состоящий из всех машин Тьюринга, сопряженных со строками ввода, где машины Тьюринга не останавливаются на своем вводе. Чтобы увидеть, что этот язык не является рекурсивно перечислимым, представьте, что мы строим машину Тьюринга M , которая способна дать определенный ответ для всех таких машин Тьюринга, но что она может работать вечно на любой машине Тьюринга, которая в конечном итоге остановится. Затем мы можем построить другую машину Тьюринга , которая моделирует работу этой машины, а также моделирует непосредственно выполнение машины, заданной во входных данных, чередуя выполнение двух программ. Поскольку прямая симуляция в конечном итоге остановится, если моделируемая ею программа остановится, и поскольку по предположению симуляция M в конечном итоге остановится, если входная программа никогда не остановится, мы знаем, что в конечном итоге остановит одну из своих параллельных версий. Таким образом, является решателем для проблемы остановки. Однако ранее мы показали, что проблема остановки неразрешима. У нас есть противоречие, и мы таким образом показали, что наше предположение о существовании M неверно. Дополнение останавливающегося языка, таким образом, не является рекурсивно перечислимым.

Модели, основанные на параллелизме

Разработан ряд вычислительных моделей, основанных на параллелизме , включая параллельную машину с произвольным доступом и сеть Петри . Эти модели параллельных вычислений до сих пор не реализуют никаких математических функций, которые не могут быть реализованы машинами Тьюринга.

Более сильные модели вычислений

Тезис Чёрча –Тьюринга предполагает, что не существует эффективной модели вычислений, которая может вычислять больше математических функций, чем машина Тьюринга. Специалисты по информатике придумали множество разновидностей гиперкомпьютеров , моделей вычислений, которые выходят за рамки вычислимости Тьюринга.

Бесконечное исполнение

Представьте себе машину, в которой каждый шаг вычисления требует половины времени предыдущего шага (и, как мы надеемся, половины энергии предыдущего шага...). Если мы нормализуем до 1/2 единицы времени количество времени, требуемое для первого шага (и до 1/2 единицы энергии количество энергии, требуемое для первого шага...), выполнение потребует

единицу времени (и 1 единицу энергии...) для выполнения. Этот бесконечный ряд сходится к 1, что означает, что эта машина Зенона может выполнить счетное бесконечное количество шагов за 1 единицу времени (используя 1 единицу энергии...). Эта машина способна решить проблему остановки, напрямую симулируя выполнение машины. По сути, любой сходящийся бесконечный [должен быть доказуемо бесконечным] ряд будет работать. Предполагая, что бесконечный ряд сходится к значению n , машина Зенона завершит счетное бесконечное выполнение за n единиц времени.

Машины Oracle

Так называемые машины Oracle имеют доступ к различным "оракулам", которые предоставляют решение для определенных неразрешимых проблем. Например, машина Тьюринга может иметь "останавливающий оракул", который немедленно отвечает, остановится ли данная машина Тьюринга когда-либо на данном входе. Эти машины являются центральной темой изучения в теории рекурсии .

Пределы гипервычислений

Даже эти машины, которые, казалось бы, представляют собой предел автоматов, которые мы могли бы себе представить, сталкиваются со своими собственными ограничениями. Хотя каждая из них может решить проблему остановки для машины Тьюринга, они не могут решить свою собственную версию проблемы остановки. Например, машина Oracle не может ответить на вопрос, остановится ли когда-либо данная машина Oracle.

Смотрите также

Ссылки