<?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=178.162.101.7&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=178.162.101.7&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/178.162.101.7"/>
		<updated>2026-05-13T22:26:57Z</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_P&amp;diff=23330</id>
		<title>Класс P</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_P&amp;diff=23330"/>
				<updated>2012-06-03T07:46:24Z</updated>
		
		<summary type="html">&lt;p&gt;178.162.101.7: /* Свойства класса P */ s/очевидно/понятно/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{P} = \bigcup\limits_{p \in poly}DTIME(p(n))&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[[Сложностные классы. Вычисления с оракулом]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Итого, язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; лежит в классе &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует такая детерминированная машина Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
# &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; завершает свою работу за полиномиальное время на любых входных данных;&lt;br /&gt;
# если на вход машине &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; подать слово &amp;lt;tex&amp;gt;l \in L&amp;lt;/tex&amp;gt;, то она допустит его;&lt;br /&gt;
# если на вход машине &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; подать слово &amp;lt;tex&amp;gt;l \not\in L&amp;lt;/tex&amp;gt;, то она не допустит его.&lt;br /&gt;
&lt;br /&gt;
== Свойства класса P ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; замкнут относительно [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сведения по Карпу]]. &amp;lt;tex&amp;gt;L \in \mathrm{P}, M \le L \Rightarrow M \in \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; {{---}} разрешитель &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, работающий за полиномиальное время.&lt;br /&gt;
&amp;lt;tex&amp;gt; (M \leq L) \overset{\underset{\mathrm{def}}{}}{\iff} ( \exists f \in \mathrm{\widetilde{P}} : w \in M \Leftrightarrow f(w) \in L ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(w):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     if (&amp;lt;tex&amp;gt;p(f(w))&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         return true&lt;br /&gt;
     return false&lt;br /&gt;
Разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; работает за полиномиальное время, так как композиция полиномов есть полином.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;D \subseteq \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^D&amp;lt;/tex&amp;gt;. В частности, из этого следует, что &amp;lt;tex&amp;gt;\mathrm{P}=\mathrm{P^P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
Понятно, что &amp;lt;tex&amp;gt;\mathrm{P} \subset \mathrm{P}^D&amp;lt;/tex&amp;gt;. Докажем, что &amp;lt;tex&amp;gt;\mathrm{P}^D \subset \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L \in \mathrm{P}^D \Rightarrow \exists A \in D: L \in \mathrm{P}^A&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;L&amp;lt;/tex&amp;gt;, работающий за полиномиальное время &amp;lt;tex&amp;gt;f(n)&amp;lt;/tex&amp;gt; и использующий оракул языка &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; {{---}} разрешитель &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, работающий за полиномиальное время &amp;lt;tex&amp;gt;g(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Представим себе разрешитель &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, работающий как &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, но использующий &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; вместо оракула &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Его время работы ограничено сверху значением &amp;lt;tex&amp;gt;f(n) + \sum\limits_{i=1}^{f(n)} g(f(n)) = f(n) + f(n) g(f(n))&amp;lt;/tex&amp;gt;, что является полиномом (обращений к &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; максимум &amp;lt;tex&amp;gt;f(n)&amp;lt;/tex&amp;gt;; на вход для &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; можем подать максимум &amp;lt;tex&amp;gt;f(n)&amp;lt;/tex&amp;gt; данных, так как больше сгенерить бы не успели). Значит, &amp;lt;tex&amp;gt;L \in \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; замкнут относительно операций объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in \mathrm{P}&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in \mathrm{P}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in \mathrm{P}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in \mathrm{P}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in \mathrm{P}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
Докажем замкнутость замыкания Клини. Остальные доказательства строятся аналогично.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; {{---}} разрешитель &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;, работающий за полиномиальное время. Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(w):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;n = |w|&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;endPoses = \{0\}&amp;lt;/tex&amp;gt;  //позиции, где могут заканчиваться слова, принадлежащие &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
     for (&amp;lt;tex&amp;gt;i = 1 \ldots n&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         for (&amp;lt;tex&amp;gt;j \in endPoses&amp;lt;/tex&amp;gt;)&lt;br /&gt;
             if (&amp;lt;tex&amp;gt;p(w[j+1 \ldots i])&amp;lt;/tex&amp;gt;) {&lt;br /&gt;
                 if (&amp;lt;tex&amp;gt;i = n&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                     return true&lt;br /&gt;
                 &amp;lt;tex&amp;gt;endPoses&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\cup = \{i\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
             }&lt;br /&gt;
     return false&lt;br /&gt;
Худшая оценка времени работы разрешителя &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; равна &amp;lt;tex&amp;gt;n^2 O(p(w))&amp;lt;/tex&amp;gt;, так как в множестве &amp;lt;tex&amp;gt;endPoses&amp;lt;/tex&amp;gt; может быть максимум &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов, значит итерироваться по множеству можно за &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, если реализовать его на основе битового массива, например; при этом операция добавления элемента в множество будет работать за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. Итого, разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; работает за полиномиальное время (так как произведение полиномов есть полином). Значит &amp;lt;tex&amp;gt;L_1^* \in \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;\mathrm{Reg} \subset \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{Reg} \subset \mathrm{TS}(n, 1) \subset \mathrm{P}&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;\mathrm{TS}&amp;lt;/tex&amp;gt; {{---}} ограничение и по времени, и по памяти.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов CFL и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободных языков]] входит в класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;\mathrm{CFL} \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CFL} \subset \mathrm{TS}(n^3, n^2) \subset \mathrm{P}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры задач и языков из P ==&lt;br /&gt;
Класс задач, разрешимых за полиномиальное время достаточно широк, вот несколько его представителей:&lt;br /&gt;
* определение связности графов;&lt;br /&gt;
* вычисление наибольшего общего делителя;&lt;br /&gt;
* задача линейного программирования;&lt;br /&gt;
* проверка простоты числа.&amp;lt;ref&amp;gt;[http://www.cse.iitk.ac.in/~manindra/algebra/primality_v6.pdf M.Argawal, N.Kayal, N.Saxena, &amp;quot;Primes is in P&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По [[теорема о временной иерархии|теореме о временной иерархии]] существуют задачи и не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>178.162.101.7</name></author>	</entry>

	</feed>