В теоретической информатике, вычислительная проблема - это проблема, которая компьютер может решить, или вопрос, на который компьютер может ответить. Например, проблема разложения на множители
представляет собой вычислительную проблему. Вычислительную проблему можно рассматривать как бесконечный набор экземпляров вместе с, возможно, пустым, набором решений для каждого экземпляра. Например, в задаче разложения экземплярами являются целые числа n, а решениями являются простые числа p, которые описывают нетривиальные простые множители n.
Вычислительные задачи - один из основных объектов изучения теоретической информатики. Область теории вычислительной сложности пытается определить количество ресурсов (вычислительная сложность ), которые потребуются для решения данной проблемы, и объяснить, почему некоторые проблемы трудноразрешимы или неразрешимый. Вычислительные задачи относятся к классам сложности, которые в широком смысле определяют ресурсы (например, время, пространство / память, энергия, глубина схемы), необходимые для их вычисления (решения) с помощью различных абстрактных машин (например, классические или квантовые машины).
Для многих проблем типично представление как экземпляров, так и решений двоичными строками, а именно элементами {0, 1} (см. регулярные выражения для используемых обозначений). Например, числа могут быть представлены в виде двоичных строк с использованием двоичного кодирования.
Для удобства чтения мы иногда определяем числа с их двоичной кодировкой в примерах ниже.
A проблема решения - вычислительная проблема, когда ответ для каждого случая либо да, либо нет. Примером проблемы решения является проверка простоты :
Проблема решения обычно представлена как набор всех случаев, для которых ответ - да. Например, проверка простоты может быть представлена как бесконечное множество
В задаче поиска , ответы могут быть произвольными. Например, факторинг - это задача поиска, в которой экземплярами являются (строковые представления) положительных целых чисел, а решениями являются (строковые представления) наборов простых чисел.
Задача поиска представлена как отношение, состоящее из всех пар экземпляр-решение, которое называется отношением поиска. Например, факторинг можно представить в виде отношения
, которые состоят из всех пар чисел (n, p), где p - нетривиальный простой делитель числа n.
A проблема подсчета запрашивает количество решений данной проблемы поиска. Например, проблема подсчета, связанная с факторингом:
Проблема подсчета может быть представлена функцией f из {0, 1} к неотрицательным целым числам. Для отношения поиска R задача подсчета, связанная с R, - это функция
Задача оптимизации просит найти «наилучшее возможное» решение среди множества всех возможных решений проблемы поиска. Одним из примеров является проблема максимального независимого множества :
Проблемы оптимизации могут быть представлены следующим образом: их поисковые отношения.
В задаче функции для каждого входа ожидается единственный выход (из итоговой функции ), но выход более сложный, чем решение проблемы , то есть это не просто «да» или «нет». Одним из самых известных примеров является задача коммивояжера :
Это NP-сложная проблема в комбинаторной оптимизации, важная для исследования операций и теоретической информатики.
В теории сложности вычислений обычно неявно предполагается, что любая строка в {0, 1} представляет собой экземпляр рассматриваемой вычислительной проблемы. Однако иногда не все строки {0, 1} представляют допустимые экземпляры, и одна из них указывает правильное подмножество {0, 1} как набор «действительных экземпляров». Вычислительные проблемы этого типа называются проблемами обещания.
. Ниже приводится пример проблемы обещания (решения):
Здесь допустимыми экземплярами являются те графы, максимальный размер независимого набора которых не превышает 5 или не менее 10.
Проблемы с обещанием решения обычно представлены в виде пар непересекающихся подмножеств (L да, L нет) из {0, 1}. Допустимые экземпляры - это те, которые указаны в L да ∪ L нет. L да и L нет представляют экземпляры, чей ответ - да и нет, соответственно.
Проблемы с обещаниями играют важную роль в нескольких областях вычислительной сложности, включая жесткость приближения, тестирование свойств и интерактивное системы проверки.