<?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=217.118.78.110&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.118.78.110&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/217.118.78.110"/>
		<updated>2026-08-03T23:09:24Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D1%84%D1%84%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE&amp;diff=57778</id>
		<title>Аффинное пространство</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D1%84%D1%84%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE&amp;diff=57778"/>
				<updated>2016-12-12T23:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: /* Аффинная независимость и базисы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Введение==&lt;br /&gt;
===Мотивация===&lt;br /&gt;
Рассмотрим векторное пространство &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt;, построим в нём плоскости &amp;lt;math&amp;gt;P_1=\{z=0\}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;P_2=\{z=1\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Плоскость &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; является векторным подпространством исходного векторного пространства,&lt;br /&gt;
а плоскость &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; не является.&lt;br /&gt;
Это довольно странно, так как с точки зрения геометрии ни одна из плоскостей ничем не лучше другой,&lt;br /&gt;
плоскость &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; интуитивно выражается той же линейной структурой, что и &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В векторном пространстве недостаток плоскости &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; состоит в том, что у неё нет выделенного начала,&lt;br /&gt;
а &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; повезло пройти через точку &amp;lt;math&amp;gt;(0; 0; 0)&amp;lt;/math&amp;gt;.&lt;br /&gt;
То, что проходящие через начало координат прямые и плоскости чем-то особенны, довольно неудобно.&lt;br /&gt;
Аффинные пространства исправляют это досадное недоразумение.&lt;br /&gt;
&lt;br /&gt;
===Неформальное описание===&lt;br /&gt;
Аффинное пространство можно воспринимать как векторное пространство, в котором потеряли начальную точку.&lt;br /&gt;
&lt;br /&gt;
Представим, что Алиса знает настоящую начальную точку, а Боб думает, что начальная точка это &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;.&lt;br /&gt;
Есть какие-то два вектора &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, и Алиса с Бобом их складывают.&lt;br /&gt;
Алиса, опираяющаяся на настоящую начальную точку, получит &amp;lt;math&amp;gt;a + b&amp;lt;/math&amp;gt;,&lt;br /&gt;
а Боб, откладывая те же вектора от точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;, получит&lt;br /&gt;
&amp;lt;math&amp;gt;p + (a - p) + (b - p)&amp;lt;/math&amp;gt;,&lt;br /&gt;
понятно, что результаты будут разные.&lt;br /&gt;
&lt;br /&gt;
Точно так же они могут вычислять линейные комбинации этих векторов, и, как правило, получать разные результаты.&lt;br /&gt;
Однако, если сумма коэффициентов линейной комбинации будет равна &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, то результаты будут получаться одинаковые.&lt;br /&gt;
Алиса будет получать получать&lt;br /&gt;
&amp;lt;math&amp;gt;\lambda a + (1 - \lambda) b&amp;lt;/math&amp;gt;,&lt;br /&gt;
и Боб будет точно так же получать&lt;br /&gt;
&amp;lt;math&amp;gt;p + \lambda(a - p) + (1 - \lambda)(b - p) = \lambda a + (1 - \lambda) b&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На самом деле, точки, получаемые таким образом, будут лежать на прямой, проходящей через точки &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
У Боба с Алисой есть знание об &amp;quot;аффинной структуре&amp;quot; пространства, то есть значения аффинных комбинаций,&lt;br /&gt;
определённых как линейные комбинации в которых сумма коэффициентов равна &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Пространство с аффинной структурой и есть аффинное пространство.&lt;br /&gt;
&lt;br /&gt;
==Векторные пространства и определители==&lt;br /&gt;
Вспомним несколько фактов из линейной алгебры.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Набор векторов &amp;lt;math&amp;gt;\{\vec{e}_i\}_{i=1}^n&amp;lt;/math&amp;gt; называется '''линейно независимым''' (ЛНЗ), если его линейная комбинация &amp;lt;math&amp;gt;\sum_{i=1}^n \alpha_i \vec{e}_i&amp;lt;/math&amp;gt; равна нулю только в том случае, если она тривиальная, то есть &amp;lt;math&amp;gt;\forall i : \alpha_i = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition=Векторное пространство называется &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-мерным, если в нём существует набор из &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; линейно независимых векторов,&lt;br /&gt;
и не существует набора из &amp;lt;math&amp;gt;d + 1&amp;lt;/math&amp;gt; линейно независимого вектора.&lt;br /&gt;
}}&lt;br /&gt;
===Единственность разложения в базис===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|id=vectorUniqueness&lt;br /&gt;
|statement=В &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-мерном пространстве любой вектор &amp;lt;math&amp;gt;\vec{A}&amp;lt;/math&amp;gt; единственным образом раскладывается в базисе из &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; линейно независимых векторов &amp;lt;math&amp;gt;\{\vec{e}_i\}_{i=1}^d&amp;lt;/math&amp;gt; как &amp;lt;math&amp;gt;\sum_{i=1}^d\alpha_i\vec{e}_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
|proof=Если мы добавим в базис вектор &amp;lt;math&amp;gt;\vec{A}&amp;lt;/math&amp;gt;, то он обязательно станет линейно зависимым, и, значит, найдутся такие &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\{\alpha_i\}&amp;lt;/math&amp;gt;, что&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle \beta \vec{A} + \sum_{i=1}^d\alpha_i\vec{e}_i=0 \implies&lt;br /&gt;
\vec{A} = \sum\limits_{i=1}^d-\frac{\alpha_i}{\beta}\vec{e}_i&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
и, значит, разложение существует.&lt;br /&gt;
&lt;br /&gt;
Теперь пусть есть два разложения &amp;lt;math&amp;gt;\sum_{i=1}^d\alpha_i\vec{e}_i=\vec{A}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\sum_{i=1}^d\beta_i\vec{e}_i=\vec{A}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle \vec{A} - \vec{A} = \vec{0} = \sum_{i=1}^d(\alpha_i - \beta_i)\vec{e}_i&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
однако такое может быть только в том случае, если линейная комбинация тривиальная, то есть&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_i - \beta_i = 0 \implies \alpha_i = \beta_i \implies&amp;lt;/math&amp;gt; &amp;amp;nbsp; разложение единственно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Матрица перехода===&lt;br /&gt;
&lt;br /&gt;
Мы можем переходить из одного базиса в другой.&lt;br /&gt;
Пусть у нас есть базисы &amp;lt;math&amp;gt;\{\vec{e}_i\}_{i=1}^d&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\{\vec{f}_i\}_{i=1}^d&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle&lt;br /&gt;
\vec{A} = \sum_{i=1}^d\alpha_i\vec{e}_i = \sum_{i=1}^d\beta_i\vec{f}_i \\&lt;br /&gt;
\vec{e}_i = \sum_{j=1}^d c_{ij}\vec{f}_j \\&lt;br /&gt;
\vec{A} = \sum_{i=1}^d\alpha_i\vec{e}_i =&lt;br /&gt;
\sum_{i=1}^d \alpha_i \sum_{j=1}^d c_{ij} \vec{f}_j =&lt;br /&gt;
\sum_{j=1}^d \vec{f}_j \sum_{i=1}^d \alpha_i c_{ij} \\&lt;br /&gt;
\beta_j = \sum_{i=1}^d\alpha_i c_{ij} \implies&lt;br /&gt;
\begin{pmatrix} \beta_1 \\ \beta_2 \\ \vdots \\ \beta_d \end{pmatrix} =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
c_{11} &amp;amp; c_{21} &amp;amp; \cdots &amp;amp; c_{d1} \\&lt;br /&gt;
c_{12} &amp;amp; c_{22} &amp;amp; \cdots &amp;amp; c_{d2} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
c_{1d} &amp;amp; c_{2d} &amp;amp; \cdots &amp;amp; c_{dd}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix} \alpha_1 \\ \alpha_2 \\ \vdots \\ \alpha_d \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Определитель===&lt;br /&gt;
&lt;br /&gt;
Следующий факт позволяет красиво записывать один подозрительно часто появляющийся определитель.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \displaystyle&lt;br /&gt;
\begin{vmatrix}&lt;br /&gt;
a_1 - p \\ a_2 - p \\ \vdots \\ a_n - p&lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
= \begin{vmatrix}&lt;br /&gt;
a_1 - p &amp;amp; 0 \\ a_2 - p &amp;amp; 0 \\ \vdots &amp;amp; \vdots \\ a_n - p &amp;amp; 0 \\ p &amp;amp; 1&lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
= \begin{vmatrix}&lt;br /&gt;
a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1 \\ \vdots &amp;amp; \vdots \\ a_n &amp;amp; 1 \\ p &amp;amp; 1&lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Аффинные пространства==&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition='''Аффинное пространство''' — это либо вырожденное пустое множество, либо кортеж &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt;, состоящий из непустого множества точек &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;, векторного пространства &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; и действия &amp;lt;math&amp;gt;(+) : A \times V \rightarrow A&amp;lt;/math&amp;gt;, удовлетворяющего следующим свойствам:&lt;br /&gt;
# &amp;lt;math&amp;gt;\forall a \in A : a + 0 = a&amp;lt;/math&amp;gt;;&lt;br /&gt;
# &amp;lt;math&amp;gt;\forall v, w \in V, a \in A : (a + v) + w = a + (v + w)&amp;lt;/math&amp;gt;;&lt;br /&gt;
# Для всех &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; отображение &amp;lt;math&amp;gt;(a+)&amp;lt;/math&amp;gt; биективно.&lt;br /&gt;
}}&lt;br /&gt;
Из этих свойств также следует, что для всех &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;(+v)&amp;lt;/math&amp;gt; тоже биективно.&lt;br /&gt;
&lt;br /&gt;
Последнее свойство позволяет определить вычитание двух элементов из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;a, b \in A&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;b - a&amp;lt;/math&amp;gt;, или &amp;lt;math&amp;gt;\overrightarrow{ab}&amp;lt;/math&amp;gt;, это такой вектор из &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, что &amp;lt;math&amp;gt;a + (b - a) = b&amp;lt;/math&amp;gt;.&lt;br /&gt;
Таким образом определённое вычитание обладает следующими свойствами:&lt;br /&gt;
# &amp;lt;math&amp;gt;\forall a \in A, v \in V \ \exists ! b \in A : (b - a) = v&amp;lt;/math&amp;gt;;&lt;br /&gt;
# &amp;lt;math&amp;gt;\forall a, b, c \in A : (b - a) + (c - b) = (c - a)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Далее для удобства будем пользоваться вторым вариантом записи.&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition='''Размерность''' аффинного пространства &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; равна размерности &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
===Аффинные комбинации===&lt;br /&gt;
В векторном пространстве мы часто пользовались линейными комбинациями.&lt;br /&gt;
Давайте введём похожее определение для аффинного пространства.&lt;br /&gt;
Пусть у нас есть множество точек &amp;lt;math&amp;gt;\{a_i\}_{i=1}^n&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&lt;br /&gt;
и такое множество скаляров &amp;lt;math&amp;gt;\{\lambda_i\}_{i=1}^n&amp;lt;/math&amp;gt;, что &amp;lt;math&amp;gt;\sum_{i=1}^n \lambda_i = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Теперь давайте перебирать точки начала отсчёта &amp;lt;math&amp;gt;x \in A&amp;lt;/math&amp;gt;,&lt;br /&gt;
и считать суммы &amp;lt;math&amp;gt;x + \sum_{i=1}^n \lambda_i \cdot \overrightarrow{xa_i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Несложно показать, что&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle \forall x, y \in A :&lt;br /&gt;
x + \sum_{i=1}^n \lambda_i \cdot \overrightarrow{xa_i} =&lt;br /&gt;
y + \sum_{i=1}^n \lambda_i \cdot \overrightarrow{ya_i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть, какую бы точку мы не взяли за начало отсчёта, результат мы будем получать один и тот же.&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition=Для любого набора точек &amp;lt;math&amp;gt;\{a_i\}_{i=1}^n&amp;lt;/math&amp;gt; из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и такого набора скаляров &amp;lt;math&amp;gt;\{\lambda_i\}_{i=1}^n&amp;lt;/math&amp;gt;, что &amp;lt;math&amp;gt;\sum_{i=1}^n \lambda_i = 1&amp;lt;/math&amp;gt;, точка&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle p = x + \sum_{i=1}^n \lambda_i \cdot \overrightarrow{xa_i}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
не зависящая от выбора &amp;lt;math&amp;gt;x \in A&amp;lt;/math&amp;gt;, называется '''аффинной комбинацией''' (а также ''барицентрической комбинацией'', или ''барицентром'') точек &amp;lt;math&amp;gt;\{a_i\}_{i=1}^n&amp;lt;/math&amp;gt; с весами &amp;lt;math&amp;gt;\{\lambda_i\}_{i=1}^n&amp;lt;/math&amp;gt;, и обозначается как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle p = \sum_{i=1}^n \lambda_i a_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
===Аффинные подпространства===&lt;br /&gt;
С помощью этого определения довольно естественно ввести следующее определение аффинного подпространства.&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition=Если &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство, то &amp;lt;math&amp;gt;B \subset A&amp;lt;/math&amp;gt; является '''аффинным подпространством''' пространства &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt;, если любая аффинная комбинация любого множества точек из &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; принадлежит &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Например, &amp;lt;math&amp;gt;\{z=1\}&amp;lt;/math&amp;gt; будет аффинным подпространством аффинного пространства над &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt;,&lt;br /&gt;
и прямая &amp;lt;math&amp;gt;ax+by=c&amp;lt;/math&amp;gt; будет аффинным подпространством аффинного пространства над &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Следующая лемма проводит связь между аффинными подпространствами и векторными подпространствами.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=Пусть &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство.&lt;br /&gt;
# Непустое &amp;lt;math&amp;gt;B \subset A&amp;lt;/math&amp;gt; является аффинным подпространством тогда и только тогда, когда для любой точки &amp;lt;math&amp;gt;a \in B&amp;lt;/math&amp;gt; множество &amp;lt;math&amp;gt;W_a = \{\overrightarrow{ab} : b \in B\}&amp;lt;/math&amp;gt; является подпространством &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;. Как следствие, &amp;lt;math&amp;gt;B=\{a + w : w \in W_a \}&amp;lt;/math&amp;gt;. Более того, &amp;lt;math&amp;gt;W = \{\overrightarrow{ab} : a, b \in B\}&amp;lt;/math&amp;gt; является подпространством &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, и для любой точки &amp;lt;math&amp;gt;a \in B&amp;lt;/math&amp;gt; справедливо &amp;lt;math&amp;gt;W_a = W&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для любого &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt;, являющегося подпространством &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, множество &amp;lt;math&amp;gt;\{a + v : v \in W\}&amp;lt;/math&amp;gt; является аффинным подпространством для любого &amp;lt;math&amp;gt;a \in A&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Аффинная независимость и базисы===&lt;br /&gt;
Аналогично с линейной независимостью в векторных пространствах можно ввести аффинную независимость.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=Пусть &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство. Пусть &amp;lt;math&amp;gt;\{a_i\}_{i \in I}&amp;lt;/math&amp;gt; — множество точек из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Если для какого-то &amp;lt;math&amp;gt;i \in I&amp;lt;/math&amp;gt; множество векторов &amp;lt;math&amp;gt;\{\overrightarrow{a_i a_j}\}_{j \in I \setminus \{i\}}&amp;lt;/math&amp;gt; линейно независимо, то для любого &amp;lt;math&amp;gt;i \in I&amp;lt;/math&amp;gt; множество &amp;lt;math&amp;gt;\{\overrightarrow{a_i a_j}\}_{j \in I \setminus \{i\}}&amp;lt;/math&amp;gt; будет линейно независимо.&lt;br /&gt;
|proof=Пусть для какого-то &amp;lt;math&amp;gt;i \in I&amp;lt;/math&amp;gt; множество векторов &amp;lt;math&amp;gt;\{\overrightarrow{a_i a_j}\}_{j \in I \setminus \{i\}}&amp;lt;/math&amp;gt; линейно независимо, &amp;lt;math&amp;gt;k \in I&amp;lt;/math&amp;gt; и пусть есть такой набор &amp;lt;math&amp;gt;\{\lambda_j\}_{j \in I \setminus \{k\}}&amp;lt;/math&amp;gt;, что&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle \sum_{j \in I \setminus \{k\}} \lambda_j \cdot \overrightarrow{a_k a_j} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поскольку &amp;lt;math&amp;gt;\overrightarrow{a_k a_j} = \overrightarrow{a_k a_i} + \overrightarrow{a_i a_j}&amp;lt;/math&amp;gt;, мы имеем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \displaystyle &lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\sum_{j \in I \setminus \{k\}} \lambda_j \cdot \overrightarrow{a_k a_j} &amp;amp;=&lt;br /&gt;
\sum_{j \in I \setminus \{k\}} \lambda_j \cdot \overrightarrow{a_k a_i} + \sum_{j \in I \setminus \{k\}} \lambda_j \cdot \overrightarrow{a_i a_j} \\&lt;br /&gt;
&amp;amp;= \sum_{j \in I \setminus \{k\}} \lambda_j \cdot \overrightarrow{a_k a_i} + \sum_{j \in I \setminus \{i,k\}} \lambda_j \cdot \overrightarrow{a_i a_j} \\&lt;br /&gt;
&amp;amp;= \sum_{j \in I \setminus \{i,k\}} \lambda_j \cdot \overrightarrow{a_i a_j} - \left(\sum_{j \in I \setminus \{k\}} \lambda_j\right) \cdot \overrightarrow{a_i a_k} = 0 \text{.}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этого следует, что &amp;lt;math&amp;gt;\forall j \in (I \setminus \{i, k\}) : \lambda_j = 0&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\sum_{j \in I \setminus \{k\}} \lambda_j = 0&amp;lt;/math&amp;gt;, поскольку набор векторов &amp;lt;math&amp;gt;\{\overrightarrow{a_i a_j}\}_{j \in I \setminus \{i\}}&amp;lt;/math&amp;gt; линейно независим. Значит, &amp;lt;math&amp;gt;\forall j \in (I \setminus \{k\}) : \lambda_j = 0&amp;lt;/math&amp;gt;, то есть линейная комбинация тривиальна.&lt;br /&gt;
}}&lt;br /&gt;
Эта лемма даёт возможность говорить о независимости множества точек без выделения одной из них.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Пусть &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство. Множество точек &amp;lt;math&amp;gt;\{a_i\}_{i \in I}&amp;lt;/math&amp;gt; '''аффинно независимо''', если для какого-то &amp;lt;math&amp;gt;i \in I&amp;lt;/math&amp;gt; множество &amp;lt;math&amp;gt;\{\overrightarrow{a_i a_j}\}_{j \in I \setminus \{i\}}&amp;lt;/math&amp;gt; линейно независимо.&lt;br /&gt;
}}&lt;br /&gt;
В аффинном пространстве справедлив факт, подобный единственности разложения вектора в ЛНЗ базис в векторном пространстве.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=Пусть &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство. Пусть &amp;lt;math&amp;gt;\{a_i\}_{i=0}^n&amp;lt;/math&amp;gt; — множество точек из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;x \in A&amp;lt;/math&amp;gt; представима в виде аффинной комбинации &amp;lt;math&amp;gt;\{a_i\}_{i=0}^n&amp;lt;/math&amp;gt;. Тогда набор коэффициентов аффинной комбинации &amp;lt;math&amp;gt;\{\lambda_i\}_{i=0}^n&amp;lt;/math&amp;gt;, что &amp;lt;math&amp;gt;x = \sum_{i=0}^n \lambda a_i&amp;lt;/math&amp;gt;, единственен тогда и только тогда, когда набор векторов &amp;lt;math&amp;gt;\{\overrightarrow{a_0 a_i}\}_{i=1}^n&amp;lt;/math&amp;gt; линейно независим.&lt;br /&gt;
|proof=Пусть есть две аффинные комбинации с коэффициентами &amp;lt;math&amp;gt;\{\alpha_i\}_{i=0}^n&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\{\beta\}_{i=0}^n&amp;lt;/math&amp;gt;, дающие x. Посчитаем их, взяв за точку начала отсчёта точку &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle&lt;br /&gt;
x&lt;br /&gt;
= a_0 + \sum_{i=1}^n \alpha_i \cdot \overrightarrow{a_0 a_i}&lt;br /&gt;
= a_0 + \sum_{i=1}^n \beta_i \cdot \overrightarrow{a_0 a_i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаем, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle&lt;br /&gt;
\sum_{i=1}^n \alpha_i \cdot \overrightarrow{a_0 a_i}&lt;br /&gt;
= \sum_{i=1}^n \beta_i \cdot \overrightarrow{a_0 a_i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По [[#vectorUniqueness|лемме для векторного пространства]] такое разложение единственно, &amp;lt;math&amp;gt;\forall i \in \left[1..n\right] : \alpha_i = \beta_i \implies \alpha_0 = \beta_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Имеет смысл определить понятие базиса в аффинном пространстве.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Пусть &amp;lt;math&amp;gt;\langle A, V, (+)\rangle&amp;lt;/math&amp;gt; — это аффинное пространство. Множество точек &amp;lt;math&amp;gt;\{a_i\}_{i \in I}&amp;lt;/math&amp;gt; будет называться '''аффинным базисом''' этого пространства, если множество векторов &amp;lt;math&amp;gt;\{\overrightarrow{a_0 a_i}\}_{i=1}^n&amp;lt;/math&amp;gt; будет базисом &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;. '''Барицентрическими координатами''' точки будут коэффициенты её аффинного разложения в этом базисе.&lt;br /&gt;
}}&lt;br /&gt;
Поскольку &amp;lt;math&amp;gt;\forall x \in A : x = a_0 + \overrightarrow{a_0 x}&amp;lt;/math&amp;gt;, то если множество &amp;lt;math&amp;gt;\{\overrightarrow{a_0 a_i}\}_{i=1}^n&amp;lt;/math&amp;gt; ЛНЗ, то существует единственное разложение&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \displaystyle&lt;br /&gt;
x = a_0 + \sum_{i=1}^n \lambda_i \cdot \overrightarrow{a_0 a_i}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \displaystyle&lt;br /&gt;
x = \left(1 - \sum_{i=0}^n \lambda_i \right) a_0 + \sum_{i=1}^n \lambda_i a_i&lt;br /&gt;
&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
значит, разложение в аффинный базис всегда существует, и, по лемме, оно единственно.&lt;br /&gt;
&lt;br /&gt;
Также можно выделить &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; как начало координат, и представлять координаты так же, как это делается в векторном пространстве.&lt;br /&gt;
Обычно так и делается.&lt;br /&gt;
Осознание глубинного смысла сего действия остаётся читателям в качестве упражнения.&lt;br /&gt;
&lt;br /&gt;
==Вычисление поворота==&lt;br /&gt;
===Матрица поворота===&lt;br /&gt;
У нас есть гиперплоскость &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и точки задающие её. В &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; мерном пространстве у нас будет &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; аффинно независимых точек &amp;lt;tex&amp;gt;a_1, a_2, \dots, a_d&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;a_1, a_2, \dots, a_d, p&amp;lt;/tex&amp;gt; тоже будет аффинно независимым.&lt;br /&gt;
&lt;br /&gt;
[[Файл:drawing-3.png|400px|thumb|right|Пример для &amp;lt;tex&amp;gt;\mathbb{R}^3&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
Пусть у нас есть какая-то выделенная заранее система координат &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. Эта система приходит обычно вместе с какой-то задачей, и обычно она декартова. И у нас тоже будет сейчас декартова.&lt;br /&gt;
&lt;br /&gt;
Мы знаем, что можно составить матрицу перехода из начальной системы координат координат &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; в систему координат на векторах &amp;lt;math&amp;gt;\{\overrightarrow{p a_i}\}_{i=1}^d&amp;lt;/math&amp;gt;, если можно выразить эти вектора в &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;.&lt;br /&gt;
А в нашем случае мы это сделать, конечно, можем: поскольку вектор существует между любыми парами точек, просто сопоставим нашим точкам вектора, соединяющие начало координат &amp;lt;tex&amp;gt;O&amp;lt;/tex&amp;gt; и очередную точку.&lt;br /&gt;
Значит, если нам известны координаты точек, то нам известны координаты векторов в ситеме &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Запишем матрицу перехода и немножко преобразуем её определитель:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\det A^ \mathrm{T}&lt;br /&gt;
= \begin{vmatrix}&lt;br /&gt;
\overrightarrow{Oa_1} - \overrightarrow{Op} \\&lt;br /&gt;
\overrightarrow{Oa_2} - \overrightarrow{Op} \\&lt;br /&gt;
\vdots \\&lt;br /&gt;
\overrightarrow{Oa_d} - \overrightarrow{Op}&lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
= \begin{vmatrix} a_1 - p \\ a_2 - p\\ \vdots \\ a_d - p \end{vmatrix}&lt;br /&gt;
= \begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_d &amp;amp; 1 \\ p &amp;amp; 1 \end{vmatrix}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В дальнейшем нас будут интересовать знак этого детерминанта.&lt;br /&gt;
&lt;br /&gt;
===Обоснование===&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=pOnPlane&lt;br /&gt;
|about=1&lt;br /&gt;
|statement=Точка &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; лежит на плоскости &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; тогда и только тогда, когда определитель матрицы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Плоскость &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; определяется замыканием набора &amp;lt;tex&amp;gt;a_1, a_2, \dots, a_d&amp;lt;/tex&amp;gt; ЛНЗ точек, значит, если &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежит множеству, то &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; является линейной комбинацией этих точек. В этом случае мы с помощью преобразований можем получить нулевую стррочку в матрице &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, значит, ее определитель будет ноль.&lt;br /&gt;
}}&lt;br /&gt;
Разобъем все точки пространства (кроме тех, что лежат на плоскости) на два множества в зависимости от того, какой знак для них будет иметь детерминант &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Покажем, что наша классификация осмысленна. &lt;br /&gt;
{{Лемма&lt;br /&gt;
|id= pConvex&lt;br /&gt;
|statement= Получившиеся множества будут выпуклыми.&lt;br /&gt;
|proof= По определению выпуклого множества. Возьмем две любые точки &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt;, лежащие в одной области. По аксиоматике существует вектор &amp;lt;tex&amp;gt;\overrightarrow{p_1p_2}&amp;lt;/tex&amp;gt;  и по определению можно сделать линейную комбинацию. Значит можем получить любую точку между &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt;, лежащую с ними на одной прямой, отложив от &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; вектор &amp;lt;tex&amp;gt;\alpha \cdot \overrightarrow{p_1p_2}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\alpha \in [0..1]&amp;lt;/tex&amp;gt;. Если подставить это в определитель, и вспомнить, что &amp;lt;math&amp;gt;1 = \alpha + (1 - \alpha)&amp;lt;/math&amp;gt;, то получим&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_d &amp;amp; 1 \\ p_1 + \alpha \cdot \overrightarrow{p_1p_2} &amp;amp; 1 \end{vmatrix} = &lt;br /&gt;
\begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_d &amp;amp; 1 \\  \alpha p_2 + (1 - \alpha)p_1 &amp;amp; 1 \end{vmatrix} = &lt;br /&gt;
\alpha \begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_d &amp;amp; 1 \\  p_2 &amp;amp; 1 \end{vmatrix} +&lt;br /&gt;
(1 - \alpha) \begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_d &amp;amp; 1 \\  p_1 &amp;amp; 1 \end{vmatrix} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Матрицы одинакового знака, и стоящие перед ними коэффициенты положительны. Значит, у нашей точки будет тот же знак определителя, что и у &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&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;
&lt;br /&gt;
В афинном пространстве можно вполне естественно ввести евклидовскую метрику: ввести скалярное произведение, а затем показать, что корень из скалярного произведения задает метрику. Тогда эта метрика будет индуцировать топологию открытыми шарами, а значит, можно будет воспользоваться аналогом теоремы Жордана.&lt;br /&gt;
&lt;br /&gt;
Эта история о том, что даже когда мы притворяемся, что у нас нет метрики, мы неявно испоользуем топологию, индуцированную этой метрикой. Но, метрика, не единственна, и топология не единственна. Иногда нам достаточно топологии, которая даже может быть не индуцирована метрикой, или которая вообще не метризуема, но эта топология будет давать свойство непрерывности. Но тогда для нашей топогогии нужно будет доказывать вышеупомянутый факт (про непрерывность кривой).&lt;br /&gt;
&lt;br /&gt;
Итак, поворот классифицирует точки не лежащие на плоскости и разбивает их на два выпуклых множества&lt;br /&gt;
&lt;br /&gt;
==Уравнение гиперплоскости, полупространства==&lt;br /&gt;
Из [[#pOnPlane|леммы 1]] практически сразу получается уравнение гиперплоскости.&lt;br /&gt;
&lt;br /&gt;
Пусть у нас есть &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  ЛНЗ точек &amp;lt;tex&amp;gt;a_1, a_2, \dots, a_n&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-мерном пространстве. Тогда гиперплоскость, проходящая через эти точки, может быть задана уравнением&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_n &amp;amp; 1 \\ x &amp;amp; 1 \end{vmatrix} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При этом полупространство, лежащее ниже этой плоскости, может быть получено как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_n &amp;amp; 1 \\ x &amp;amp; 1 \end{vmatrix} &amp;lt; 0&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
а  полупространство, лежащее выше этой плоскости, имеет вид&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{vmatrix} a_1 &amp;amp; 1 \\ a_2 &amp;amp; 1\\ \vdots &amp;amp; \vdots \\ a_n &amp;amp; 1 \\ x &amp;amp; 1 \end{vmatrix} &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;/div&gt;</summary>
		<author><name>217.118.78.110</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%94%D0%9A%D0%90&amp;diff=40153</id>
		<title>Прямое произведение ДКА</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D1%8F%D0%BC%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%94%D0%9A%D0%90&amp;diff=40153"/>
				<updated>2014-10-09T10:54:32Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Прямым произведением''' двух [[Детерминированные конечные автоматы|ДКА]] &amp;lt;tex&amp;gt;A_1 = \langle \Sigma_1, Q_1, s_1, T_1, \delta_1 \rangle&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_2 = \langle \Sigma_2, Q_2, s_2, T_2, \delta_2 \rangle&amp;lt;/tex&amp;gt; называется ДКА &amp;lt;tex&amp;gt;A = \langle \Sigma, Q, s, T, \delta \rangle&amp;lt;/tex&amp;gt;, где:&lt;br /&gt;
* &amp;lt;tex&amp;gt;\Sigma = \Sigma_1 \cup \Sigma_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;Q = Q_1 \times Q_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;s = \langle s_1, s_2 \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;T = T_1 \times T_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;\delta(\langle q_1, q_2 \rangle, c) = \langle \delta_1(q_1, c), \delta_2(q_2, c) \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
[[Файл:Multi_DKA_source.png]]&lt;br /&gt;
&lt;br /&gt;
Возьмем автоматы:&lt;br /&gt;
* &amp;lt;tex&amp;gt;A_1 = \langle \Sigma = \lbrace 0, 1 \rbrace, Q_1 = \lbrace s_1, t_1 \rbrace, s_1, T_1 = \lbrace t_1 \rbrace, \delta_1 \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A_2 = \langle \Sigma = \lbrace 0, 1 \rbrace, Q_2 = \lbrace s_2, q_2, t_{21}, t_{22} \rbrace, s_2, T_2 = \lbrace t_{21}, t_{22} \rbrace, \delta_2 \rangle&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Multi_DKA_result.png]]&lt;br /&gt;
&lt;br /&gt;
Автомат &amp;lt;tex&amp;gt;A = \langle \Sigma, Q, s, T, \delta \rangle&amp;lt;/tex&amp;gt; будет их пересечением.&lt;br /&gt;
&lt;br /&gt;
Согласно определению:&lt;br /&gt;
#&amp;lt;tex&amp;gt;\Sigma = \lbrace 0, 1 \rbrace&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;Q = \lbrace \langle s_1, s_2 \rangle, \langle s_1, q_2 \rangle, \langle s_1, t_{21} \rangle, \langle s_1, t_{22} \rangle, \langle t_1, s_2 \rangle, \langle t_1, q_2 \rangle, \langle t_1, t_{21} \rangle, \langle t_1, t_{21} \rangle \rbrace&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;s = \langle s_1, s_2 \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;T = \lbrace \langle t_1, t_{21} \rangle, \langle t_1, t_{22} \rangle \rbrace&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\delta :&amp;lt;/tex&amp;gt;&lt;br /&gt;
#*&amp;lt;tex&amp;gt;\delta(\langle s_1, s_2 \rangle, 0) = \langle \delta_1(s_1, 0), \delta_2(s_2, 0) \rangle = \langle s_1, q_2 \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#*&amp;lt;tex&amp;gt;\delta(\langle s_1, s_2 \rangle, 1) = \langle \delta_1(s_1, 1), \delta_2(s_2, 1) \rangle = \langle t_1, s_2 \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#*&amp;lt;tex&amp;gt;\delta(\langle s_1, q_2 \rangle, 0) = \langle \delta_1(s_1, 0), \delta_2(q_2, 0) \rangle = \langle s_1, q_2 \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#*&amp;lt;tex&amp;gt;\delta(\langle s_1, q_2 \rangle, 1) = \langle \delta_1(s_1, 1), \delta_2(q_2, 1) \rangle = \langle t_1, t_{21} \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#*...&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
Изменив конструкцию, можно получить автомат, допускающий разность или объединение двух языков.&lt;br /&gt;
=== Объединение ДКА ===&lt;br /&gt;
[[Файл:Multi_DKA_united.png]]&lt;br /&gt;
&lt;br /&gt;
Необходимо разрешать любую цепочку, удовлетворяющую первому или второму автомату, для этого сделаем терминальными следующие вершины &amp;lt;tex&amp;gt;T = (T_1 \times Q_2) \cup (Q_1 \times T_2)&amp;lt;/tex&amp;gt;. Полученный автомат удовлетворяет нашим требованиям, так как попав в какое-либо состояние из &amp;lt;tex&amp;gt;T_1&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;T_2&amp;lt;/tex&amp;gt;, цепочка будет удовлетворять первому или второму автомату соответственно.&lt;br /&gt;
&lt;br /&gt;
=== Разность ДКА ===&lt;br /&gt;
[[Файл:Multi_DKA_division.png]]&lt;br /&gt;
&lt;br /&gt;
Рассмотрим автомат &amp;lt;tex&amp;gt;\overline{M} = \langle \Sigma , Q , s , Q \setminus T , \delta \rangle &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;\overline{M}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Заметим, что если &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; {{---}} регулярные языки, то &amp;lt;tex&amp;gt;L \setminus M = L \cap \overline{M}&amp;lt;/tex&amp;gt; {{---}} так же регулярный. &lt;br /&gt;
&lt;br /&gt;
Следовательно, надо построить пересечение двух автоматов, предварительно инвертировав во втором терминальные и нетерминальные состояния. Заметим, что меняется только набор терминальных вершин, следовательно в итоговой конструкции произведения ДКА сделаем терминальными следующие вершины &amp;lt;tex&amp;gt;T = T_1 \times (Q_2 \setminus T_2)&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;
* [[wikipedia:Deterministic_finite_automaton | Wikipedia {{---}} Deterministic finite automaton]]&lt;br /&gt;
* [http://www.andrew.cmu.edu/user/ko/pdfs/lecture-3.pdf Lecture &amp;quot;Formal languages, automata and computation&amp;quot; : Carnegie Mellon University in Qatar]&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. {{---}} М.:Издательский дом «Вильямс», 2002. {{---}} С. 152-154.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Автоматы и регулярные языки]]&lt;/div&gt;</summary>
		<author><name>217.118.78.110</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=QpmtnCmax&amp;diff=26609</id>
		<title>QpmtnCmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=QpmtnCmax&amp;diff=26609"/>
				<updated>2012-06-23T13:38:32Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: /* Доказательство корректности алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #ABCDEF; font-size: 16px; font-weight: bold; color: #000000; text-align: center; padding: 4px; border-style: solid; border-width: 1px;&amp;quot;&amp;gt;Эта статья находится в разработке!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Категория: В разработке]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Постановка задачи==&lt;br /&gt;
Есть несколько станков с разной скоростью выполнения работ. Работу на каждом из станков можно прервать и продолжить позже. &lt;br /&gt;
&lt;br /&gt;
Цель - выполнить все как можно быстрее.&lt;br /&gt;
&lt;br /&gt;
1. Найдем нижнюю границу времени выполнения.&lt;br /&gt;
&lt;br /&gt;
2. Составим оптимальное расписание.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм построения расписания==&lt;br /&gt;
Перед выполнением алгоритма, упорядочим все работы по убыванию их времени выполнеия:&amp;lt;tex&amp;gt; p_1 \ge p_2 \ge p_3... &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; P_i = p_1 + ... + p_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S_j = s_1 + ... + s_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где &amp;lt;tex&amp;gt;i = 1 ... n&amp;lt;/tex&amp;gt;;  &amp;lt;tex&amp;gt;j = 1 ... m&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt; p_i&amp;lt;/tex&amp;gt; - стоимость &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой работы ;&amp;lt;tex&amp;gt; s_j&amp;lt;/tex&amp;gt; - скорость работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;-oй машины ;&lt;br /&gt;
&lt;br /&gt;
Необходимое условие для выполнения всех работ в интервале &amp;lt;tex&amp;gt;[0;T]&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; P_n = p_1 + ... + p_n \le s_1T + ... + s_mT = S_mT&amp;lt;/tex&amp;gt; или  &amp;lt;tex&amp;gt;P_n/S_m \le T&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кроме того, должно выполняться условие &amp;lt;tex&amp;gt;P_j/S_j \le T&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt; j = 1..m - 1 &amp;lt;/tex&amp;gt;, так как это нижняя оценка времени выполнения работ &amp;lt;tex&amp;gt; J_1...J_{m-1}&amp;lt;/tex&amp;gt;. Исходя из этого получаем нижнюю границу &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\max\{\max\limits_{j=1}^{m-1} {P_j \over S_j}, {P_n \over S_m}\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будем назвать &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt;-ом работы &amp;lt;tex&amp;gt; p_i(t) &amp;lt;/tex&amp;gt; - невыполненную часть работы &amp;lt;tex&amp;gt; p_i &amp;lt;/tex&amp;gt; в момент времени &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее построим расписание, которое достигает нашей оценки &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt;, с помощью &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt;-алгоритма.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt; - алгоритм:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tex&amp;gt;t \leftarrow 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''WHILE''' существуют работы с положительным &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt;&lt;br /&gt;
       Assign(t)&lt;br /&gt;
       &amp;lt;tex&amp;gt;t1 \leftarrow min(s&amp;gt;t |&amp;lt;/tex&amp;gt;находим следующую выполненную работу,где &amp;lt;tex&amp;gt; s&amp;lt;/tex&amp;gt; - время ее окончания &amp;lt;tex&amp;gt; ) &amp;lt;/tex&amp;gt;&lt;br /&gt;
       &amp;lt;tex&amp;gt;t2 \leftarrow &amp;lt;/tex&amp;gt; найти минимальное &amp;lt;tex&amp;gt;s &amp;gt; t&amp;lt;/tex&amp;gt;. Для которого выполняется для некоторых работ &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; , &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;:&amp;lt;tex&amp;gt; level_i(t)&amp;gt;level_j(t)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;  level_i(s) == level_j(s)&amp;lt;/tex&amp;gt;&lt;br /&gt;
       &amp;lt;tex&amp;gt; t \leftarrow min(t1,t2) &amp;lt;/tex&amp;gt; //поиск следующего момента времени ,в который нужно будет перераспределить машины/работы&lt;br /&gt;
   Построение расписания&lt;br /&gt;
&lt;br /&gt;
Функция &amp;lt;tex&amp;gt;Assign(t)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tex&amp;gt;J &amp;lt;/tex&amp;gt; - множество работ с положительным &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;M = \{M_1,...,M_m\}&amp;lt;/tex&amp;gt; - множество всех станков&lt;br /&gt;
   '''WHILE''' множества &amp;lt;tex&amp;gt;J&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не пустые&lt;br /&gt;
      Найти множество работ &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; подмножество &amp;lt;tex&amp;gt;J&amp;lt;/tex&amp;gt; ,&amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt; которых максимальный&lt;br /&gt;
      &amp;lt;tex&amp;gt;r \leftarrow min&amp;lt;/tex&amp;gt;(|&amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;|,|&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;|)&lt;br /&gt;
      Назначаем работы из множества &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; самых быстрых машин из множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;tex&amp;gt;J \leftarrow J&amp;lt;/tex&amp;gt;\&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;&lt;br /&gt;
      удаляем из мн-ва &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; самых быстрых машин&lt;br /&gt;
&lt;br /&gt;
==Доказательство корректности алгоритма==&lt;br /&gt;
Так как нижняя граница &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\max\{\max\limits_{j=1}^{m-1} {P_j \over S_j}, {P_n \over S_m}\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
то достаточно показать, что составленное расписание достигает этой оценки.&lt;br /&gt;
&lt;br /&gt;
Будем считать, что в начале алгоритма все работы упорядочены, как было сказано ранее: &amp;lt;tex&amp;gt; p_1(0) \ge p_2(0) \ge ... \ge p_n(0) &amp;lt;/tex&amp;gt;. Это утверждение не меняется на протяжении всего выполнения алгоритма, для любого момента времени. Получаем: &amp;lt;tex&amp;gt; p_1(t) \ge p_2(t) \ge ... \ge p_n(t) &amp;lt;/tex&amp;gt;. Докажем что алгоритм составляет расписание в соответствии с этим свойством. Чтобы доказать этот факт, будем считать что в любой момент времени &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; нет простоев машин, когда есть хотя бы одна невыполненная работа. Получаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;  T(s_1 + ... + s_m) = p_1 + p_2 + ... + p_n &amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt; T = {P_n \over S_m} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом необходимая оценка достигается нашим алгоритмом.&lt;br /&gt;
&lt;br /&gt;
Допустим хотя бы одна машина простаивает, в момент когда есть невыполненные работы, мы имеем следующее неравенство для времен окончания работ (обозначим далее как &amp;lt;tex&amp;gt; f_i &amp;lt;/tex&amp;gt;) на станках &amp;lt;tex&amp;gt;M_1 ... M_m&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f_1 \ge f_2 \ge ... \ge f_m &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае, если &amp;lt;tex&amp;gt; f_i &amp;lt; f_{i+1} &amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt; 1 \le i \le m-1 &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt; последней работы выполнявшейся на станке &amp;lt;tex&amp;gt; M_i &amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt; f_i - \varepsilon &amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt; \varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt; достаточно мал), и меньше чем &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt; последней работы на станке &amp;lt;tex&amp;gt; M_{i+1} &amp;lt;/tex&amp;gt;. Пришли к противоречию.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; f_1 = f_2 = f_3 = ... = f_j &amp;gt; f_{j+1}&amp;lt;/tex&amp;gt; ,где &amp;lt;tex&amp;gt; j &amp;lt; m &amp;lt;/tex&amp;gt;. Чтобы работы завершились в момент времени &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; необходимо начать их в момент времени 0. Так как если это не выполняется, то у нас найдется работа &amp;lt;tex&amp;gt; J_i &amp;lt;/tex&amp;gt; , которая начинается позже &amp;lt;tex&amp;gt; t = 0 &amp;lt;/tex&amp;gt; и заканчивается в &amp;lt;tex&amp;gt; T &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; p_1(0) \ge p_2(0) \ge ... \ge p_m(0) \ge p_i(0) &amp;lt;/tex&amp;gt;. Из чего следует, что &amp;lt;tex&amp;gt; p_1(T - \varepsilon) \ge ... \ge p_m(T - \varepsilon) \ge p_i(T - \varepsilon) &amp;gt; 0 &amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; удовлетворяющего условию &amp;lt;tex&amp;gt; 0 \le \varepsilon &amp;lt; T - t &amp;lt;/tex&amp;gt;. Таким образом, до момента времени &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; нет простаивающих машин. Противоречие. Получаем &amp;lt;tex&amp;gt; T = {P_j \over S_j} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
[[Файл:Qpmtncmax.png|600px|thumb|right|Картинка к примеру]]&lt;br /&gt;
&lt;br /&gt;
Пусть у нас есть 6 работ и 3 станка. Покажем работу алгоритма для данного случая.&lt;br /&gt;
&lt;br /&gt;
В начальный момент времени начинаем обрабатывать работы с наибольшим временем выполнения &amp;lt;tex&amp;gt;J_1-J_3&amp;lt;/tex&amp;gt; на станках &amp;lt;tex&amp;gt;M_1-M_3&amp;lt;/tex&amp;gt; соответственно. В момент времени &amp;lt;tex&amp;gt;T_1&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;lvl&amp;lt;/tex&amp;gt; 1-ой работы и 2-ой работы совпадает. С этого момента начинаем обрабатывать работы &amp;lt;tex&amp;gt; J_1,J_2&amp;lt;/tex&amp;gt; синхронно на станках: &amp;lt;tex&amp;gt;M_1 M_2&amp;lt;/tex&amp;gt;. В момент времени &amp;lt;tex&amp;gt;T_2&amp;lt;/tex&amp;gt; работа &amp;lt;tex&amp;gt;J_3&amp;lt;/tex&amp;gt; опускается до уровня работы &amp;lt;tex&amp;gt;J_4&amp;lt;/tex&amp;gt;.Работы &amp;lt;tex&amp;gt; J_3,J_4&amp;lt;/tex&amp;gt; выполняем одновременно на одном станке &amp;lt;tex&amp;gt; M_3&amp;lt;/tex&amp;gt;. В момент времени &amp;lt;tex&amp;gt;T_3&amp;lt;/tex&amp;gt; начинаем выполнять первые четыре работы на всех станках одновременно, далее просто добавятся работы &amp;lt;tex&amp;gt;J_5 J_6&amp;lt;/tex&amp;gt; и все работы закончатся одновременно.&lt;br /&gt;
&lt;br /&gt;
==Время работы==&lt;br /&gt;
Level-алгоритм вызывает функцию Assign(t) в самом худшем случае &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; раз. Функция Assign(t) выполняется за &amp;lt;tex&amp;gt;O(nm)&amp;lt;/tex&amp;gt;. Итоговое время работы &amp;lt;tex&amp;gt;O(n^2m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 379 стр. {{---}} ISBN 978-3-540-69515-8&lt;/div&gt;</summary>
		<author><name>217.118.78.110</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=QpmtnCmax&amp;diff=26602</id>
		<title>QpmtnCmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=QpmtnCmax&amp;diff=26602"/>
				<updated>2012-06-23T13:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: /* Алгоритм построения расписания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #ABCDEF; font-size: 16px; font-weight: bold; color: #000000; text-align: center; padding: 4px; border-style: solid; border-width: 1px;&amp;quot;&amp;gt;Эта статья находится в разработке!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Категория: В разработке]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Постановка задачи==&lt;br /&gt;
Есть несколько станков с разной скоростью выполнения работ. Работу на каждом из станков можно прервать и продолжить позже. &lt;br /&gt;
&lt;br /&gt;
Цель - выполнить все как можно быстрее.&lt;br /&gt;
&lt;br /&gt;
1. Найдем нижнюю границу времени выполнения.&lt;br /&gt;
&lt;br /&gt;
2. Составим оптимальное расписание.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм построения расписания==&lt;br /&gt;
Перед выполнением алгоритма, упорядочим все работы по убыванию их времени выполнеия:&amp;lt;tex&amp;gt; p_1 \ge p_2 \ge p_3... &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; P_i = p_1 + ... + p_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S_j = s_1 + ... + s_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где &amp;lt;tex&amp;gt;i = 1 ... n&amp;lt;/tex&amp;gt;;  &amp;lt;tex&amp;gt;j = 1 ... m&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt; p_i&amp;lt;/tex&amp;gt; - стоимость &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой работы ;&amp;lt;tex&amp;gt; s_j&amp;lt;/tex&amp;gt; - скорость работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;-oй машины ;&lt;br /&gt;
&lt;br /&gt;
Необходимое условие для выполнения всех работ в интервале &amp;lt;tex&amp;gt;[0;T]&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; P_n = p_1 + ... + p_n \le s_1T + ... + s_mT = S_mT&amp;lt;/tex&amp;gt; или  &amp;lt;tex&amp;gt;P_n/S_m \le T&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кроме того, должно выполняться условие &amp;lt;tex&amp;gt;P_j/S_j \le T&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt; j = 1..m - 1 &amp;lt;/tex&amp;gt;, так как это нижняя оценка времени выполнения работ &amp;lt;tex&amp;gt; J_1...J_{m-1}&amp;lt;/tex&amp;gt;. Исходя из этого получаем нижнюю границу &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\max\{\max\limits_{j=1}^{m-1} {P_j \over S_j}, {P_n \over S_m}\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будем назвать &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt;-ом работы &amp;lt;tex&amp;gt; p_i(t) &amp;lt;/tex&amp;gt; - невыполненную часть работы &amp;lt;tex&amp;gt; p_i &amp;lt;/tex&amp;gt; в момент времени &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее построим расписание, которое достигает нашей оценки &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt;, с помощью &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt;-алгоритма.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt; - алгоритм:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tex&amp;gt;t \leftarrow 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''WHILE''' существуют работы с положительным &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt;&lt;br /&gt;
       Assign(t)&lt;br /&gt;
       &amp;lt;tex&amp;gt;t1 \leftarrow min(s&amp;gt;t |&amp;lt;/tex&amp;gt;находим следующую выполненную работу,где &amp;lt;tex&amp;gt; s&amp;lt;/tex&amp;gt; - время ее окончания &amp;lt;tex&amp;gt; ) &amp;lt;/tex&amp;gt;&lt;br /&gt;
       &amp;lt;tex&amp;gt;t2 \leftarrow &amp;lt;/tex&amp;gt; найти минимальное &amp;lt;tex&amp;gt;s &amp;gt; t&amp;lt;/tex&amp;gt;. Для которого выполняется для некоторых работ &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; , &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;:&amp;lt;tex&amp;gt; level_i(t)&amp;gt;level_j(t)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;  level_i(s) == level_j(s)&amp;lt;/tex&amp;gt;&lt;br /&gt;
       &amp;lt;tex&amp;gt; t \leftarrow min(t1,t2) &amp;lt;/tex&amp;gt; //поиск следующего момента времени ,в который нужно будет перераспределить машины/работы&lt;br /&gt;
   Построение расписания&lt;br /&gt;
&lt;br /&gt;
Функция &amp;lt;tex&amp;gt;Assign(t)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tex&amp;gt;J &amp;lt;/tex&amp;gt; - множество работ с положительным &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;M = \{M_1,...,M_m\}&amp;lt;/tex&amp;gt; - множество всех станков&lt;br /&gt;
   '''WHILE''' множества &amp;lt;tex&amp;gt;J&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; не пустые&lt;br /&gt;
      Найти множество работ &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; подмножество &amp;lt;tex&amp;gt;J&amp;lt;/tex&amp;gt; ,&amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt; которых максимальный&lt;br /&gt;
      &amp;lt;tex&amp;gt;r \leftarrow min&amp;lt;/tex&amp;gt;(|&amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;|,|&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;|)&lt;br /&gt;
      Назначаем работы из множества &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; самых быстрых машин из множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;tex&amp;gt;J \leftarrow J&amp;lt;/tex&amp;gt;\&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;&lt;br /&gt;
      удаляем из мн-ва &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; самых быстрых машин&lt;br /&gt;
&lt;br /&gt;
==Доказательство корректности алгоритма==&lt;br /&gt;
Так как нижняя граница &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\max\{\max\limits_{j=1}^{m-1} {P_j \over S_j}, {P_n \over S_m}\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
то достаточно показать, что составленное расписание достигает этой оценки.&lt;br /&gt;
&lt;br /&gt;
Будем считать, что в начале алгоритма все работы упорядочены, как было сказано ранее: &amp;lt;tex&amp;gt; p_1(0) \ge p_2(0) \ge ... \ge p_n(0) &amp;lt;/tex&amp;gt;. Это утверждение не меняется на протяжении всего выполнения алгоритма, для любого момента времени. Получаем: &amp;lt;tex&amp;gt; p_1(t) \ge p_2(t) \ge ... \ge p_n(t) &amp;lt;/tex&amp;gt;. Докажем что алгоритм составляет расписание в соответствии с этим свойством. Чтобы доказать этот факт, будем считать что в любой момент времени &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; нет простоев машин, когда есть хотя бы одна невыполненная работа. Получаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;  T(s_1 + ... + s_m) = p_1 + p_2 + ... + p_n &amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt; T = {P_n \over S_m} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом необходимая оценка достигается нашим алгоритмом.&lt;br /&gt;
&lt;br /&gt;
Допустим хотя бы одна машина простаивает, в момент когда есть невыполненные работы, мы имеем следующее неравенство для времен окончания работ (обозначим далее как &amp;lt;tex&amp;gt; f_i &amp;lt;/tex&amp;gt;) на станках &amp;lt;tex&amp;gt;M_1 ... M_m&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f_1 \ge f_2 \ge ... \ge f_m &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае, если &amp;lt;tex&amp;gt; f_i &amp;lt; f_{i+1} &amp;lt;/tex&amp;gt; для некоторого &amp;lt;tex&amp;gt; 1 \le i \le m-1 &amp;lt;/tex&amp;gt;, Level последней работы выполнявшейся на станке &amp;lt;tex&amp;gt; M_i &amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt; f_i - \varepsilon &amp;lt;/tex&amp;gt;. Где &amp;lt;tex&amp;gt; \varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt; достаточно мал, и меньше чем &amp;lt;tex&amp;gt;Level&amp;lt;/tex&amp;gt; последней работы на станке &amp;lt;tex&amp;gt; M_{i+1} &amp;lt;/tex&amp;gt;. Пришли к противоречию.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; f_1 = f_2 = f_3 = ... = f_j &amp;gt; f_{j+1}&amp;lt;/tex&amp;gt; ,где &amp;lt;tex&amp;gt; j &amp;lt; m &amp;lt;/tex&amp;gt;. Чтобы работы завершились в момент времени &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; необходимо начать их в момент времени 0. Так как если это не выполняется, то у нас найдется работа &amp;lt;tex&amp;gt; J_i &amp;lt;/tex&amp;gt; , которая начинается позже &amp;lt;tex&amp;gt; t = 0 &amp;lt;/tex&amp;gt; и заканчивается в &amp;lt;tex&amp;gt; T &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; p_1(0) \ge p_2(0) \ge ... \ge p_m(0) \ge p_i(0) &amp;lt;/tex&amp;gt;. Из чего следует, что &amp;lt;tex&amp;gt; p_1(T - \varepsilon) \ge ... \ge p_m(T - \varepsilon) \ge p_i(T - \varepsilon) &amp;gt; 0 &amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; удовлетворяющего условию &amp;lt;tex&amp;gt; 0 \le \varepsilon &amp;lt; T - t &amp;lt;/tex&amp;gt;. Таким образом, до момента времени &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; нет простаивающих машин. Противоречие. Получаем &amp;lt;tex&amp;gt; T = {P_j \over S_j} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
[[Файл:Qpmtncmax.png|600px|thumb|right|Картинка к примеру]]&lt;br /&gt;
&lt;br /&gt;
Пусть у нас есть 6 работ и 3 станка. Покажем работу алгоритма для данного случая.&lt;br /&gt;
&lt;br /&gt;
В начальный момент времени начинаем обрабатывать работы с наибольшим временем выполнения &amp;lt;tex&amp;gt;J_1-J_3&amp;lt;/tex&amp;gt; на станках &amp;lt;tex&amp;gt;M_1-M_3&amp;lt;/tex&amp;gt; соответственно. В момент времени &amp;lt;tex&amp;gt;T_1&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;lvl&amp;lt;/tex&amp;gt; 1-ой работы и 2-ой работы совпадает. С этого момента начинаем обрабатывать работы &amp;lt;tex&amp;gt; J_1,J_2&amp;lt;/tex&amp;gt; синхронно на станках: &amp;lt;tex&amp;gt;M_1 M_2&amp;lt;/tex&amp;gt;. В момент времени &amp;lt;tex&amp;gt;T_2&amp;lt;/tex&amp;gt; работа &amp;lt;tex&amp;gt;J_3&amp;lt;/tex&amp;gt; опускается до уровня работы &amp;lt;tex&amp;gt;J_4&amp;lt;/tex&amp;gt;.Работы &amp;lt;tex&amp;gt; J_3,J_4&amp;lt;/tex&amp;gt; выполняем одновременно на одном станке &amp;lt;tex&amp;gt; M_3&amp;lt;/tex&amp;gt;. В момент времени &amp;lt;tex&amp;gt;T_3&amp;lt;/tex&amp;gt; начинаем выполнять первые четыре работы на всех станках одновременно, далее просто добавятся работы &amp;lt;tex&amp;gt;J_5 J_6&amp;lt;/tex&amp;gt; и все работы закончатся одновременно.&lt;br /&gt;
&lt;br /&gt;
==Время работы==&lt;br /&gt;
Level-алгоритм вызывает функцию Assign(t) в самом худшем случае &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; раз. Функция Assign(t) выполняется за &amp;lt;tex&amp;gt;O(nm)&amp;lt;/tex&amp;gt;. Итоговое время работы &amp;lt;tex&amp;gt;O(n^2m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 379 стр. {{---}} ISBN 978-3-540-69515-8&lt;/div&gt;</summary>
		<author><name>217.118.78.110</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%91%D0%B5%D0%B9%D0%BA%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%93%D0%B8%D0%BB%D0%BB%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%B2%D1%8D%D1%8F&amp;diff=22669</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%91%D0%B5%D0%B9%D0%BA%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%93%D0%B8%D0%BB%D0%BB%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%B2%D1%8D%D1%8F&amp;diff=22669"/>
				<updated>2012-05-23T21:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| statement = Существуют такие оракулы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\mathrm{P^A} = \mathrm{NP^A} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{P^B} \ne \mathrm{NP^B} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
| proof = &lt;br /&gt;
'''Существование оракула &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Рассмотрим [[PS-полнота языка верных булевых формул с кванторами (TQBF) | PS-полный язык &amp;lt;tex&amp;gt;\mathrm{TQBF}&amp;lt;/tex&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\mathrm{P^{TQBF}}   \overset{(1)}{\subseteq}&lt;br /&gt;
\mathrm{NP^{TQBF}}  \overset{(2)}{\subseteq}&lt;br /&gt;
\mathrm{NPS^{TQBF}} \overset{(3)}{=}&lt;br /&gt;
\mathrm{PS^{TQBF}}  \overset{(4)}{=}&lt;br /&gt;
\mathrm{PS}         \overset{(5)}{\subseteq}&lt;br /&gt;
\mathrm{P^{TQBF}}&lt;br /&gt;
\Rightarrow&lt;br /&gt;
&amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow \mathrm{P^{TQBF}} = \mathrm{NP^{TQBF}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{P} \subseteq \mathrm{NP} \Rightarrow \mathrm{P^{TQBF}} \subseteq \mathrm{NP^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{NP} \subseteq \mathrm{NPS} \Rightarrow \mathrm{NP^{TQBF}} \subseteq \mathrm{NPS^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# По [[ Класс PS. Теорема Сэвича. Совпадение классов NPS и PS | теореме Сэвича]] &amp;lt;tex&amp;gt; \mathrm{NPS^{TQBF}} = \mathrm{PS^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{TQBF} \in \mathrm{PS} \Rightarrow \mathrm{PS^{TQBF}} = \mathrm{PS} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{TQBF} \in \mathrm{PSC} \Rightarrow \mathrm{PS} \subseteq \mathrm{P^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Существование оракула &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — произвольное множество, а &amp;lt;tex&amp;gt;U_B = \{1^n | \exists x \in B : |x| = n\}&amp;lt;/tex&amp;gt;. Ясно, что &amp;lt;tex&amp;gt;\forall B \Rightarrow U_B \in \mathrm{NP^B}&amp;lt;/tex&amp;gt; (сертификатом будет слово нужной длины из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;). Построим такое множество &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P^B}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пронумеруем некоторым образом все машины Тьюринга, имеющие доступ к оракулу языка &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, и рассмотрим получившуюся последовательность &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt;. Построение множества &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разделим на счетное число стадий, на каждой из которых множество пополнится конечным числом элементов. Будем строить &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; так, чтобы на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й стадии было выполнено: &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; не разрешает язык &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время не большее, чем &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;.  Очевидно, что это утверждение сильнее, чем &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P^B}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 0-я стадия: &amp;lt;tex&amp;gt;B \leftarrow \emptyset &amp;lt;/tex&amp;gt;.&lt;br /&gt;
* &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-я стадия. Стадии с 0-й по &amp;lt;tex&amp;gt;(i-1)&amp;lt;/tex&amp;gt;-ю пройдены, &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — конечное множество слов. Пусть самое длинное из них состоит из &amp;lt;tex&amp;gt;(n-1)&amp;lt;/tex&amp;gt;-го символа. Запустим машину &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; на входе &amp;lt;tex&amp;gt;1^n&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; шагов. Когда &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; требуется ответ оракула языка &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; о слове &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, будем определять принадлежность этого слова к &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
** если принадлежность &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; была определена на одной из предудщих стадий, то она сохраняется;&lt;br /&gt;
** если принадлежность &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; не установлена ранее, то далее считаем, что &amp;lt;tex&amp;gt;x \not\in B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Но &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; могла остановится раньше, чем за &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; шагов и вернуть какое-либо значение. Так как &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; строится с условием &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; не разрешает &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;, то решение машины о принадлежности слова должно быть неверным:&lt;br /&gt;
* если &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; приняла слово, то исключим из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; все слова вида &amp;lt;tex&amp;gt;\{0,1\}^n&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; отклонила слово, то выберем слово &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, принадлежность которого &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; еще не определено. Добавим &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Такое слово всегда найдется, так как на предыдущий шагах мы могли сделать не более, чем &amp;lt;tex&amp;gt;2^n-1&amp;lt;/tex&amp;gt; запросов к оракулу (то есть определить принадлежность &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; не более &amp;lt;tex&amp;gt;2^n-1&amp;lt;/tex&amp;gt; слов длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;), а всего слов длины n &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Во множестве &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; на каждой стадии содержится конечное число элементов, так как на каждой стадии в &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; может быть добавлено не более чем &amp;lt;tex&amp;gt;2^{n-1}+1&amp;lt;/tex&amp;gt; слов. &lt;br /&gt;
&lt;br /&gt;
Из построения получаем, что никакая машина не может разрешить &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P_B}&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;
| statement = Методом диагонализации нельзя доказать, что &amp;lt;tex&amp;gt;\mathrm{P} \neq \mathrm{NP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ Утверждение&lt;br /&gt;
| statement = Если существует решение вопроса равенства &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \mathrm{NP}&amp;lt;/tex&amp;gt;, то оно не должно &amp;quot;релятивизоваться&amp;quot;, поэтому стандартные техники, например, диагонализация не применима.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>217.118.78.110</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%91%D0%B5%D0%B9%D0%BA%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%93%D0%B8%D0%BB%D0%BB%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%B2%D1%8D%D1%8F&amp;diff=22668</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%91%D0%B5%D0%B9%D0%BA%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%93%D0%B8%D0%BB%D0%BB%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%B2%D1%8D%D1%8F&amp;diff=22668"/>
				<updated>2012-05-23T20:03:28Z</updated>
		
		<summary type="html">&lt;p&gt;217.118.78.110: /* Теорема */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Теорема==&lt;br /&gt;
{{ Теорема&lt;br /&gt;
| statement = Существуют такие оракулы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\mathrm{P^A} = \mathrm{NP^A} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{P^B} \ne \mathrm{NP^B} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
| proof = &lt;br /&gt;
'''Существование оракула &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Рассмотрим [[PS-полнота языка верных булевых формул с кванторами (TQBF) | PS-полный язык &amp;lt;tex&amp;gt;\mathrm{TQBF}&amp;lt;/tex&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\mathrm{P^{TQBF}}   \overset{(1)}{\subseteq}&lt;br /&gt;
\mathrm{NP^{TQBF}}  \overset{(2)}{\subseteq}&lt;br /&gt;
\mathrm{NPS^{TQBF}} \overset{(3)}{=}&lt;br /&gt;
\mathrm{PS^{TQBF}}  \overset{(4)}{=}&lt;br /&gt;
\mathrm{PS}         \overset{(5)}{\subseteq}&lt;br /&gt;
\mathrm{P^{TQBF}}&lt;br /&gt;
\Rightarrow&lt;br /&gt;
&amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow \mathrm{P^{TQBF}} = \mathrm{NP^{TQBF}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{P} \subseteq \mathrm{NP} \Rightarrow \mathrm{P^{TQBF}} \subseteq \mathrm{NP^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{NP} \subseteq \mathrm{NPS} \Rightarrow \mathrm{NP^{TQBF}} \subseteq \mathrm{NPS^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# По [[ Класс PS. Теорема Сэвича. Совпадение классов NPS и PS | теореме Сэвича]] &amp;lt;tex&amp;gt; \mathrm{NPS^{TQBF}} = \mathrm{PS^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{TQBF} \in \mathrm{PS} \Rightarrow \mathrm{PS^{TQBF}} = \mathrm{PS} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt; \mathrm{TQBF} \in \mathrm{PSC} \Rightarrow \mathrm{PS} \subseteq \mathrm{P^{TQBF}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Существование оракула &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — произвольное множество, а &amp;lt;tex&amp;gt;U_B = \{1^n | \exists x \in B : |x| = n\}&amp;lt;/tex&amp;gt;. Ясно, что &amp;lt;tex&amp;gt;\forall B \Rightarrow U_B \in \mathrm{NP^B}&amp;lt;/tex&amp;gt; (сертификатом будет слово нужной длины из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;). Построим такое множество &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P^B}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пронумеруем некоторым образом все машины Тьюринга, имеющие доступ к оракулу языка &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, и рассмотрим получившуюся последовательность &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt;. Построение множества &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разделим на счетное число стадий, на каждой из которых множество пополнится конечным числом элементов. Будем строить &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; так, чтобы на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й стадии было выполнено: &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; не разрешает язык &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время не большее, чем &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;.  Очевидно, что это утверждение сильнее, чем &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P^B}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 0-я стадия: &amp;lt;tex&amp;gt;B \leftarrow \emptyset &amp;lt;/tex&amp;gt;.&lt;br /&gt;
* &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-я стадия. Стадии с 0-й по &amp;lt;tex&amp;gt;(i-1)&amp;lt;/tex&amp;gt;-ю пройдены, &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — конечное множество слов. Пусть самое длинное из них состоит из &amp;lt;tex&amp;gt;(n-1)&amp;lt;/tex&amp;gt;-го символа. Запустим машину &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; на входе &amp;lt;tex&amp;gt;1^n&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; шагов. Когда &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; требуется ответ оракула языка &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; о слове &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, будем определять принадлежность этого слова к &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
** если принадлежность &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; была определена на одной из предудщих стадий, то она сохраняется;&lt;br /&gt;
** если принадлежность &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; не установлена ранее, то далее считаем, что &amp;lt;tex&amp;gt;x \not\in B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Но &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; могла остановится раньше, чем за &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; шагов и вернуть какое-либо значение. Так как &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; строится с условием &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; не разрешает &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;, то решение машины о принадлежности слова должно быть неверным:&lt;br /&gt;
* если &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; приняла слово, то исключим из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; все слова вида &amp;lt;tex&amp;gt;\{0,1\}^n&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; отклонила слово, то выберем слово &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, принадлежность которого &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; еще не определено. Добавим &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Такое слово всегда найдется, так как на предыдущий шагах мы могли сделать не более, чем &amp;lt;tex&amp;gt;2^n-1&amp;lt;/tex&amp;gt; запросов к оракулу (то есть определить принадлежность &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; не более &amp;lt;tex&amp;gt;2^n-1&amp;lt;/tex&amp;gt; слов длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;), а всего слов длины n &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Во множестве &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; на каждой стадии содержится конечное число элементов, так как на каждой стадии в &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; может быть добавлено не более чем &amp;lt;tex&amp;gt;2^{n-1}+1&amp;lt;/tex&amp;gt; слов. &lt;br /&gt;
&lt;br /&gt;
Из построения получаем, что никакая машина не может разрешить &amp;lt;tex&amp;gt;U_B&amp;lt;/tex&amp;gt; за время &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt;U_B \not\in \mathrm{P_B}&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;
| statement = Методом диагонализации нельзя доказать, что &amp;lt;tex&amp;gt;\mathrm{P} \neq \mathrm{NP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ Утверждение&lt;br /&gt;
| statement = Никакой метод, который использует операции релятивизации, не может сказать равны ли &amp;lt;tex&amp;gt;\mathrm{P}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{NP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>217.118.78.110</name></author>	</entry>

	</feed>