Классы Sharp P, Sharp P-Complete
Класс #P
| Определение: |
| представляет класс задач, решением которых является количество успешных (завершающихся в допускающих состояниях) путей вычислений для недетерминированной МТ, работающей за полиномиальное время. Отличается от большинства рассмотренных классов тем, что задачи требуют в качестве ответа не или , а натуральное число.
Более формально: принадлежит , если существует и машина Тьюринга такая, что для любого . |
Вопрос, являются ли задачи из //эффективно разрешимыми// остается открытым. Класс - аналог класса для задач, ответ на которые представляется не битовым значением, а натуральным числом. Подсчет числа сертификатов как минимум столь же сложно, как и проверка наличия сертификата, а значит, если доказать равенство , то автоматически будет доказано . Однако из вовсе не следует . Если , то , так как подсчет числа сертификатов может быть выполнен за полиномиальную память.
Примеры задач из #P
- #SAT
- - имея ориентированный граф , посчитать число простых циклов. Аналогичная задача, отвечающая на вопрос, существует ли в заданном ориентированном графе простой цикл, может быть решена за линейное время при помощи поиска в ширину. Проблема подсчета значительно сложнее.
| Теорема: |
Если , тогда . |
| Доказательство: |
|
Для графа с n вершинами построим граф такой, что в есть Гамильтонов цикл тогда и только тогда, когда в есть циклов. Чтобы получить , заменим каждое ребро из на блок . Блок состоит из уровней. представляет из себя ацикличный граф, а значит циклы в соответствуют циклам в . Кроме того, существует различных путей между и внутри блока, следовательно простому циклу длины в соответствует цикл длины в .
|
Класс #P-Complete
| Определение: |
| является -полной, если и получение для алгоритма работающего за полиномиальное время влечет равенство . |
Для более формального определения будем использовать МТ с оракулом . Для нашего типа задач оракул будет отвечать на вопросы вида
