<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.59.5.177&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.59.5.177&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/176.59.5.177"/>
		<updated>2026-06-12T20:03:32Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B_Sharp_P,_Sharp_P-Complete&amp;diff=60606</id>
		<title>Классы Sharp P, Sharp P-Complete</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B_Sharp_P,_Sharp_P-Complete&amp;diff=60606"/>
				<updated>2017-03-24T07:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;176.59.5.177: /* Примеры задач из #P */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Класс #P ==&lt;br /&gt;
{{Определение&lt;br /&gt;
 |definition =&amp;lt;tex&amp;gt;\#P&amp;lt;/tex&amp;gt; представляет класс задач, решением которых является количество успешных (завершающихся в допускающих состояниях) путей вычислений для недетерминированной МТ, работающей за полиномиальное время. Отличается от большинства рассмотренных классов тем, что задачи требуют в качестве ответа не  &amp;lt;tex&amp;gt;``0&amp;quot;&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;``1&amp;quot;&amp;lt;/tex&amp;gt;, а натуральное число.&lt;br /&gt;
&amp;lt;br&amp;gt; Более формально: &amp;lt;tex&amp;gt;f : \{0,1\}^*  \rightarrow \mathbb{N}&amp;lt;/tex&amp;gt; принадлежит &amp;lt;tex&amp;gt;\#P&amp;lt;/tex&amp;gt;, если существует &amp;lt;tex&amp;gt;p \in Poly&amp;lt;/tex&amp;gt; и  машина Тьюринга &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; такая, что для любого &amp;lt;tex&amp;gt;x \in \{0,1\}^* : f(x) = | \{y \in \{0,1\}^{p(|x|)} : M(x,y) = 1 \} |&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Вопрос, являются ли задачи из &amp;lt;tex&amp;gt;\#P&amp;lt;/tex&amp;gt;  //эффективно разрешимыми// остается открытым. Класс &amp;lt;tex&amp;gt;FP&amp;lt;/tex&amp;gt; - аналог класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; для задач, ответ на которые представляется не битовым значением, а натуральным числом. Подсчет числа сертификатов как минимум столь же сложно, как и проверка наличия сертификата, а значит, если доказать равенство &amp;lt;tex&amp;gt;\#P=FP&amp;lt;/tex&amp;gt;, то автоматически будет доказано &amp;lt;tex&amp;gt;NP=P&amp;lt;/tex&amp;gt;. Однако из  &amp;lt;tex&amp;gt;NP=P&amp;lt;/tex&amp;gt; вовсе не следует  &amp;lt;tex&amp;gt;\#P=FP&amp;lt;/tex&amp;gt;. Если  &amp;lt;tex&amp;gt;PSPACE  = P&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;\#P=FP&amp;lt;/tex&amp;gt;, так как подсчет числа сертификатов может быть выполнен за полиномиальную память.&lt;br /&gt;
&lt;br /&gt;
== Примеры задач из #P ==&lt;br /&gt;
*[[#SAT]]&lt;br /&gt;
* &amp;lt;tex&amp;gt;\#CYCLE&amp;lt;/tex&amp;gt; - имея ориентированный граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, посчитать число простых циклов. Аналогичная задача, отвечающая на вопрос, существует ли в заданном ориентированном графе простой цикл, может быть решена за линейное время при помощи поиска в ширину. Проблема подсчета значительно сложнее.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\#CYCLE \in FP&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;P=NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:dir_grap.png|thumb|300px| &amp;lt;tex&amp;gt;deg^{-}+deg^{+}=10=2\cdot |E|&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
Для графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с n вершинами построим граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; такой, что в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; есть Гамильтонов цикл тогда и только тогда, когда в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; есть &amp;lt;tex&amp;gt;n^{n^2}&amp;lt;/tex&amp;gt; циклов. Чтобы получить &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, заменим каждое ребро &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; на блок &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;.  Блок состоит из &amp;lt;tex&amp;gt;m = n * \log{n} + 1&amp;lt;/tex&amp;gt; уровней. &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; представляет из себя ацикличный граф, а значит циклы в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; соответствуют циклам в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Кроме того, существует &amp;lt;tex&amp;gt;2^m&amp;lt;/tex&amp;gt; различных путей между &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; внутри блока, следовательно простому циклу длины &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; соответствует цикл длины &amp;lt;tex&amp;gt;2^{(ml)}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Заметим, что если граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; содержит гамильтонов цикл, то в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; существует минимум &amp;lt;tex&amp;gt;2^{m(n-1)} &amp;gt; n^{n^2}&amp;lt;/tex&amp;gt; циклов.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Проверим в обратную сторону. Если в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; не существует Гамильтонова цикла, то самый длинный цикл в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеет длину не больше &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; и число циклов не может превысить &amp;lt;tex&amp;gt;n^{n-1}&amp;lt;/tex&amp;gt;. Таким образом, в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; будет не более чем &amp;lt;tex&amp;gt;(2^m)^{n-1} * n^{n-1} &amp;lt; n^{n^2}&amp;lt;/tex&amp;gt; циклов.му входящих и на единицу сумму исходящих степеней. Таким образом, сумма входящих и исходящих степеней всех вершин ориентированного графа чётна и равна удвоенному числу рёбер.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Преобразование графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; можно выполнить за полином от количества вершин. Таким образом, если &amp;lt;tex&amp;gt;\#CYCLE \in FP&amp;lt;/tex&amp;gt;, тогда сразу же &amp;lt;tex&amp;gt;HAM \in P&amp;lt;/tex&amp;gt;. А так как&amp;lt;tex&amp;gt; HAM \in NP&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;NP = P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Класс #P-Complete==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition= &amp;lt;tex&amp;gt;f : \{0, 1\}^* \rightarrow  \{0, 1\}^*&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\#P&amp;lt;/tex&amp;gt;-полной, если &amp;lt;tex&amp;gt; f  \in \#P&amp;lt;/tex&amp;gt;  и получение для &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; алгоритма работающего за полиномиальное время влечет равенство &amp;lt;tex&amp;gt; \#P=FP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Для более формального определения будем использовать МТ с оракулом &amp;lt;tex&amp;gt; О = \{\big \langle x, i \big \rangle: f(x)_i = 1\}&amp;lt;/tex&amp;gt;. Для нашего типа задач оракул будет отвечать на вопросы вида&lt;/div&gt;</summary>
		<author><name>176.59.5.177</name></author>	</entry>

	</feed>