В теоретической информатике и математике теория вычислений — это раздел, который занимается тем, какие проблемы могут быть решены на модели вычислений, используя алгоритм , насколько эффективно они могут быть решены или в какой степени (например, приближенные решения по сравнению с точными). Область делится на три основных раздела: теория автоматов и формальных языков , теория вычислимости и теория вычислительной сложности , которые связаны вопросом: «Каковы основные возможности и ограничения компьютеров?». [1]
Для проведения строгого исследования вычислений специалисты по информатике работают с математической абстракцией компьютеров, называемой моделью вычислений . Существует несколько используемых моделей, но наиболее часто изучаемой является машина Тьюринга . [2] Специалисты по информатике изучают машину Тьюринга, потому что ее просто сформулировать, ее можно анализировать и использовать для доказательства результатов, а также потому, что она представляет собой то, что многие считают наиболее мощной возможной «разумной» моделью вычислений (см. тезис Чёрча–Тьюринга ). [3] Может показаться, что потенциально бесконечная емкость памяти является нереализуемым атрибутом, но любая разрешимая задача [4], решаемая машиной Тьюринга, всегда будет требовать только конечного объема памяти. Поэтому в принципе любая задача, которая может быть решена (решена) машиной Тьюринга, может быть решена компьютером, имеющим конечный объем памяти.
Теорию вычислений можно считать созданием моделей всех видов в области компьютерных наук. Поэтому используются математика и логика . В прошлом веке она отделилась от математики и стала самостоятельной академической дисциплиной со своими собственными конференциями, такими как FOCS в 1960 году и STOC в 1969 году, и своими собственными наградами, такими как IMU Abacus Medal (учреждена в 1981 году как премия Рольфа Неванлинны), премией Гёделя , учрежденной в 1993 году, и премией Кнута , учрежденной в 1996 году.
Пионерами теории вычислений были Рамон Луллий , Алонсо Чёрч , Курт Гёдель , Алан Тьюринг , Стивен Клини , Рожа Петер , Джон фон Нейман и Клод Шеннон .
Теория автоматов — это изучение абстрактных машин (или, точнее, абстрактных «математических» машин или систем) и вычислительных задач, которые могут быть решены с помощью этих машин. Эти абстрактные машины называются автоматами. Автоматы происходят от греческого слова (Αυτόματα), которое означает, что что-то делает что-то само по себе. Теория автоматов также тесно связана с формальной теорией языка, [5], поскольку автоматы часто классифицируются по классу формальных языков, которые они способны распознавать. Автомат может быть конечным представлением формального языка, который может быть бесконечным множеством. Автоматы используются в качестве теоретических моделей для вычислительных машин и используются для доказательств вычислимости.
Теория языка — это раздел математики, занимающийся описанием языков как набора операций над алфавитом . Она тесно связана с теорией автоматов, поскольку автоматы используются для генерации и распознавания формальных языков. Существует несколько классов формальных языков, каждый из которых допускает более сложную спецификацию языка, чем предыдущий, т. е. иерархия Хомского [6] , и каждый соответствует классу автоматов, который его распознает. Поскольку автоматы используются в качестве моделей для вычислений, формальные языки являются предпочтительным способом спецификации для любой проблемы, которая должна быть вычислена .
Теория вычислимости занимается в первую очередь вопросом о том, в какой степени проблема разрешима на компьютере. Утверждение о том, что проблема остановки не может быть решена машиной Тьюринга [7], является одним из важнейших результатов в теории вычислимости, поскольку это пример конкретной проблемы, которую легко сформулировать и невозможно решить с помощью машины Тьюринга. Большая часть теории вычислимости строится на результате проблемы остановки.
Другим важным шагом в теории вычислимости стала теорема Райса , которая утверждает, что для всех нетривиальных свойств частичных функций невозможно решить , вычисляет ли машина Тьюринга частичную функцию с этим свойством. [8]
Теория вычислимости тесно связана с разделом математической логики , называемым теорией рекурсии , которая снимает ограничение на изучение только тех моделей вычислений, которые сводимы к модели Тьюринга. [9] Многие математики и специалисты по вычислительной теории, изучающие теорию рекурсии, будут называть ее теорией вычислимости.
Теория сложности рассматривает не только то, может ли проблема быть решена на компьютере, но и то, насколько эффективно она может быть решена. Рассматриваются два основных аспекта: временная сложность и пространственная сложность, которые соответственно означают, сколько шагов требуется для выполнения вычисления, и сколько памяти требуется для выполнения этого вычисления.
Чтобы проанализировать, сколько времени и места требует данный алгоритм , специалисты по информатике выражают время или место, необходимые для решения задачи, как функцию размера входной задачи. Например, поиск определенного числа в длинном списке чисел становится сложнее по мере увеличения списка чисел. Если мы говорим, что в списке n чисел, то если список не отсортирован и не проиндексирован каким-либо образом, нам, возможно, придется просмотреть каждое число, чтобы найти искомое. Таким образом, мы говорим, что для решения этой задачи компьютеру необходимо выполнить ряд шагов, которые линейно растут по размеру задачи.
Чтобы упростить эту проблему, специалисты по информатике приняли нотацию Big O , которая позволяет сравнивать функции таким образом, что гарантирует, что не нужно учитывать конкретные аспекты конструкции машины, а только асимптотическое поведение по мере того, как проблемы становятся большими. Таким образом, в нашем предыдущем примере мы могли бы сказать, что проблема требует шагов для решения.
Возможно, самой важной открытой проблемой во всей компьютерной науке является вопрос о том, может ли быть эффективно решен определенный широкий класс задач, обозначенный как NP . Это обсуждается далее в разделе Классы сложности P и NP , а проблема P против NP является одной из семи проблем Премии тысячелетия, заявленных Математическим институтом Клэя в 2000 году. Официальное описание проблемы было дано лауреатом Премии Тьюринга Стивеном Куком .
Помимо машины Тьюринга , используются и другие эквивалентные (см.: тезис Чёрча–Тьюринга ) модели вычислений.
В дополнение к общим вычислительным моделям, некоторые более простые вычислительные модели полезны для специальных, ограниченных приложений. Регулярные выражения , например, определяют строковые шаблоны во многих контекстах, от офисного программного обеспечения до языков программирования . Другой формализм, математически эквивалентный регулярным выражениям, конечные автоматы используются в проектировании схем и в некоторых видах решения проблем. Контекстно-свободные грамматики определяют синтаксис языка программирования. Недетерминированные магазинные автоматы являются другим формализмом, эквивалентным контекстно-свободным грамматикам. Примитивные рекурсивные функции являются определенным подклассом рекурсивных функций.
Различные модели вычислений способны выполнять различные задачи. Один из способов измерения мощности вычислительной модели — изучить класс формальных языков , которые может генерировать эта модель; таким образом получается иерархия языков Хомского .
центральные области теории вычислений: автоматы, вычислимость и сложность. (Страница 1)
(В этой области существует множество учебников; этот список по необходимости неполный.)