Классы Sharp P, Sharp P-Complete — различия между версиями
(→Класс #P-Complete) |
(→Класс #P-Complete) |
||
Строка 31: | Строка 31: | ||
}} | }} | ||
− | Для более формального определения будем использовать МТ с оракулом <tex> O = \{\big \langle x, i \big \rangle: f(x)_i = 1\}</tex> для нашей функции <tex>f</tex>. Для нашего типа задач оракул будет отвечать на вопросы вида "Принадлежит ли слово <tex>q</tex> языку <tex>O</tex>?" за один шаг | + | Для более формального определения будем использовать МТ с оракулом <tex> O = \{\big \langle x, i \big \rangle: f(x)_i = 1\}</tex> для нашей функции <tex>f</tex>. Для нашего типа задач оракул будет отвечать на вопросы вида "Принадлежит ли слово <tex>q</tex> языку <tex>O</tex>?" за один шаг МТ. Для функции <tex>f = \{0,1\}^* \rightarrow \{0, 1\}^*</tex> будем называть <tex>FP^f</tex> множество функций, вычислимых за полиномиальное время на МТ с оракулом для функции <tex>f</tex>. |
− | Тогда <tex>f \#P</tex>-полная, если <tex>f \in \#P</tex> и любая <tex>g \in \#P</tex> принадлежит <tex>FP^f</tex>. | + | Тогда <tex>f - \#P</tex>-полная, если <tex>f \in \#P</tex> и любая <tex>g \in \#P</tex> принадлежит <tex>FP^f</tex>. |
− | Если <tex>f \in FP </tex>, тогда <tex>FP=FP^f</tex>. Получаем, что, если <tex>f \#P</tex>-полная и <tex>f \in FP</tex>, то <tex>FP=\#P</tex>. | + | Если <tex>f \in FP </tex>, тогда <tex>FP=FP^f</tex>. Получаем, что, если <tex>f - \#P</tex>-полная и <tex>f \in FP</tex>, то <tex>FP=\#P</tex>. |
+ | |||
+ | Для множества языков из <tex>NP</tex> (таких как <tex>3SAT, CLIQUE, Ham </tex>) существуют их версии из <tex>\#P</tex>. См. <tex>\#SAT</tex>. |
Версия 10:35, 29 марта 2017
Класс #P
Определение: |
Более формально: принадлежит , если существует и машина Тьюринга такая, что для любого . | представляет класс задач, решением которых является количество успешных (завершающихся в допускающих состояниях) путей вычислений для недетерминированной МТ, работающей за полиномиальное время. Отличается от большинства рассмотренных классов тем, что задачи требуют в качестве ответа не или , а натуральное число.
Вопрос, являются ли задачи из
//эффективно разрешимыми// остается открытым. Класс - аналог класса для задач, ответ на которые представляется не битовым значением, а натуральным числом. Подсчет числа сертификатов как минимум столь же сложно, как и проверка наличия сертификата, а значит, если доказать равенство , то автоматически будет доказано . Однако из вовсе не следует . Если , то , так как подсчет числа сертификатов может быть выполнен за полиномиальную память.Примеры задач из #P
- #SAT
- - имея ориентированный граф , посчитать число простых циклов. Аналогичная задача, отвечающая на вопрос, существует ли в заданном ориентированном графе простой цикл, может быть решена за линейное время при помощи поиска в ширину. Проблема подсчета значительно сложнее.
Теорема: |
Если , тогда . |
Доказательство: |
Для графа |
Класс #P-Complete
Определение: |
является -полной, если и получение для алгоритма работающего за полиномиальное время влечет равенство . |
Для более формального определения будем использовать МТ с оракулом для нашей функции . Для нашего типа задач оракул будет отвечать на вопросы вида "Принадлежит ли слово языку ?" за один шаг МТ. Для функции будем называть множество функций, вычислимых за полиномиальное время на МТ с оракулом для функции .
Тогда
-полная, если и любая принадлежит .Если
, тогда . Получаем, что, если -полная и , то .Для множества языков из
(таких как ) существуют их версии из . См. .