<?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=Tsar</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=Tsar"/>
		<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/Tsar"/>
		<updated>2026-06-11T20:17:37Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Tsar&amp;diff=40555</id>
		<title>Участник:Tsar</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Tsar&amp;diff=40555"/>
				<updated>2014-10-31T08:39:29Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: I am year2009&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Волков Иоанн Русланович (year2009)&lt;br /&gt;
&lt;br /&gt;
volkov.ioann@gmail.com&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=32511</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=32511"/>
				<updated>2013-06-15T09:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Правильные тирешки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Добро пожаловать на сайт [[Вики-конспекты|вики-конспектов]]!&lt;br /&gt;
&lt;br /&gt;
= Проверяемые конспекты =&lt;br /&gt;
&lt;br /&gt;
==Преподаватель [[Андрей Сергеевич Станкевич]]==&lt;br /&gt;
&lt;br /&gt;
* [[Дискретная математика, алгоритмы и структуры данных|Дискретная математика, алгоритмы и структуры данных — 1, 2, 3 и 4 семестр]]&lt;br /&gt;
* [[Теория формальных языков|Теория формальных языков — 5 семестр]]&lt;br /&gt;
* [[Теория сложности|Теория сложности — 6 семестр]]&lt;br /&gt;
* [[Методы трансляции|Методы трансляции — 6 семестр]]&lt;br /&gt;
&lt;br /&gt;
==Преподаватель [[Федор Николаевич Царев]]==&lt;br /&gt;
* [[Эволюционные алгоритмы|Эволюционные алгоритмы — 10 семестр]]&lt;br /&gt;
&lt;br /&gt;
==Преподаватель [[Корнеев Георгий Александрович]]==&lt;br /&gt;
* [[Язык программирования Java|Язык программирования Java — 2 семестр]]&lt;br /&gt;
&lt;br /&gt;
= Непроверяемые конспекты =&lt;br /&gt;
&lt;br /&gt;
*[[Алгебра и геометрия 1 курс | Алгебра и геометрия — 1, 2 семестр]]&lt;br /&gt;
*[[Математический анализ 1 курс | Математический анализ — 1, 2 семестр]]&lt;br /&gt;
*[[Математический анализ 2 курс | Математический анализ — 3, 4 семестр]]&lt;br /&gt;
*[[Математическая логика|Математическая логика — 3 семестр]]&lt;br /&gt;
*[[Участник:Qwerty787788/плюсы3сем | С++ — 3 семестр]]&lt;br /&gt;
*[[Вычислительная геометрия|Вычислительная геометрия — 3, 4 семестр]]&lt;br /&gt;
*[[Assembler|Assembler — 4 семестр]]&lt;br /&gt;
*[[Алгоритмы алгебры и теории чисел|Алгоритмы алгебры и теории чисел — 4 семестр]]&lt;br /&gt;
*[[Функциональный_анализ_3_курс | Функциональный анализ — 5, 6 семестр]]&lt;br /&gt;
*[[Параллельное программирование|Параллельное программирование — 6 семестр]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26902</id>
		<title>Теорема Лаутемана</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26902"/>
				<updated>2012-06-25T11:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Теорема */ Там вроде не нужно &amp;quot;-2&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Лемма&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{coBPP}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof =&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Существует такая программа &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Покажем, что &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Для этого рассмотрим следующую программу:&lt;br /&gt;
 &amp;lt;tex&amp;gt;p'(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;return (1 - p(x));&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;P(p'(x) = [x \in \overline{L}]) = P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{BPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{coBPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{coBPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{coBPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{coBPP} \subset \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| about = Лаутеман&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof = &lt;br /&gt;
&lt;br /&gt;
Из того, что класс &amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; замкнут относительно дополнения и &amp;lt;tex&amp;gt;\mathrm{co\Sigma_2} = \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;, следует, что достаточно доказать включение &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; можно определить как множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует «много» таких вероятностных лент &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;M(x,y)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — [[Вероятностные вычисления. Вероятностная машина Тьюринга | вероятностная машина Тьюринга]] для &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; — множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует такой &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что для любого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;R(x, y, z)&amp;lt;/tex&amp;gt;. Таким образом, необходимо уметь записывать «существует много» с помощью кванторов &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;G = \{0, 1\}^t&amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Определим операцию &amp;lt;tex&amp;gt;\oplus&amp;lt;/tex&amp;gt; над словами из этого языка как побитовое исключающее или.&lt;br /&gt;
&lt;br /&gt;
Назовем &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, содержащееся в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим, если существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;. Иначе будем называть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;|X| &amp;lt; \frac{2^t}{k}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким (так как &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; копий &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; не смогут покрыть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;). Найдем достаточное условие, при котором &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим.&lt;br /&gt;
&lt;br /&gt;
Воспользуемся утверждением, что если вероятность &amp;lt;tex&amp;gt;P(x \in A) &amp;gt; 0&amp;lt;/tex&amp;gt;, то существует &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Для этого &lt;br /&gt;
выберем случайно набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P(\bigcup\limits_{i=1}^{k} g_i \oplus X \not = G) = P(\exists y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = P(\bigvee\limits_{i=1}^{2^t} y_i \not \in \bigcup\limits_{j=1}^{k} g_j \oplus X)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\leqslant 2^t P(y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = 2^t P(\bigwedge\limits_{i=1}^{k} y \oplus g_i \not \in X) = 2^t \left(P(y \not \in X)\right)^k = 2^t \left(1 - \frac{|X|}{2^t}\right)^k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;2^t\left(1 - \frac{|X|}{2^t}\right)^k &amp;lt; 1&amp;lt;/tex&amp;gt;, то существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Тогда существует вероятностная машина Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, такая что &amp;lt;tex&amp;gt;P(m(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;r(n)&amp;lt;/tex&amp;gt; бит случайной ленты. По аналогии c [[Классы BPP и PP|доказательством]] &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{BPP_{strong}}&amp;lt;/tex&amp;gt;, построим машину &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, которая запускает &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; достаточное число раз, чтобы получить вероятность ошибки &amp;lt;tex&amp;gt;\frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; это некоторый полином, который будет определён позднее. Будет достаточно &amp;lt;tex&amp;gt;c p(n)^2&amp;lt;/tex&amp;gt; запусков. Соответственно, &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;t(n) = c r(n) p(n)^2&amp;lt;/tex&amp;gt; бит случайной ленты, &amp;lt;tex&amp;gt;P(M(x) = [x \in L]) \geqslant 1 - \frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. Возьмем &amp;lt;tex&amp;gt;G = \{0, 1\}^{t(n)}&amp;lt;/tex&amp;gt;. Рассмотрим множество &amp;lt;tex&amp;gt;A_x = \{r \in G \bigm| M(x,r) = 1\}&amp;lt;/tex&amp;gt;. Подберем теперь &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \geqslant 1 - \frac{1}{2^{p(n)}} \Rightarrow |A_x| \geqslant 2^{t(n)} \left( 1 - \frac{1}{2^{p(n)}} \right)&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;2^{t(n)} \left( 1 - \frac{|A_x|}{2^{t(n)}} \right)^k \leqslant 2^{t(n) - kp(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим потребуем &amp;lt;tex&amp;gt;2^{t(n) - kp(n)} &amp;lt; 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \not \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \leqslant \frac{1}{2^{p(n)}} \Rightarrow |A_x| \leqslant 2^{t(n) - p(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким потребуем &amp;lt;tex&amp;gt;2^{t(n) - p(n)} &amp;lt; \frac{2^{t(n)}}{k}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выберем &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt; (то есть &amp;lt;tex&amp;gt;c r(n) p(n) &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;) и &amp;lt;tex&amp;gt;k = \lceil \frac{t(n)}{p(n)} \rceil + 1 = c r(n) p(n) + 1&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; k &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;x \in L \Leftrightarrow \exists \{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt; : &amp;lt;tex&amp;gt;\forall y \in G&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\left( \bigvee\limits_{i=1}^{k} y \in g_i \oplus A_x \right) &amp;lt;/tex&amp;gt;. Заметив, что &amp;lt;tex&amp;gt;y \in g_i \oplus A_x \Leftrightarrow y \oplus g_i \in A_x \Leftrightarrow M(x, y \oplus g_i)&amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt;L \in \Sigma_2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Вероятностные вычисления. Вероятностная машина Тьюринга]]&lt;br /&gt;
*[[Классы PH, Σ и Π]]&lt;br /&gt;
*[[Классы BPPweak и BPPstrong]]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Sanjeev Arora, Boaz Barak''. [http://www.cs.princeton.edu/theory/complexity Computational Complexity: A Modern Approach]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26900</id>
		<title>Теорема Лаутемана</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26900"/>
				<updated>2012-06-25T11:25:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Теорема */ Поправки, вроде финальные для этого куска&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Лемма&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{coBPP}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof =&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Существует такая программа &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Покажем, что &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Для этого рассмотрим следующую программу:&lt;br /&gt;
 &amp;lt;tex&amp;gt;p'(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;return (1 - p(x));&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;P(p'(x) = [x \in \overline{L}]) = P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{BPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{coBPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{coBPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{coBPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{coBPP} \subset \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| about = Лаутеман&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof = &lt;br /&gt;
&lt;br /&gt;
Из того, что класс &amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; замкнут относительно дополнения и &amp;lt;tex&amp;gt;\mathrm{co\Sigma_2} = \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;, следует, что достаточно доказать включение &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; можно определить как множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует «много» таких вероятностных лент &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;M(x,y)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — [[Вероятностные вычисления. Вероятностная машина Тьюринга | вероятностная машина Тьюринга]] для &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; — множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует такой &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что для любого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;R(x, y, z)&amp;lt;/tex&amp;gt;. Таким образом, необходимо уметь записывать «существует много» с помощью кванторов &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;G = \{0, 1\}^t&amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Определим операцию &amp;lt;tex&amp;gt;\oplus&amp;lt;/tex&amp;gt; над словами из этого языка как побитовое исключающее или.&lt;br /&gt;
&lt;br /&gt;
Назовем &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, содержащееся в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим, если существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;. Иначе будем называть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;|X| &amp;lt; \frac{2^t}{k}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким (так как &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; копий &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; не смогут покрыть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;). Найдем достаточное условие, при котором &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим.&lt;br /&gt;
&lt;br /&gt;
Воспользуемся утверждением, что если вероятность &amp;lt;tex&amp;gt;P(x \in A) &amp;gt; 0&amp;lt;/tex&amp;gt;, то существует &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Для этого &lt;br /&gt;
выберем случайно набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P(\bigcup\limits_{i=1}^{k} g_i \oplus X \not = G) = P(\exists y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = P(\bigvee\limits_{i=1}^{2^t} y_i \not \in \bigcup\limits_{j=1}^{k} g_j \oplus X)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\leqslant 2^t P(y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = 2^t P(\bigwedge\limits_{i=1}^{k} y \oplus g_i \not \in X) = 2^t \left(P(y \not \in X)\right)^k = 2^t \left(1 - \frac{|X|}{2^t}\right)^k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;2^t\left(1 - \frac{|X|}{2^t}\right)^k &amp;lt; 1&amp;lt;/tex&amp;gt;, то существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Тогда существует вероятностная машина Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, такая что &amp;lt;tex&amp;gt;P(m(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;r(n)&amp;lt;/tex&amp;gt; бит случайной ленты. По аналогии c [[Классы BPP и PP|доказательством]] &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{BPP_{strong}}&amp;lt;/tex&amp;gt;, построим машину &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, которая запускает &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; достаточное число раз, чтобы получить вероятность ошибки &amp;lt;tex&amp;gt;\frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; это некоторый полином, который будет определён позднее. Будет достаточно &amp;lt;tex&amp;gt;c p(n)^2&amp;lt;/tex&amp;gt; запусков. Соответственно, &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;t(n) = c r(n) p(n)^2&amp;lt;/tex&amp;gt; бит случайной ленты, &amp;lt;tex&amp;gt;P(M(x) = [x \in L]) \geqslant 1 - \frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. Возьмем &amp;lt;tex&amp;gt;G = \{0, 1\}^{t(n)}&amp;lt;/tex&amp;gt;. Рассмотрим множество &amp;lt;tex&amp;gt;A_x = \{r \in G \bigm| M(x,r) = 1\}&amp;lt;/tex&amp;gt;. Подберем теперь &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \geqslant 1 - \frac{1}{2^{p(n)}} \Rightarrow |A_x| \geqslant 2^{t(n)} \left( 1 - \frac{1}{2^{p(n)}} \right)&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;2^{t(n)} \left( 1 - \frac{|A_x|}{2^{t(n)}} \right)^k \leqslant 2^{t(n) - kp(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим потребуем &amp;lt;tex&amp;gt;2^{t(n) - kp(n)} &amp;lt; 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \not \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \leqslant \frac{1}{2^{p(n)}} \Rightarrow |A_x| \leqslant 2^{t(n) - p(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким потребуем &amp;lt;tex&amp;gt;2^{t(n) - p(n)} &amp;lt; \frac{2^{t(n)}}{k}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выберем &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; 2^{p(n)} - 2&amp;lt;/tex&amp;gt; (то есть &amp;lt;tex&amp;gt;c r(n) p(n) &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;) и &amp;lt;tex&amp;gt;k = \lceil \frac{t(n)}{p(n)} \rceil + 1 = c r(n) p(n) + 1&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; k &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;x \in L \Leftrightarrow \exists \{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt; : &amp;lt;tex&amp;gt;\forall y \in G&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\left( \bigvee\limits_{i=1}^{k} y \in g_i \oplus A_x \right) &amp;lt;/tex&amp;gt;. Заметив, что &amp;lt;tex&amp;gt;y \in g_i \oplus A_x \Leftrightarrow y \oplus g_i \in A_x \Leftrightarrow M(x, y \oplus g_i)&amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt;L \in \Sigma_2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Вероятностные вычисления. Вероятностная машина Тьюринга]]&lt;br /&gt;
*[[Классы PH, Σ и Π]]&lt;br /&gt;
*[[Классы BPPweak и BPPstrong]]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Sanjeev Arora, Boaz Barak''. [http://www.cs.princeton.edu/theory/complexity Computational Complexity: A Modern Approach]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26898</id>
		<title>Теорема Лаутемана</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26898"/>
				<updated>2012-06-25T11:21:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Теорема */ Поправки продолжаются, ещё не всё&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Лемма&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{coBPP}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof =&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Существует такая программа &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Покажем, что &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Для этого рассмотрим следующую программу:&lt;br /&gt;
 &amp;lt;tex&amp;gt;p'(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;return (1 - p(x));&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;P(p'(x) = [x \in \overline{L}]) = P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{BPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{coBPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{coBPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{coBPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{coBPP} \subset \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| about = Лаутеман&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof = &lt;br /&gt;
&lt;br /&gt;
Из того, что класс &amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; замкнут относительно дополнения и &amp;lt;tex&amp;gt;\mathrm{co\Sigma_2} = \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;, следует, что достаточно доказать включение &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; можно определить как множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует «много» таких вероятностных лент &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;M(x,y)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — [[Вероятностные вычисления. Вероятностная машина Тьюринга | вероятностная машина Тьюринга]] для &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; — множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует такой &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что для любого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;R(x, y, z)&amp;lt;/tex&amp;gt;. Таким образом, необходимо уметь записывать «существует много» с помощью кванторов &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;G = \{0, 1\}^t&amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Определим операцию &amp;lt;tex&amp;gt;\oplus&amp;lt;/tex&amp;gt; над словами из этого языка как побитовое исключающее или.&lt;br /&gt;
&lt;br /&gt;
Назовем &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, содержащееся в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим, если существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;. Иначе будем называть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;|X| &amp;lt; \frac{2^t}{k}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким (так как &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; копий &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; не смогут покрыть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;). Найдем достаточное условие, при котором &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим.&lt;br /&gt;
&lt;br /&gt;
Воспользуемся утверждением, что если вероятность &amp;lt;tex&amp;gt;P(x \in A) &amp;gt; 0&amp;lt;/tex&amp;gt;, то существует &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Для этого &lt;br /&gt;
выберем случайно набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P(\bigcup\limits_{i=1}^{k} g_i \oplus X \not = G) = P(\exists y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = P(\bigvee\limits_{i=1}^{2^t} y_i \not \in \bigcup\limits_{j=1}^{k} g_j \oplus X)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\leqslant 2^t P(y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = 2^t P(\bigwedge\limits_{i=1}^{k} y \oplus g_i \not \in X) = 2^t \left(P(y \not \in X)\right)^k = 2^t \left(1 - \frac{|X|}{2^t}\right)^k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;2^t\left(1 - \frac{|X|}{2^t}\right)^k &amp;lt; 1&amp;lt;/tex&amp;gt;, то существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Тогда существует вероятностная машина Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, такая что &amp;lt;tex&amp;gt;P(m(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;r(n)&amp;lt;/tex&amp;gt; бит случайной ленты. По аналогии c [[Классы BPP и PP|доказательством]] &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{BPP_{strong}}&amp;lt;/tex&amp;gt;, построим машину &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, которая запускает &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; достаточное число раз, чтобы получить вероятность ошибки &amp;lt;tex&amp;gt;\frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; это некоторый полином, который будет определён позднее. Будет достаточно &amp;lt;tex&amp;gt;c p(n)^2&amp;lt;/tex&amp;gt; запусков. Соответственно, &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;t(n) = c r(n) p(n)^2&amp;lt;/tex&amp;gt; бит случайной ленты, &amp;lt;tex&amp;gt;P(M(x) = [x \in L]) \geqslant 1 - \frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. Возьмем &amp;lt;tex&amp;gt;G = \{0, 1\}^{t(n)}&amp;lt;/tex&amp;gt;. Рассмотрим множество &amp;lt;tex&amp;gt;A_x = \{r \in G \bigm| M(x,r) = 1\}&amp;lt;/tex&amp;gt;. Подберем теперь &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \geqslant 1 - \frac{1}{2^{p(n)}} \Rightarrow |A_x| \geqslant 2^{t(n)} \left( 1 - \frac{1}{2^{p(n)}} \right)&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;2^{t(n)} \left( 1 - \frac{|A_x|}{2^{t(n)}} \right)^k \leqslant 2^{t(n) - kp(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим потребуем &amp;lt;tex&amp;gt;2^{t(n) - kp(n)} &amp;lt; 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \not \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{t(n)}} \leqslant \frac{1}{2^{p(n)}} \Rightarrow |A_x| \leqslant 2^{t(n) - p(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким потребуем &amp;lt;tex&amp;gt;2^{t(n) - p(n)} &amp;lt; \frac{2^{t(n)}}{k}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выберем &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; 2^{p(n)} - 2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k = \lceil \frac{t(n)}{p(n)} \rceil + 1&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\frac{t(n)}{p(n)} &amp;lt; k &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;x \in L \Leftrightarrow \exists \{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt; : &amp;lt;tex&amp;gt;\forall y \in G&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\left( \bigvee\limits_{i=1}^{k} y \in g_i \oplus A_x \right) &amp;lt;/tex&amp;gt;. Заметив, что &amp;lt;tex&amp;gt;y \in g_i \oplus A_x \Leftrightarrow y \oplus g_i \in A_x \Leftrightarrow M(x, y \oplus g_i)&amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt;L \in \Sigma_2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Вероятностные вычисления. Вероятностная машина Тьюринга]]&lt;br /&gt;
*[[Классы PH, Σ и Π]]&lt;br /&gt;
*[[Классы BPPweak и BPPstrong]]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Sanjeev Arora, Boaz Barak''. [http://www.cs.princeton.edu/theory/complexity Computational Complexity: A Modern Approach]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26897</id>
		<title>Теорема Лаутемана</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D1%83%D1%82%D0%B5%D0%BC%D0%B0%D0%BD%D0%B0&amp;diff=26897"/>
				<updated>2012-06-25T11:09:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Попытка исправить&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Лемма&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{coBPP}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof =&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Существует такая программа &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Покажем, что &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Для этого рассмотрим следующую программу:&lt;br /&gt;
 &amp;lt;tex&amp;gt;p'(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;return (1 - p(x));&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;P(p'(x) = [x \in \overline{L}]) = P(p(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;\overline{L} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{BPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{coBPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{coBPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;L \in \mathrm{coBPP} \Rightarrow \overline{L} \in \mathrm{BPP} \Rightarrow L = \overline{\overline{L}} \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\mathrm{coBPP} \subset \mathrm{BPP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| about = Лаутеман&lt;br /&gt;
| statement = &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
| proof = &lt;br /&gt;
&lt;br /&gt;
Из того, что класс &amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; замкнут относительно дополнения и &amp;lt;tex&amp;gt;\mathrm{co\Sigma_2} = \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;, следует, что достаточно доказать включение &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{BPP}&amp;lt;/tex&amp;gt; можно определить как множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует «много» таких вероятностных лент &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;M(x,y)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — [[Вероятностные вычисления. Вероятностная машина Тьюринга | вероятностная машина Тьюринга]] для &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; — множество таких языков &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt; тогда и только тогда, когда существует такой &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, что для любого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;R(x, y, z)&amp;lt;/tex&amp;gt;. Таким образом, необходимо уметь записывать «существует много» с помощью кванторов &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;G = \{0, 1\}^t&amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Определим операцию &amp;lt;tex&amp;gt;\oplus&amp;lt;/tex&amp;gt; над словами из этого языка как побитовое исключающее или.&lt;br /&gt;
&lt;br /&gt;
Назовем &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, содержащееся в &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим, если существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;. Иначе будем называть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;|X| &amp;lt; \frac{2^t}{k}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким (так как &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; копий &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; не смогут покрыть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;). Найдем достаточное условие, при котором &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим.&lt;br /&gt;
&lt;br /&gt;
Воспользуемся утверждением, что если вероятность &amp;lt;tex&amp;gt;P(x \in A) &amp;gt; 0&amp;lt;/tex&amp;gt;, то существует &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Для этого &lt;br /&gt;
выберем случайно набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P(\bigcup\limits_{i=1}^{k} g_i \oplus X \not = G) = P(\exists y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = P(\bigvee\limits_{i=1}^{2^t} y_i \not \in \bigcup\limits_{j=1}^{k} g_j \oplus X)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\leqslant 2^t P(y \not \in \bigcup\limits_{i=1}^{k} g_i \oplus X) = 2^t P(\bigwedge\limits_{i=1}^{k} y \oplus g_i \not \in X) = 2^t \left(P(y \not \in X)\right)^k = 2^t \left(1 - \frac{|X|}{2^t}\right)^k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;2^t\left(1 - \frac{|X|}{2^t}\right)^k &amp;lt; 1&amp;lt;/tex&amp;gt;, то существует такой набор &amp;lt;tex&amp;gt;\{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\bigcup\limits_{i=1}^{k} g_i \oplus X = G&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{BPP}&amp;lt;/tex&amp;gt;. Тогда существует вероятностная машина Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, такая что &amp;lt;tex&amp;gt;P(m(x) = [x \in L]) \geqslant \frac{2}{3}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;r(n)&amp;lt;/tex&amp;gt; бит случайной ленты. По аналогии c [[Классы BPP и PP|доказательством]] &amp;lt;tex&amp;gt;\mathrm{BPP} = \mathrm{BPP_{strong}}&amp;lt;/tex&amp;gt;, построим машину &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, которая запускает &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; достаточное число раз, чтобы получить вероятность ошибки &amp;lt;tex&amp;gt;\frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; это некоторый полином, который будет определён позднее. Будет достаточно &amp;lt;tex&amp;gt;c p(n)^2&amp;lt;/tex&amp;gt; запусков. Соответственно, &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; использует &amp;lt;tex&amp;gt;c r(n) p(n)^2&amp;lt;/tex&amp;gt; бит случайной ленты, &amp;lt;tex&amp;gt;P(M(x) = [x \in L]) \geqslant 1 - \frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. Возьмем &amp;lt;tex&amp;gt;G = \{0, 1\}^{r(n)}&amp;lt;/tex&amp;gt;. Рассмотрим множество &amp;lt;tex&amp;gt;A_x = \{r \in G \bigm| M(x,r) = 1\}&amp;lt;/tex&amp;gt;. Подберем теперь &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{r(n)}} \geqslant 1 - \frac{1}{2^{p(n)}} \Rightarrow |A_x| \geqslant 2^{r(n)} \left( 1 - \frac{1}{2^{p(n)}} \right)&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;2^{r(n)} \left( 1 - \frac{|A_x|}{2^{r(n)}} \right)^k \leqslant 2^{r(n) - kp(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большим потребуем &amp;lt;tex&amp;gt;2^{r(n) - kp(n)} &amp;lt; 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \not \in L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P(M(x) = 1) = \frac{|A_x|}{2^{r(n)}} \leqslant \frac{1}{2^{p(n)}} \Rightarrow |A_x| \leqslant 2^{r(n) - p(n)}&amp;lt;/tex&amp;gt;. Чтобы в этом случае &amp;lt;tex&amp;gt;A_x&amp;lt;/tex&amp;gt; было бы &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-маленьким потребуем &amp;lt;tex&amp;gt;2^{r(n) - p(n)} &amp;lt; \frac{2^{r(n)}}{k}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выберем &amp;lt;tex&amp;gt;p(n)&amp;lt;/tex&amp;gt; так, чтобы &amp;lt;tex&amp;gt;\frac{r(n)}{p(n)} &amp;lt; 2^{p(n)} - 2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k = \lceil \frac{r(n)}{p(n)} \rceil + 1&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;\frac{r(n)}{p(n)} &amp;lt; k &amp;lt; 2^{p(n)}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;x \in L \Leftrightarrow A_x&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-большое.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;x \in L \Leftrightarrow \exists \{g_i\}_{i=1}^{k} \subset G&amp;lt;/tex&amp;gt; : &amp;lt;tex&amp;gt;\forall y \in G&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\left( \bigvee\limits_{i=1}^{k} y \in g_i \oplus A_x \right) &amp;lt;/tex&amp;gt;. Заметив, что &amp;lt;tex&amp;gt;y \in g_i \oplus A_x \Leftrightarrow y \oplus g_i \in A_x \Leftrightarrow M(x, y \oplus g_i)&amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt;L \in \Sigma_2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{BPP} \subset \mathrm{\Sigma_2} \cap \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Вероятностные вычисления. Вероятностная машина Тьюринга]]&lt;br /&gt;
*[[Классы PH, Σ и Π]]&lt;br /&gt;
*[[Классы BPPweak и BPPstrong]]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Sanjeev Arora, Boaz Barak''. [http://www.cs.princeton.edu/theory/complexity Computational Complexity: A Modern Approach]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23812</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=23812"/>
				<updated>2012-06-04T16:16:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* P-полные задачи */ Всё-таки, там ref выглядит страшно&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях не становится шире.&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой физически реализуемый алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
Говоря про &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полноту]], мы, как правило, подразумеваем &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полноту относительно &amp;lt;tex&amp;gt;\widetilde{\mathrm{L}}&amp;lt;/tex&amp;gt;-сведения.&amp;lt;ref&amp;gt;[[Классы L, NL, coNL. NL-полнота задачи о достижимости]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23809</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=23809"/>
				<updated>2012-06-04T16:10:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Мелкие правки&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях не становится шире.&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой физически реализуемый алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
Говоря про &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полноту]], мы, как правило, подразумеваем &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полноту относительно &amp;lt;tex&amp;gt;\widetilde{\mathrm{L}}&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[[Классы L, NL, coNL. NL-полнота задачи о достижимости]]&amp;lt;/ref&amp;gt;-сведения.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23805</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=23805"/>
				<updated>2012-06-04T16:00:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* P-полные задачи */ Дважды ссылка на одно и то же - перебор&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях не становится больше.&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой физически реализуемый алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
Говоря про &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полноту]], мы, как правило, подразумеваем &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полноту относительно &amp;lt;tex&amp;gt;\widetilde{\mathrm{L}}&amp;lt;/tex&amp;gt;-сведения.&amp;lt;ref&amp;gt;[[Классы L, NL, coNL. NL-полнота задачи о достижимости]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23804</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=23804"/>
				<updated>2012-06-04T15:57:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* P-полные задачи */ Параметризуем общее определение вместо своего&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях не становится больше.&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой физически реализуемый алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
Говоря про &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полноту]], мы, как правило, подразумеваем &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полноту]] относительно &amp;lt;tex&amp;gt;\widetilde{\mathrm{L}}&amp;lt;/tex&amp;gt;-сведения.&amp;lt;ref&amp;gt;[[Классы L, NL, coNL. NL-полнота задачи о достижимости]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23802</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=23802"/>
				<updated>2012-06-04T15:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Устойчивость класса P к изменению модели вычислений */ Правки корявости&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях не становится больше.&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой физически реализуемый алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полным]], если:&lt;br /&gt;
# &amp;lt;tex&amp;gt;X \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall Y \in \mathrm{P} \Rightarrow Y \leq_L X&amp;lt;/tex&amp;gt; (то есть любой язык из класса &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сводится]] к &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(log(n))&amp;lt;/tex&amp;gt; памяти).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23797</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=23797"/>
				<updated>2012-06-04T15:41:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Нечто про устойчивость&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;
Машина Тьюринга может симулировать другие модели вычислений (например, языки программирования) с не более чем полиномиальным замедлением. Благодаря этому, класс &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; на этих моделях остаётся таким же (не становится больше).&lt;br /&gt;
&lt;br /&gt;
Согласно [http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B8%D1%81_%D0%A7%D1%91%D1%80%D1%87%D0%B0_%E2%80%94_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 тезису Чёрча-Тьюринга], любой алгоритм можно реализовать на машине Тьюринга. Так что класс &amp;lt;tex&amp;gt;\mathrm{P}&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полным]], если:&lt;br /&gt;
# &amp;lt;tex&amp;gt;X \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall Y \in \mathrm{P} \Rightarrow Y \leq_L X&amp;lt;/tex&amp;gt; (то есть любой язык из класса &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сводится]] к &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(log(n))&amp;lt;/tex&amp;gt; памяти).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23788</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=23788"/>
				<updated>2012-06-04T15:20:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Ссылка на сведение ещё одна&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полным]], если:&lt;br /&gt;
# &amp;lt;tex&amp;gt;X \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall Y \in \mathrm{P} \Rightarrow Y \leq_L X&amp;lt;/tex&amp;gt; (то есть любой язык из класса &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сводится]] к &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(log(n))&amp;lt;/tex&amp;gt; памяти).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23787</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=23787"/>
				<updated>2012-06-04T15:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Ссылка на книгу с доказательством P-полноты CIRCVAL&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полным]], если:&lt;br /&gt;
# &amp;lt;tex&amp;gt;X \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall Y \in \mathrm{P} \Rightarrow Y \leq_L X&amp;lt;/tex&amp;gt; (то есть любой язык из класса &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; сводится к &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(log(n))&amp;lt;/tex&amp;gt; памяти).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&amp;lt;ref&amp;gt;[http://www.math.sc.edu/~cooper/math778C/abct.pdf S.Arora, B.Barak, &amp;quot;Computational Complexity: A Modern Approach&amp;quot;]&amp;lt;/ref&amp;gt;&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23786</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=23786"/>
				<updated>2012-06-04T15:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Пример P-полной задачи */ Определение P-полноты, всё же&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полным]], если:&lt;br /&gt;
# &amp;lt;tex&amp;gt;X \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall Y \in \mathrm{P} \Rightarrow Y \leq_L X&amp;lt;/tex&amp;gt; (то есть любой язык из класса &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; сводится к &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(log(n))&amp;lt;/tex&amp;gt; памяти).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-полная задача.&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23780</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=23780"/>
				<updated>2012-06-04T14:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Добавил что-то по пункту &amp;quot;7&amp;quot; из требований АС&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL = \{\langle C, x_1,\ldots,x_n\rangle \bigm| C(x_1,\ldots,x_n) = 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; это логическая схема.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;CIRCVAL&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;-[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#Определения трудных и полных задач|полная]] задача.&lt;br /&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23768</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=23768"/>
				<updated>2012-06-04T14:22:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Примеры задач и языков из P */ Союз &amp;quot;и&amp;quot; нелеп&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;
== Примеры задач и языков из 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;
Но существуют задачи не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23765</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=23765"/>
				<updated>2012-06-04T14:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Склонение&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;
== Примеры задач и языков из 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;
Но существуют задачи и не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теоремы о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23764</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=23764"/>
				<updated>2012-06-04T14:20:36Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Попытки что-то исправить (пункты от АС №3, 4, 5)&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;
== Примеры задач и языков из 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;
Но существуют задачи и не из &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt;, так как из [[теорема о временной иерархии|теореме о временной иерархии]] следует, что &amp;lt;tex&amp;gt;\exists L \in \mathrm{EXP}\setminus\mathrm{P}&amp;lt;/tex&amp;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;\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;
}}&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;\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;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23670</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=23670"/>
				<updated>2012-06-04T10:49:44Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Замена жаргонизма&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23279</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=23279"/>
				<updated>2012-06-02T18:27:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Попытки пояснить...&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 \subset \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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23276</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=23276"/>
				<updated>2012-06-02T18:07:29Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Так. К ограничению сверху, наверное, нужны ещё пояснения&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 \subset \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;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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23259</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=23259"/>
				<updated>2012-06-02T16:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ + mathrm&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;L \subset \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^L&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;
...появится с минуты на минуту...&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23258</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=23258"/>
				<updated>2012-06-02T15:57:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Тривиальное доказательство первого свойства&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 \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;L \subset \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^L&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;
...появится с минуты на минуту...&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=23255</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=23255"/>
				<updated>2012-06-02T15:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Разбиение свойств на 3 леммы, первые 2 ещё без доказательств&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;
...появится с минуты на минуту...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;L \subset \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^L&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;
...появится с минуты на минуту...&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>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21937</id>
		<title>Обсуждение:Класс P</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21937"/>
				<updated>2012-05-06T10:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* TODO 2 */ Всё сделал&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TODO ==&lt;br /&gt;
* Смысловая фигня:&lt;br /&gt;
** То, что вверху написано — это, насколько я понимаю, определение. Его надо перенести вниз, чтобы оно было после оглавления. Ещё там написана какая-то чушь. Что такое &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в двойном определении, что такое вообще &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt;?&lt;br /&gt;
*** Перенёс и поправил само определение. Лида написала там &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt; когда-то, идейно это тоже верно, как мне кажется. Но теперь я уже занёс то определение, которое нам давал А.С.&lt;br /&gt;
** Определения надо НОРМАЛЬНО оформить. Как и для теорем, для них есть собственный шаблон.&lt;br /&gt;
*** Оформил.&lt;br /&gt;
** Ссылка на определение DTIME.&lt;br /&gt;
*** Очень долго думал, как её туда запилить... Так и не смог ничего разумного придумать. Нужен совет.&lt;br /&gt;
**** Я добавил ссылку. Не самый хороший костыль, конечно. Я ещё подумаю над этим.&lt;br /&gt;
** Что за &amp;lt;tex&amp;gt;L1&amp;lt;/tex&amp;gt;. Проиндексируй нормально. А ещё там во второй строчке текст абсолютно сливается. Исправь.&lt;br /&gt;
*** Проиндексировал. А во второй строчке у меня всё в порядке... Либо я не понял, о чём ты.&lt;br /&gt;
**** Да, там всё теперь норм.&lt;br /&gt;
** Было бы неплохо написать хоть какие-нибудь идеи по поводу доказатеств свойств.&lt;br /&gt;
*** Свойство 1 кажется мне очевидным (если мы знаем тот факт, что сумма и произведение полиномов есть полином). Свойства 2 и 3 доказаны по ссылкам на соответствующие сведения (там есть конкретно рассмотрение этих сведений для задач из класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;).&lt;br /&gt;
**** Мне свойство 1 очевидным не кажется. Особенно какое-нибудь замыкание Клини. Но это несложные факты, поэтому я не прошу полное доказательство.&lt;br /&gt;
***** Написал довольно строгое доказательство замкнутости замыкания Клини. Остальные очень простые, смысла их расписывать не вижу.&lt;br /&gt;
** Ссылка на определение констекстно-свободных языков в формулировке соответствующей теоремы.&lt;br /&gt;
*** Сделал. Заодно и на регулярные языки тоже сделал ссылку.&lt;br /&gt;
** «Легко показать, что, по определению…» → «Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;…»&lt;br /&gt;
*** Ок. Сделал.&lt;br /&gt;
* Остальная фигня:&lt;br /&gt;
** В первом определении после «то есть» двоеточие.&lt;br /&gt;
*** Хорошо, сделал.&lt;br /&gt;
** «Но, по теореме…» Запятая здесь не нужна. Мне кажется, лучше просто выпилить это «но».&lt;br /&gt;
*** Согласен, сделал.&lt;br /&gt;
&lt;br /&gt;
== TODO 2 ==&lt;br /&gt;
* В перечислениях в конце каждого пункта ставится либо точка (если пункт — отдельное предложение), либо точка с запятой (если все пункты — это одно баааальшое предложение). Это я про интерпретацию определния &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** Fixed.&lt;br /&gt;
* У доказательства замкнутости относительно замыкания Клини проблемы с форматированием: начало имеет отступ в «2 таба», а конец — вообще не имеет отступа. Думаю, что лучше это доказательство выделить в отделиную лемму и оформить соответствующе.&lt;br /&gt;
** Done.&lt;br /&gt;
* Будем считать, что мы научились ставить ссылки для текста в техе («примечаниями»). Поэтому в предпоследнем абзаце &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt; можно тоже написать нормально в техе.&lt;br /&gt;
** Fixed.&lt;br /&gt;
* Вставь ссылки на МТ и НМТ. МТ у нас в вики нет, так что эта ссылка — на википедию. Определние НМТ у нас есть.&lt;br /&gt;
** Done.&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21936</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=21936"/>
				<updated>2012-05-06T10:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Задача равенства P и NP */ Ааааа, вот как ссылка пилится норм&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;. Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично).&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Если &amp;lt;tex&amp;gt;L \in P&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;L^* \in 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;, работающий за полиномиальное время. Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;L^*&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^* \in 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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[[NP]]&amp;lt;/ref&amp;gt;, не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая [http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 ДМТ], которая является частным случаем [[Недетерминированные вычисления. Классы NP и Σ₁|НМТ]], а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21935</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=21935"/>
				<updated>2012-05-06T10:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Задача равенства P и NP */ Ссылка на ДМТ и НМТ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;. Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично).&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Если &amp;lt;tex&amp;gt;L \in P&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;L^* \in 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;, работающий за полиномиальное время. Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;L^*&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^* \in 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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[[NP]]&amp;lt;/ref&amp;gt;, не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ&amp;lt;ref&amp;gt;[http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0]&amp;lt;/ref&amp;gt;, которая является частным случаем [[Недетерминированные вычисления. Классы NP и Σ₁|НМТ]], а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21934</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=21934"/>
				<updated>2012-05-06T09:55:16Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: NP в tex'е и ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;. Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично).&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Если &amp;lt;tex&amp;gt;L \in P&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;L^* \in 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;, работающий за полиномиальное время. Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;L^*&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^* \in 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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;[[NP]]&amp;lt;/ref&amp;gt;, не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21933</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=21933"/>
				<updated>2012-05-06T09:53:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Упихал доказательство в отдельную лемму&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;. Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично).&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
Если &amp;lt;tex&amp;gt;L \in P&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;L^* \in 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;, работающий за полиномиальное время. Построим разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; для языка &amp;lt;tex&amp;gt;L^*&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^* \in 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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21932</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=21932"/>
				<updated>2012-05-06T09:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Определение */ &amp;quot;В перечислениях в конце каждого пункта ставится либо точка, либо точка с запятой&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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_1(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_1(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 P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21784</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=21784"/>
				<updated>2012-05-02T14:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Точка.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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_1(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_1(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 P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21783</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=21783"/>
				<updated>2012-05-02T14:31:41Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Улучшаем асимптотику&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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_1(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_1(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 P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21781</id>
		<title>Обсуждение:Класс P</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21781"/>
				<updated>2012-05-02T14:27:44Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: &amp;quot;Написал довольно строгое доказательство замкнутости замыкания Клини. Остальные очень простые, смысла их расписывать не вижу.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TODO ==&lt;br /&gt;
* Смысловая фигня:&lt;br /&gt;
** То, что вверху написано — это, насколько я понимаю, определение. Его надо перенести вниз, чтобы оно было после оглавления. Ещё там написана какая-то чушь. Что такое &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в двойном определении, что такое вообще &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt;?&lt;br /&gt;
*** Перенёс и поправил само определение. Лида написала там &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt; когда-то, идейно это тоже верно, как мне кажется. Но теперь я уже занёс то определение, которое нам давал А.С.&lt;br /&gt;
** Определения надо НОРМАЛЬНО оформить. Как и для теорем, для них есть собственный шаблон.&lt;br /&gt;
*** Оформил.&lt;br /&gt;
** Ссылка на определение DTIME.&lt;br /&gt;
*** Очень долго думал, как её туда запилить... Так и не смог ничего разумного придумать. Нужен совет.&lt;br /&gt;
**** Я добавил ссылку. Не самый хороший костыль, конечно. Я ещё подумаю над этим.&lt;br /&gt;
** Что за &amp;lt;tex&amp;gt;L1&amp;lt;/tex&amp;gt;. Проиндексируй нормально. А ещё там во второй строчке текст абсолютно сливается. Исправь.&lt;br /&gt;
*** Проиндексировал. А во второй строчке у меня всё в порядке... Либо я не понял, о чём ты.&lt;br /&gt;
**** Да, там всё теперь норм.&lt;br /&gt;
** Было бы неплохо написать хоть какие-нибудь идеи по поводу доказатеств свойств.&lt;br /&gt;
*** Свойство 1 кажется мне очевидным (если мы знаем тот факт, что сумма и произведение полиномов есть полином). Свойства 2 и 3 доказаны по ссылкам на соответствующие сведения (там есть конкретно рассмотрение этих сведений для задач из класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;).&lt;br /&gt;
**** Мне свойство 1 очевидным не кажется. Особенно какое-нибудь замыкание Клини. Но это несложные факты, поэтому я не прошу полное доказательство.&lt;br /&gt;
***** Написал довольно строгое доказательство замкнутости замыкания Клини. Остальные очень простые, смысла их расписывать не вижу.&lt;br /&gt;
** Ссылка на определение констекстно-свободных языков в формулировке соответствующей теоремы.&lt;br /&gt;
*** Сделал. Заодно и на регулярные языки тоже сделал ссылку.&lt;br /&gt;
** «Легко показать, что, по определению…» → «Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;…»&lt;br /&gt;
*** Ок. Сделал.&lt;br /&gt;
* Остальная фигня:&lt;br /&gt;
** В первом определении после «то есть» двоеточие.&lt;br /&gt;
*** Хорошо, сделал.&lt;br /&gt;
** «Но, по теореме…» Запятая здесь не нужна. Мне кажется, лучше просто выпилить это «но».&lt;br /&gt;
*** Согласен, сделал.&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21776</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=21776"/>
				<updated>2012-05-02T14:24:39Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Поправочка худшей оценки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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_1(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 log(n) O(p_1(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(log(n))&amp;lt;/tex&amp;gt;. Итого, разрешитель &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; работает за полиномиальное время (так как произведение полиномов есть полином). Значит &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21774</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=21774"/>
				<updated>2012-05-02T14:15:02Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Теперь чёткое доказательство замкнутости замыкания Клини&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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_1(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_1(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;q&amp;lt;/tex&amp;gt; работает за полиномиальное время. Значит &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21686</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=21686"/>
				<updated>2012-04-30T18:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;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;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;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#* Рассмотрим доказательство замкнутости замыкания Клини (остальные доказательства строятся аналогично). Пусть &amp;lt;tex&amp;gt;L_1 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&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;
     if (|w| = 0)&lt;br /&gt;
         return true&lt;br /&gt;
     for (&amp;lt;tex&amp;gt;i = 1 \ldots |w|&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         if (&amp;lt;tex&amp;gt;p_1(w[1..i])&amp;lt;/tex&amp;gt; and &amp;lt;tex&amp;gt;q(w[i + 1..|w|])&amp;lt;/tex&amp;gt;)&lt;br /&gt;
             return true&lt;br /&gt;
     return false&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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21606</id>
		<title>Обсуждение:Класс P</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21606"/>
				<updated>2012-04-30T08:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Последний ответ проверяющему&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TODO ==&lt;br /&gt;
* Смысловая фигня:&lt;br /&gt;
** То, что вверху написано — это, насколько я понимаю, определение. Его надо перенести вниз, чтобы оно было после оглавления. Ещё там написана какая-то чушь. Что такое &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в двойном определении, что такое вообще &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt;?&lt;br /&gt;
*** Перенёс и поправил само определение. Лида написала там &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt; когда-то, идейно это тоже верно, как мне кажется. Но теперь я уже занёс то определение, которое нам давал А.С.&lt;br /&gt;
** Определения надо НОРМАЛЬНО оформить. Как и для теорем, для них есть собственный шаблон.&lt;br /&gt;
*** Оформил.&lt;br /&gt;
** Ссылка на определение DTIME.&lt;br /&gt;
*** Очень долго думал, как её туда запилить... Так и не смог ничего разумного придумать. Нужен совет.&lt;br /&gt;
** Что за &amp;lt;tex&amp;gt;L1&amp;lt;/tex&amp;gt;. Проиндексируй нормально. А ещё там во второй строчке текст абсолютно сливается. Исправь.&lt;br /&gt;
*** Проиндексировал. А во второй строчке у меня всё в порядке... Либо я не понял, о чём ты.&lt;br /&gt;
** Было бы неплохо написать хоть какие-нибудь идеи по поводу доказатеств свойств.&lt;br /&gt;
*** Свойство 1 кажется мне очевидным (если мы знаем тот факт, что сумма и произведение полиномов есть полином). Свойства 2 и 3 доказаны по ссылкам на соответствующие сведения (там есть конкретно рассмотрение этих сведений для задач из класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;).&lt;br /&gt;
** Ссылка на определение констекстно-свободных языков в формулировке соответствующей теоремы.&lt;br /&gt;
*** Сделал. Заодно и на регулярные языки тоже сделал ссылку.&lt;br /&gt;
** «Легко показать, что, по определению…» → «Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;…»&lt;br /&gt;
*** Ок. Сделал.&lt;br /&gt;
* Остальная фигня:&lt;br /&gt;
** В первом определении после «то есть» двоеточие.&lt;br /&gt;
*** Хорошо, сделал.&lt;br /&gt;
** «Но, по теореме…» Запятая здесь не нужна. Мне кажется, лучше просто выпилить это «но».&lt;br /&gt;
*** Согласен, сделал.&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21603</id>
		<title>Обсуждение:Класс P</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21603"/>
				<updated>2012-04-30T08:29:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Ответы проверяющему (кроме одного)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TODO ==&lt;br /&gt;
* Смысловая фигня:&lt;br /&gt;
** То, что вверху написано — это, насколько я понимаю, определение. Его надо перенести вниз, чтобы оно было после оглавления. Ещё там написана какая-то чушь. Что такое &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в двойном определении, что такое вообще &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt;?&lt;br /&gt;
*** Перенёс и поправил само определение. Лида написала там &amp;lt;tex&amp;gt;in&amp;lt;/tex&amp;gt; когда-то, идейно это тоже верно, как мне кажется. Но теперь я уже занёс то определение, которое нам давал А.С.&lt;br /&gt;
** Определения надо НОРМАЛЬНО оформить. Как и для теорем, для них есть собственный шаблон.&lt;br /&gt;
*** Оформил.&lt;br /&gt;
** Ссылка на определение DTIME.&lt;br /&gt;
*** Очень долго думал, как её туда запилить... Так и не смог ничего разумного придумать. Нужен совет.&lt;br /&gt;
** Что за &amp;lt;tex&amp;gt;L1&amp;lt;/tex&amp;gt;. Проиндексируй нормально. А ещё там во второй строчке текст абсолютно сливается. Исправь.&lt;br /&gt;
*** Проиндексировал. А во второй строчке у меня всё в порядке... Либо я не понял, о чём ты.&lt;br /&gt;
** Было бы неплохо написать хоть какие-нибудь идеи по поводу доказатеств свойств.&lt;br /&gt;
** Ссылка на определение констекстно-свободных языков в формулировке соответствующей теоремы.&lt;br /&gt;
*** Сделал. Заодно и на регулярные языки тоже сделал ссылку.&lt;br /&gt;
** «Легко показать, что, по определению…» → «Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;…»&lt;br /&gt;
*** Ок. Сделал.&lt;br /&gt;
* Остальная фигня:&lt;br /&gt;
** В первом определении после «то есть» двоеточие.&lt;br /&gt;
*** Хорошо, сделал.&lt;br /&gt;
** «Но, по теореме…» Запятая здесь не нужна. Мне кажется, лучше просто выпилить это «но».&lt;br /&gt;
*** Согласен, сделал.&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21601</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=21601"/>
				<updated>2012-04-30T08:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Задача равенства P и NP */ По определению P, а не просто по какому-то там&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&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;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21600</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=21600"/>
				<updated>2012-04-30T08:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: + ссылки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&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;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс [[Регулярные языки: два определения и их эквивалентность|регулярных языков]] входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21599</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=21599"/>
				<updated>2012-04-30T08:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Определение */ Забытые теги &amp;lt;tex&amp;gt;&amp;lt;/tex&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&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;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21598</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=21598"/>
				<updated>2012-04-30T08:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Свойства класса P */ Чиню ошибки форматирования&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Итого, язык L лежит в классе &amp;lt;tex&amp;gt;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L_1 \cup L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 \cap L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1 L_2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L_1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21597</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=21597"/>
				<updated>2012-04-30T08:14:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Определение */ Теперь, мне кажется, что логично написать сюда слово &amp;quot;Итого&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Итого, язык L лежит в классе &amp;lt;tex&amp;gt;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=21596</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=21596"/>
				<updated>2012-04-30T08:07:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Определение в нужное место; &amp;quot;Но, &amp;quot; - нафиг&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть:&lt;br /&gt;
&amp;lt;tex&amp;gt;P = \bigcup\limits_{p \in poly} DTIME(p(n))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=20830</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=20830"/>
				<updated>2012-04-16T18:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Может это моё личное мнение, но заголовки с tex-ом выглядят ужасно, к тому же из содержания tex-овские куски выпадают&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P=\bigcup\limits_{i=0}^{\infty} DTIME(in^i)=\bigcup\limits_{i=0}^{\infty}\bigcup\limits_{k=0}^{\infty} DTIME(in^k)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов Reg и P ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;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;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset 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;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задача равенства P и NP ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=20829</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=20829"/>
				<updated>2012-04-16T18:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: /* Примеры задач и языков из P */ + упоминание ещё одной задачи&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P=\bigcup\limits_{i=0}^{\infty} DTIME(in^i)=\bigcup\limits_{i=0}^{\infty}\bigcup\limits_{k=0}^{\infty} DTIME(in^k)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
== Свойства класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;Reg&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;TS&amp;lt;/tex&amp;gt; {{---}} ограничение и по времени и по памяти.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;CFL&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс контекстно-свободных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры задач и языков из &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&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;P&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;NP&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=20828</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=20828"/>
				<updated>2012-04-16T18:29:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: Точки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P=\bigcup\limits_{i=0}^{\infty} DTIME(in^i)=\bigcup\limits_{i=0}^{\infty}\bigcup\limits_{k=0}^{\infty} DTIME(in^k)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
== Свойства класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;Reg&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;TS&amp;lt;/tex&amp;gt; {{---}} ограничение и по времени и по памяти.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;CFL&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс контекстно-свободных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры задач и языков из &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;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;P&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;NP&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=20827</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=20827"/>
				<updated>2012-04-16T18:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: + ещё теоремка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P=\bigcup\limits_{i=0}^{\infty} DTIME(in^i)=\bigcup\limits_{i=0}^{\infty}\bigcup\limits_{k=0}^{\infty} DTIME(in^k)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
== Свойства класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;Reg&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс регулярных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;TS&amp;lt;/tex&amp;gt; {{---}} ограничение и по времени и по памяти.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;CFL&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Класс контекстно-свободных языков входит в класс &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, то есть: &amp;lt;tex&amp;gt;CFL \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;CFL \subset TS(n^3, n^2) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры задач и языков из &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;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;P&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;NP&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_P&amp;diff=20826</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=20826"/>
				<updated>2012-04-16T18:11:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tsar: + теоремка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Класс''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P=\bigcup\limits_{i=0}^{\infty} DTIME(in^i)=\bigcup\limits_{i=0}^{\infty}\bigcup\limits_{k=0}^{\infty} DTIME(in^k)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
Язык L лежит в классе &amp;lt;tex&amp;gt;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;
== Свойства класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
# Замкнутость объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если &amp;lt;tex&amp;gt;L_1, L_2 \in P&amp;lt;/tex&amp;gt;, то: &amp;lt;tex&amp;gt;L1 \cup L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1 \cap L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1L2 \in P&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L1^* \in P&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\overline{L1} \in P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Замкнутость относительно [[Сведение по Карпу|сведения по Карпу]]. &amp;lt;tex&amp;gt; L \in P , M \le L \Rightarrow M \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Замкнутость относительно [[Сведение по Куку|сведения по Куку]]. &amp;lt;tex&amp;gt;L \subset P \Rightarrow P=P^L&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Соотношение классов &amp;lt;tex&amp;gt;Reg&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof =&lt;br /&gt;
&amp;lt;tex&amp;gt;Reg \subset TS(n, 1) \subset P&amp;lt;/tex&amp;gt;&lt;br /&gt;
''Замечание.'' &amp;lt;tex&amp;gt;TS&amp;lt;/tex&amp;gt; {{---}} ограничение и по времени и по памяти.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры задач и языков из &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;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;P&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;NP&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
Одним из центральных вопросов теории сложности является вопрос о равенстве классов &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; и [[NP]], не разрешенный по сей день. &lt;br /&gt;
&lt;br /&gt;
Легко показать, что, по определению, &amp;lt;tex&amp;gt; P \subset NP&amp;lt;/tex&amp;gt;, так как для любой задачи класса &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; существует соответствующая ДМТ, которая является частным случаем НМТ, а значит задача, по определению, будет входить в класс &amp;lt;tex&amp;gt;NP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsar</name></author>	</entry>

	</feed>