В теории сложности вычислений и сложности игр экономное сокращение — это преобразование одной задачи в другую ( сокращение ), сохраняющее количество решений. Неформально это биекция между соответствующими множествами решений двух задач. Общая редукция от проблемы к проблеме — это преобразование, гарантирующее, что всякий раз, когда существует решение, также есть хотя бы одно решение, и наоборот. Экономное сокращение гарантирует, что для каждого решения существует единственное решение и наоборот.
Экономные сокращения обычно используются в вычислительной сложности для доказательства сложности задач подсчета , для подсчета классов сложности, таких как #P . Кроме того, они используются для повышения сложности игры как способ создания сложных головоломок, имеющих уникальное решение, как того требуют многие типы головоломок.
Пусть это будет пример проблемы . Экономное сокращение от проблемы к проблеме — это такое сокращение, при котором количество решений равно числу решений проблемы . [1] Если такое сокращение существует, и если у нас есть оракул, который подсчитывает количество решений, для которого является экземпляром , то мы можем разработать алгоритм, который подсчитывает количество решений для , соответствующего экземпляра . Следовательно, если подсчитать количество решений для экземпляров сложно, то подсчитать количество решений для также должно быть сложно.
Точно так же, как сокращения «многие единицы» важны для доказательства NP-полноты , экономные сокращения важны для доказательства полноты для подсчета классов сложности , таких как #P . [1] Поскольку экономные сокращения сохраняют свойство иметь уникальное решение, они также используются в играх на сложность , чтобы показать сложность головоломок, таких как судоку , где уникальность решения является важной частью определения головоломки. [2]
Конкретные типы экономных сокращений могут определяться вычислительной сложностью или другими свойствами алгоритма преобразования. Например, экономное сокращение за полиномиальное время — это такое, при котором алгоритм преобразования занимает полиномиальное время . Это типы редукции, используемые для доказательства #P-полноты . [1] В параметризованной сложности используются экономные сокращения FPT ; это экономные сокращения, преобразование которых представляет собой управляемый алгоритм с фиксированными параметрами и которые отображают ограниченные значения параметров в ограниченные значения параметров с помощью вычислимой функции. [3]
Экономные сокращения за полиномиальное время являются частным случаем более общего класса сокращений для задач счета, сокращений счета за полиномиальное время . [4]
Один из распространенных методов, используемых для доказательства экономичности редукции, состоит в том, чтобы показать, что существует биекция между набором решений и набором решений, гарантирующим, что количество решений обеих задач одинаково.
Класс #P содержит счетные версии задач решения NP. Учитывая пример проблемы решения NP, проблема требует количества решений проблемы. Примеры #P-полноты, приведенные ниже, основаны на том факте, что #SAT является #P-полнотой.
Это счетная версия 3SAT . Можно показать, что любую булеву формулу можно переписать в виде формулы в форме 3- КНФ . Любое допустимое присвоение логической формулы является допустимым присвоением соответствующей формулы 3-CNF, и наоборот. Следовательно, это сокращение сохраняет количество удовлетворяющих назначений и является экономным сокращением. Тогда #SAT и #3SAT являются счетными эквивалентами, а #3SAT также #P-полным.
Это счетная версия Planar 3SAT. Снижение жесткости от 3SAT до Planar 3SAT, данное Лихтенштейном [5], имеет дополнительное свойство, заключающееся в том, что для каждого допустимого назначения экземпляра 3SAT существует уникальное допустимое присвоение соответствующего экземпляра Planar 3SAT, и наоборот. Следовательно, редукция является экономной, и, следовательно, Planar #3SAT является #P-полной.
Версия этой задачи со счетом требует узнать количество гамильтоновых циклов в заданном ориентированном графе . Сета Такахиро предложил [6] сокращение 3SAT к этой проблеме, ограничиваясь планарными ориентированными графами максимальной степени 3. Сокращение обеспечивает биекцию между решениями экземпляра 3SAT и решениями экземпляра гамильтонова цикла в плоских направленных графах максимальной степени 3. Следовательно, редукция является экономной, а гамильтонов цикл в плоских ориентированных графах максимальной степени 3 является #P-полным. Следовательно, общая версия проблемы гамильтонова цикла также должна быть #P-полной.
Шакашака — пример того, как экономное сокращение можно использовать для демонстрации сложности логических головоломок. Версия решения этой проблемы спрашивает, существует ли решение для данного экземпляра головоломки. Версия подсчета требует количества различных решений такой проблемы. Сокращение Planar 3SAT, данное Деменом, Окамото, Уэхарой и Уно [7], также обеспечивает биекцию между набором решений экземпляра Planar 3SAT и набором решений соответствующего экземпляра Shakashaka. Следовательно, сокращение является экономным, а счетная версия Шакашаки является #P-полной.