Классы Sharp P, Sharp P-Complete — различия между версиями
(→Классы #P и #P-Complete) |
(→Примеры задач из #P) |
||
| Строка 24: | Строка 24: | ||
Преобразование графа <tex>G</tex> в <tex>G'</tex> можно выполнить за полином от количества вершин. Таким образом, если <tex>\#CYCLE \in FP</tex>, тогда сразу же <tex>HAM \in P</tex>. А так как<tex> HAM \in NP</tex>, то <tex>NP = P</tex>. | Преобразование графа <tex>G</tex> в <tex>G'</tex> можно выполнить за полином от количества вершин. Таким образом, если <tex>\#CYCLE \in FP</tex>, тогда сразу же <tex>HAM \in P</tex>. А так как<tex> HAM \in NP</tex>, то <tex>NP = P</tex>. | ||
}} | }} | ||
| + | |||
| + | |||
| + | ==Класс #P-Complete== | ||
| + | {{Определение | ||
| + | |definition= <tex>f : \{0, 1\}^* \rightarrow \{0, 1\}^*</tex> является <tex>\#P</tex>-полной, если <tex> f \in \#P</tex> и получение для <tex>f</tex> алгоритма работающего за полиномиальное время влечет равенство <tex> \#P=FP</tex>. | ||
| + | }} | ||
| + | |||
| + | Для более формального определения будем использовать МТ с оракулом <tex> О = \{\big \langle x, i \big \rangle: f(x)_i = 1\}</tex>. Для нашего типа задач оракул будет отвечать на вопросы вида | ||
Версия 10:39, 24 марта 2017
Класс #P
| Определение: |
| представляет класс задач, решением которых является количество успешных (завершающихся в допускающих состояниях) путей вычислений для недетерминированной МТ, работающей за полиномиальное время. Отличается от большинства рассмотренных классов тем, что задачи требуют в качестве ответа не или , а натуральное число.
Более формально: принадлежит , если существует и машина Тьюринга такая, что для любого . |
Вопрос, являются ли задачи из //эффективно разрешимыми// остается открытым. Класс - аналог класса для задач, ответ на которые представляется не битовым значением, а натуральным числом. Подсчет числа сертификатов как минимум столь же сложно, как и проверка наличия сертификата, а значит, если доказать равенство , то автоматически будет доказано . Однако из вовсе не следует . Если , то , так как подсчет числа сертификатов может быть выполнен за полиномиальную память.
Примеры задач из #P
- #SAT
- - имея ориентированный граф , посчитать число простых циклов. Аналогичная задача, отвечающая на вопрос, существует ли в заданном ориентированном графе простой цикл, может быть решена за линейное время при помощи поиска в ширину. Проблема подсчета значительно сложнее.
| Теорема: |
Если , тогда . |
| Доказательство: |
|
Для графа с n вершинами построим граф такой, что в есть Гамильтонов цикл тогда и только тогда, когда в есть циклов. Чтобы получить , заменим каждое ребро из на блок . Блок состоит из уровней. представляет из себя ацикличный граф, а значит циклы в соответствуют циклам в . Кроме того, существует различных путей между и внутри блока, следовательно простому циклу длины в соответствует цикл длины в .
|
Класс #P-Complete
| Определение: |
| является -полной, если и получение для алгоритма работающего за полиномиальное время влечет равенство . |
Для более формального определения будем использовать МТ с оракулом . Для нашего типа задач оракул будет отвечать на вопросы вида
