<?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=94.25.229.56&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=94.25.229.56&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/94.25.229.56"/>
		<updated>2026-05-19T16:38:19Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%BD%D0%BE%D0%B5_%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%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=60111</id>
		<title>Комплексное евклидово пространство</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%BD%D0%BE%D0%B5_%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%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=60111"/>
				<updated>2017-01-19T12:32:10Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Неравенство Шварца(Коши-Буняковского) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; - линейное пространство над &amp;lt;tex&amp;gt;\mathbb{C}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; задана эрмитова метрическая форма, т.е &amp;lt;tex&amp;gt;G:\: E\times E\longrightarrow \mathbb{C}&amp;lt;/tex&amp;gt; co свойствами:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;1)\: G(\alpha x_{1}+\beta x_{2};y)=\alpha G(x_{1},y)+\beta G(x_{2},y)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; , &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; - комплексные числа&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;2)\: G(x,y)=\overline{G(y,x)}&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;G(x,x)=\overline{G(x,x)} \Longrightarrow G(x,x) \in \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;3)\: G(x,x) \ge 0;\: G(x,x)=0 \Longleftrightarrow x = 0_{E}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
NB 1: &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; полуторалинейна:&lt;br /&gt;
&amp;lt;tex&amp;gt;G(x;\alpha y_{1}+\beta y_{2})=\overline{\alpha}G(x,y_{1})+\overline{\beta}G(x,y_{2})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB 2: &amp;lt;tex&amp;gt;G(x,y)=\left\langle x,y\right\rangle _{G}; x,y \in E(&amp;lt;/tex&amp;gt;над &amp;lt;tex&amp;gt; \mathbb{C})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB 3: &amp;lt;tex&amp;gt;G(x,y)=\left\langle x,y\right\rangle _{G}&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Vert x\Vert_{G}=\sqrt{\left\langle x,x\right\rangle _{G}};&lt;br /&gt;
\:\Vert\alpha x\Vert_{G}=\sqrt{\left\langle \alpha x,\alpha x\right\rangle _{G}}=\sqrt{\alpha\cdot\overline{\alpha}\cdot\left\langle x,x\right\rangle _{G}}=|\alpha|\cdot\Vert x\Vert_{G}&lt;br /&gt;
 &amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примеры==&lt;br /&gt;
&amp;lt;tex&amp;gt;E = \mathbb{C}^{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle x,y\right\rangle =\sum\limits_{i=1}^{n}\xi^{i}\overline{\eta^{i}}&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle y,x\right\rangle =\sum\limits_{i=1}^{n}\eta^{i}\overline{\xi^{i}}=\overline{\sum\limits \overline{\eta^{i}}\xi^{i}}=\overline{\left\langle x,y\right\rangle }&amp;lt;/tex&amp;gt;;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle x,x\right\rangle =\sum\limits_{i=1}^{n}\xi^{i}\overline{\xi^{i}}=\sum\limits_{i=1}^{n}|\xi^{i}|^{2}&amp;gt;0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Неравенство Шварца(Коши-Буняковского)==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;\forall\: x,y\in \mathbb{C}:\;|\left\langle x,y\right\rangle _{G}|\leq\Vert x\Vert_{G}\cdot\Vert y\Vert_{G}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;\left\langle \lambda x+y;\lambda x+y\right\rangle =\Vert\lambda x+y\Vert^{2}\geq0&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\lambda \in \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle \lambda x+y;\lambda x+y\right\rangle = \left\langle \lambda x;\lambda x\right\rangle +\left\langle \lambda x;y\right\rangle +\left\langle y;\lambda x\right\rangle +\left\langle y;y\right\rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;= \lambda\cdot\overline{\lambda}\left\langle x,x\right\rangle +\lambda\cdot(\left\langle x;y\right\rangle +\overline{\left\langle x;y\right\rangle })+\left\langle y,y\right\rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;= \Vert x\Vert^{2}\cdot\lambda^{2}+\lambda\cdot 2Re\left\langle x;y\right\rangle + \Vert y\Vert^{2}\geq0&amp;lt;/tex&amp;gt; - многочлен второй степени, все коэффициенты вещественные&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;D \le 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; D/4=(-Re\left\langle x,y\right\rangle )^{2}-\Vert x\Vert^{2}\cdot\Vert y\Vert^{2}\le0\Longrightarrow |Re\left\langle x,y\right\rangle |\le\Vert x\Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt; - верно для &amp;lt;tex&amp;gt;\forall x,y\in E&amp;lt;/tex&amp;gt;. Назовём это неравенство &amp;lt;tex&amp;gt;(\times)&amp;lt;/tex&amp;gt; - крестик.&lt;br /&gt;
&lt;br /&gt;
Трюк: пусть &amp;lt;tex&amp;gt;\left\langle x,y\right\rangle = |\left\langle x,y\right\rangle|\cdot e^{i\varphi}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\varphi=arg\left\langle x,y\right\rangle&amp;lt;/tex&amp;gt;. Тогда пусть в &amp;lt;tex&amp;gt;(\times): y \longrightarrow y\cdot e^{i\varphi} \Longrightarrow \Vert e^{i\varphi}y\Vert=|e^{i\varphi}|\cdot\Vert y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;\left\langle x,e^{i\varphi}y\right\rangle= \overline{e^{i\varphi}}\left\langle x,y \right\rangle = &lt;br /&gt;
\overline{e^{i\varphi}}e^{i\varphi}\left|\left\langle x, y\right\rangle\right| = \left|\left\langle x, y\right\rangle\right|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим в &amp;lt;tex&amp;gt;(\times)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;e^{i\varphi}y \: : |Re\left\langle x,e^{i\varphi}y\right\rangle|&lt;br /&gt;
\le\Vert x\Vert\cdot\Vert e^{i\varphi}y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
левая часть равна &amp;lt;tex&amp;gt;|Re|\left\langle x,y\right\rangle|| = |\left\langle x,y\right\rangle|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
правая часть равна &amp;lt;tex&amp;gt;\Vert x \Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;|\left\langle x,y\right\rangle| \le \Vert x \Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=следствие из Шварца, неравенство треугольника&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;\Vert x+y \Vert \leq \Vert x\Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= Рассмотрим &amp;lt;tex&amp;gt;\left\langle x+y, x+y\right\rangle={\Vert x+y \Vert}^{2} = \Vert x\Vert^{2}+\left\langle x,y\right\rangle+\left\langle y,x\right\rangle + \Vert y\Vert^{2} = \Vert x\Vert^{2}+2Re\left\langle x,y\right\rangle+ \Vert y\Vert^{2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Re\left\langle x,y\right\rangle \le |\left\langle x,y\right\rangle| \le \Vert x\Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt; (из неравенства Шварца)&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;{\Vert x+y \Vert}^{2} \le \Vert x\Vert^{2}+2\cdot\Vert x\Vert\cdot\Vert y\Vert+ \Vert y\Vert^{2}=(\Vert x\Vert+\Vert y\Vert)^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Взяв корень из левой и правой части, получим искомое неравенство.&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: Алгебра и геометрия 1 курс]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7&amp;diff=55577</id>
		<title>Функциональный анализ</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7&amp;diff=55577"/>
				<updated>2016-10-17T22:14:44Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* 46.	О размерности Ker(I-A) компактного А. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Здесь я постараюсь написать теоретический минимум по второй части курса функционального анализа.&lt;br /&gt;
&lt;br /&gt;
Большая часть материала взята из Википедии, чтобы не перебивать формулы и все такое. Все остальное бралось из конспектов, лучший из них лежит на firun.ru&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функциональный анализ''' — раздел математики, в котором изучаются бесконечномерные пространства (в основном пространства функций) и их отображения.&lt;br /&gt;
&lt;br /&gt;
==Краткое содержание 5 семестра (версия 2009)==&lt;br /&gt;
&lt;br /&gt;
*'''Метрическое пространство''' &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; есть множество точек с '''метрикой''' &amp;lt;tex&amp;gt;d \colon M \times M \to \mathbb{R}&amp;lt;/tex&amp;gt;:&lt;br /&gt;
# &amp;lt;tex&amp;gt;d(x,\;y) \ge 0 ; d(x,\;y)=0\Leftrightarrow x=y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;d(x,\;y)=d(y,\;x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;d(x,\;z)\leqslant d(x,\;y)+d(y,\;z)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Метрическое пространство называется '''полным''', если любая фундаментальная последовательность в нём сходится к некоторому элементу этого пространства.&lt;br /&gt;
&lt;br /&gt;
*'''Банаховым пространством''' (''B-пространством'') называется нормированное линейное пространство, полное по метрике, порождённой нормой.&lt;br /&gt;
&lt;br /&gt;
*'''Пространство непрерывных функций''' — линейное нормированное пространство, элементами которого являются непрерывные на отрезке &amp;lt;tex&amp;gt;[a,b]&amp;lt;/tex&amp;gt; функции (обычно обозначается &amp;lt;tex&amp;gt;{\mathrm C}[a,b]&amp;lt;/tex&amp;gt;). '''Норма''' в этом пространстве определяется следующим образом: &amp;lt;tex&amp;gt;||x||_{{\mathbf C}[a,b]}=\max_{t\in [a,b]}|x(t)|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Теорема Рисса — Фреше:''' Для любого непрерывного линейного функционала &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; на Гильбертовом пространстве &amp;lt;tex&amp;gt; H&amp;lt;/tex&amp;gt; существует единственный вектор &amp;lt;tex&amp;gt;y \in H&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;f(x)= \langle x,y \rangle&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;x \in H&amp;lt;/tex&amp;gt;. При этом норма линейного функционала &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; совпадает с нормой вектора &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\|f\|=\sup_{\|x\|=1} |f(x)|= \sqrt{\langle y,y \rangle}&amp;lt;/tex&amp;gt;. Теорема также означает, что пространство всех линейных ограниченных функционалов над &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; изоморофно пространству &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*'''Теорема (Хан-Банах)''' о продолжении линейного функционала с сохранением мажоранты: любой линейный функционал &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;, определённый на подпространстве &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; линейного пространства &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; и удовлетворяющий условию &amp;lt;tex&amp;gt;|f(x)| \leq p(x), \forall x \in L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt; — некоторый положительно однородный функционал (определённый на всем пространстве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;) то &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt; может быть продолжен на все пространство &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; с сохранением этого условия.&lt;br /&gt;
&lt;br /&gt;
*'''Теорема (Хан-Банах)''' о непрерывном продолжении линейного функционала: всякий линейный функционал &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;, определённый на линейном многообразии &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; линейного нормированного пространства &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, можно продолжить на все пространство с сохранением нормы.&lt;br /&gt;
&lt;br /&gt;
*Следствие: для любых двух различных точек линейного пространства существует линейный функционал, определённый на всем пространстве и такой, что его значения в этих точках различны.&lt;br /&gt;
&lt;br /&gt;
* '''Ядром''' линейного отображения &amp;lt;tex&amp;gt;f\colon A\to B&amp;lt;/tex&amp;gt; называются подмножество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, которое отображается в нуль: &amp;lt;tex&amp;gt;\mbox{Ker}\,f = \{ x\in A\mid f(x) = 0 \}&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; — оператор, действующий в банаховом пространстве &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;. Число λ называется '''регулярным''' для оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, если оператор &amp;lt;tex&amp;gt;R(\lambda)=(A - \lambda I)^{-1}&amp;lt;/tex&amp;gt;, называемый '''резольвентой''' оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, определён на всём &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; и непрерывен. Множество регулярных значений оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется '''резольвентным множеством''' этого оператора, а дополнение резольвентного множества — '''спектром''' этого оператора.&lt;br /&gt;
&lt;br /&gt;
==Билеты - 5 семестр==&lt;br /&gt;
===1.	Принцип вложенных шаров в полном МП.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - полное МП, &amp;lt;tex&amp;gt;\overline{V}_{r_i} \subset X,\; \overline{V}_{r_{i+1}} \subset \overline{V}_{r_i},\; r_i \rightarrow 0 \Rightarrow \exists ! d \in \cap \overline{V}_{r_i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===2.	Теорема Бэра о категориях.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Замыкание''' &amp;lt;tex&amp;gt;Cl \; A = F&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; - замкнутое, &amp;lt;tex&amp;gt;A \subseteq F&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt; замкнутого &amp;lt;tex&amp;gt;G: A \subseteq G \Rightarrow F \subseteq G&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''всюду плотно''' в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;Cl \; A = X&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''нигде не плотно''' в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\forall V_r(x)\; \exists V_{r_1}(y) \subset V_r(x): V_{r_1}(y) \cap A = \O&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''I категории по Бэру''' в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A = \cup A_i&amp;lt;/tex&amp;gt; (счетное объединение), &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; нигде не плотно в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, иначе '''II категории'''&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - полное МП &amp;lt;tex&amp;gt;\Rightarrow X&amp;lt;/tex&amp;gt; - II категории в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===3.	Критерий компактности Хаусдорфа в МП.===&lt;br /&gt;
&lt;br /&gt;
[[Теорема Хаусдорфа об ε-сетях]]&lt;br /&gt;
&lt;br /&gt;
===4.	Пространство &amp;lt;tex&amp;gt;R^{\infty}&amp;lt;/tex&amp;gt;: метрика, покоординатная сходимость.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;(x_1^n, x_2^n, \ldots, x_m^n, \ldots) \to (x_1, x_2, \ldots, x_m, \ldots) \Leftrightarrow \forall m : x_m^n \to x_m&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\rho(x,y) = \sum\limits_{m=1}^{\infty}\frac{1}{2^m} \cdot \frac{|x_m - y_m|}{1+|x_m - y_m|}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.	Компактность прямоугольника в &amp;lt;tex&amp;gt;R^{\infty}&amp;lt;/tex&amp;gt;.===&lt;br /&gt;
&lt;br /&gt;
ну компактен, хуле&lt;br /&gt;
&lt;br /&gt;
===6.	Постранство S(E, &amp;lt;tex&amp;gt;\mu&amp;lt;/tex&amp;gt;).===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;S(E, \mu)&amp;lt;/tex&amp;gt; - пространство измеримых функций на &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;\mu&amp;lt;/tex&amp;gt;. На этом пространстве определена метрика &amp;lt;tex&amp;gt;\rho (f, g) = \int\limits_E \frac{|f-g|}{1+|f-g|} d\mu&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===7.	Норма в линейном множестве, определение предела по норме, арифметика предела.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Норма''' &amp;lt;tex&amp;gt;\| \cdot \| : X \to \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\|x\| \geq 0, \; \|x\| = 0 \Leftrightarrow x=0&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\|\alpha x\| = |\alpha|\|x\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\|x+y\| \leq \|x\| + \|y\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;x_n&amp;lt;/tex&amp;gt; '''сходится по норме''' к &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\|x_n - x\| \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===8.	Эквивалентность норм в конечномерном НП.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;\| \cdot \|_1 \sim \| \cdot \|_2&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\exists a, b \; \forall x : a\|x\|_1 \leq \|x\|_2 \leq b\|x\|_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс&lt;br /&gt;
|statement=&lt;br /&gt;
В конечномерном пространстве любые две нормы эквивалентны&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===9.	Замкнутость конечномерного линейного подмножества НП.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=следствие из теоремы Рисса&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - НП, &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; - конечномерное линейное подмножество &amp;lt;tex&amp;gt;X \Rightarrow Y&amp;lt;/tex&amp;gt; - замкнутое&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===10.	Лемма Рисса о почти перпендикуляре, пример ее применения.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|author=Рисс, о почти перпендикуляре&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; - собственное подпространство &amp;lt;tex&amp;gt;X \Rightarrow \forall \varepsilon \in (0, 1) \; \exists z_{\varepsilon} \in X : \|z_{\varepsilon}\| = 1,\; \rho(z_{\varepsilon}, Y) \geq 1 - \varepsilon&amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt;\rho(z, Y) = \inf\limits_{y \in Y} \|z-y\|&amp;lt;/tex&amp;gt;)&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall z \notin Y \; \forall \varepsilon\; \exists y_{\varepsilon} \in Y : \rho(z, Y) \leq \|z - y_{\varepsilon}\| \leq \frac{1}{1 - \varepsilon} \cdot \rho(z, Y)&amp;lt;/tex&amp;gt; (по свойствам inf). Тогда положим &amp;lt;tex&amp;gt;z_{\varepsilon}&amp;lt;/tex&amp;gt; из условия леммы равным &amp;lt;tex&amp;gt;\frac{z - y_{\varepsilon}}{\|z - y_{\varepsilon}\|}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|author=пример применения леммы&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - бесконечномерное НП &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; любой шар в нем - не компакт&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===11.	Банаховы пространства на примерах С[0,1] и Lp(E).===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Банахово пространство''' - полное нормированное пространство&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;C[0,1]&amp;lt;/tex&amp;gt; - пространство непрерывных функций на &amp;lt;tex&amp;gt;[0,1]&amp;lt;/tex&amp;gt;. На этом пространстве определена норма &amp;lt;tex&amp;gt;\|f\| = \max\limits_{t \in [0,1]}|f(t)|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;L_p(E)&amp;lt;/tex&amp;gt; - пространство измеримых на &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; функций&amp;lt;tex&amp;gt;f : \int\limits_E|f|^p &amp;lt; +\infty&amp;lt;/tex&amp;gt;. На этом пространстве определена норма &amp;lt;tex&amp;gt;\|f\| = \sqrt[p]{\int\limits_E |f|^p}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===12.	Определение скалярного произведения, равенство параллелограмма, неравенство Шварца.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Скалярное произведение''' &amp;lt;tex&amp;gt;\langle x,y \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\langle\alpha x_1 + \beta x_2,y \rangle = \alpha\langle x_1, y \rangle + \beta \langle x_2, y \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\langle x,y \rangle = \langle y,x \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\langle x,x \rangle \geq 0, \langle x,x \rangle = 0 \Leftrightarrow x = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
'''Равенство параллелограмма''': &amp;lt;tex&amp;gt;2\|x\|^2 + 2\|y\|^2 = \|x+y\|^2 + \|x-y\|^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Неравенство Шварца''': &amp;lt;tex&amp;gt;|\langle x,y \rangle| \leq \sqrt{\langle x,x \rangle} \cdot \sqrt{\langle y,y \rangle}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===13.	Наилучшее приближение в НП в случае конечномерного подпространства.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall x \; \exists y^* : E_n(x) = \|x - y^*\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===14.	Наилучшее приближение в унитарном пространстве, неравенство Бесселя.===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; - ортонормированная система.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\alpha_i(x) = \langle x,e_i \rangle, \; \sum \alpha_i(x)e_i&amp;lt;/tex&amp;gt; - абстрактный ряд Фурье&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\delta_n(x) = \sum\limits_{i=1}^n \alpha_i(x)e_i,\; E_n(x) = \|x-\delta_n(x)\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Неравенство Бесселя''': &amp;lt;tex&amp;gt;\sum \alpha_i^2(x) \leq \|x\|^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===15.	Определение Гильбертова пространства, сепарабельность и полнота.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Гильбертово пространство''' - полное унитарное пространство. То есть для него выполняется:&lt;br /&gt;
#Введено скалярное произведение&lt;br /&gt;
#Введена норма: &amp;lt;tex&amp;gt;\|x\| = \sqrt{\langle x,x \rangle}&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\|x_n - x_m\| \to 0 \Rightarrow \exists x : \|x_n - x\| \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пространство '''сепарабельно''', если у него существует счетное абсолютно плотное подмножество&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
В гильбертовом пространстве существует ортонормированный базис тогда и только тогда, когда оно сепарабельно&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===16.	Теорема Рисса-Фишера, равенство Парсеваля.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс - Фишер&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; - ортонормированная система в гильбертовом пространстве &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\sum\limits_{i=1}^{\infty} \alpha_i^2 \leq +\infty&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists ! x \in H : \alpha_i = \langle x, e_i \rangle&amp;lt;/tex&amp;gt; и выполняется '''равенство Парсеваля''': &amp;lt;tex&amp;gt;\sum \alpha_i^2(x) = \|x\|^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===17.Наилучшее приближение в Н для случая выпуклого,замкнутого множества,&amp;lt;tex&amp;gt;H=H_1 \oplus H_2&amp;lt;/tex&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; - замкнутое выпуклое подмножество гильбертова пространства &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\forall x \in H\; \exists \overline{x} : \|x - \overline{x}\| = \inf\limits_{y \in M} \|x - y\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;H_1&amp;lt;/tex&amp;gt; - подпространство &amp;lt;tex&amp;gt;H,\; H_2 = H_1^{\perp} = \{y \mid \forall x \in H_1 : y \perp x\}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\forall x \in H\; \exists!x_1, x_2 : x = x_1 + x_2,\; x_i \in H_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===18.	Непрерывный линейный функционал и его норма.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Линейный функционал &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; '''ограничен''', если &amp;lt;tex&amp;gt;\|f\| = \sup\limits_{\|x\| \leq 1} |f(x)| &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Линейный функционал &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; '''непрерывен''' в &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, если&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall \{x_n\} : x_n \to x \Rightarrow f(x_n) \to f(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен в &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен в &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; ограничен&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===19.	Связь между непрерывностью линейного функционала и замкнутостью его ядра.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Ядро''' линейного функционала &amp;lt;tex&amp;gt;Ker f = \{x \mid f(x) = 0\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;Ker f&amp;lt;/tex&amp;gt; замкнуто&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===20.	Продолжение по непрерывности линейного функционала со всюду плотного линейного подмножества НП.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - НП, &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; всюду плотно в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; - ограниченный линейный функционал из &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists !g : X \to \mathbb{R} : g(y) = f(y),\; \|g\| = \|f\|&amp;lt;/tex&amp;gt; (существует единственное продолжение, сохраняющее норму)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===21.	Теорема Хана-Банаха для НП (сепарабельный случай).===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - линейное множество с введенной на нем полунормой &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;Y \subset X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f : Y \to \mathbb{R}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;|f(y)| \leq p(y)&amp;lt;/tex&amp;gt; (то есть функционал подчинен полунорме), &amp;lt;tex&amp;gt;z \notin Y&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;Z = L(Y, z)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists g : Z \to \mathbb{R} : g(y) = f(y),\; g(x) \leq p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Хан - Банах&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - линейное множество с введенной на нем полунормой &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;Y \subset X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f : Y \to \mathbb{R}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;|f(y)| \leq p(y)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists g : X \to \mathbb{R} : g(y) = f(y),\; g(x) \leq p(x)&amp;lt;/tex&amp;gt;, то есть продолжение &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===22.	Два следствия из теоремы Хана-Банаха.===&lt;br /&gt;
&lt;br /&gt;
'''Следствие 1''': &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - НП, &amp;lt;tex&amp;gt;x_0 \in X&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists f : f(x_0) = \|x_0\|,\; \|f\| = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Следствие 2''': &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - НП, &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n\}&amp;lt;/tex&amp;gt; - ЛНЗ &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists \{f_1, f_2, \ldots, f_n\} : f_i(e_j) = \delta_{ij}&amp;lt;/tex&amp;gt; (биортогональная система)&lt;br /&gt;
&lt;br /&gt;
===23.	Теорема Рисса об общем виде линейного непрерывного функционала в Н.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall f \in H^*\; \exists ! y \in H : f(x) = \langle x, y \rangle&amp;lt;/tex&amp;gt;, причем &amp;lt;tex&amp;gt;\|f\| = \|y\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===24.	Непрерывный линейный оператор и его норма.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Линейный оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''ограничен''', если &amp;lt;tex&amp;gt;\|A\| = \sup\limits_{\|x\| \leq 1} \|Ax\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Линейный оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''непрерывен''' в &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, если&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall \{x_n\} : x_n \to x \Rightarrow Ax_n \to Ax&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; непрерывен &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ограничен&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===25.	Продолжение линейного оператора по непрерывности.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A: X_1 \to Y,\; Cl\;X_1 = X,\; Y&amp;lt;/tex&amp;gt; - Банахово, &amp;lt;tex&amp;gt;\|A\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists !\tilde{A} : X \to Y : \tilde{A}x = Ax,\; \|\tilde{A}\| = \|A\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===26.	Полнота пространства L(X,Y).===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;L(X,Y)&amp;lt;/tex&amp;gt; - пространство непрерывных линейных операторов из &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; - Банахово &amp;lt;tex&amp;gt;\Rightarrow L(X,Y)&amp;lt;/tex&amp;gt; - Банахово&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===27.	Теорема Банаха-Штейнгауза.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Банах - Штейнгауз&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\forall x : \sup\limits_n\|A_nx\| &amp;lt; +\infty&amp;lt;/tex&amp;gt; (то есть последовательность поточечно ограничена). Тогда &amp;lt;tex&amp;gt;\sup\limits_n\|A_n\| &amp;lt; +\infty&amp;lt;/tex&amp;gt; (то есть последовательность равномерно ограничена)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===28.	Условие непрерывной обратимости лин. оператора.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - ограниченный линейный оператор из &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;\exists m\; \forall x \in X : m \|x\| \leq \|Ax\|&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt; замкнуто, &amp;lt;tex&amp;gt;\exists A^{-1}:Y \to X,\; \|A^{-1}\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===29.	Теорема Банаха о непрерывной обратимости I-С.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Банах&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - Банахово, &amp;lt;tex&amp;gt;C \in L(X),\; \|C\| &amp;lt; 1&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;I - C&amp;lt;/tex&amp;gt; непрерывно обратим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===30.	Теорема Банаха об обратном операторе.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Банах&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - биективный линейный ограниченный оператор из &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; (оба Банаховы). Тогда &amp;lt;tex&amp;gt;\exists A^{-1}:Y \to X,\; \|A^{-1}\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===31.	Теорема о замкнутом графике.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; непрерывен &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;G_A&amp;lt;/tex&amp;gt; замкнут&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===32.	Теорема об открытом отображении.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; непрерывен, &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - открыто &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;A(G)&amp;lt;/tex&amp;gt; - открыто&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===33.	Теорема об открытости резольвентного множества.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Резольвентное множество''' линейного оператора &amp;lt;tex&amp;gt;\rho(A) = \{\lambda \mid \exists (A - \lambda I)^{-1}&amp;lt;/tex&amp;gt; - непрерывный&amp;lt;tex&amp;gt;\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Спектр''' линейного оператора &amp;lt;tex&amp;gt;\sigma(A) = \mathbb{R} \setminus \rho(A)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\rho(A)&amp;lt;/tex&amp;gt; открыто&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===34.	Вхождение спектра в круг радиуса ||А||.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\sigma(A) \subset \{\lambda \mid |\lambda| \leq \|A\| \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===35.	Спектральный  радиус.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Спектральный радиус''' &amp;lt;tex&amp;gt;r_{\sigma}(A) = \inf\limits_n \sqrt[n]{\|A^n\|}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Относительно спектрального радиуса любого линейного оператора верны следующие утверждения:&lt;br /&gt;
#&amp;lt;tex&amp;gt;r_{\sigma}(A) = \lim\limits_{n \to \infty} \sqrt[n]{\|A\|^n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;\sigma(A) \subset \{\lambda \mid |\lambda| \leq r_{\sigma}(A) \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===36.	Аналитичность резольвенты.===&lt;br /&gt;
&lt;br /&gt;
эммм...&lt;br /&gt;
&lt;br /&gt;
===37.	Непустота спектра ограниченного оператора.===&lt;br /&gt;
&lt;br /&gt;
эммм...&lt;br /&gt;
&lt;br /&gt;
===38.	А* и его ограниченность.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Сопряженным''' к оператору &amp;lt;tex&amp;gt;A : X \to Y&amp;lt;/tex&amp;gt; называется такой оператор &amp;lt;tex&amp;gt;A^* : Y^* \to X^*&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;A^* \varphi = \varphi \circ A&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;A^*\varphi = f : f(x) = \varphi(Ax)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\|A\|=\|A^*\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===39.	Ортогональные дополнения Е и Е*.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Ортогональным дополнением''' линейного множества &amp;lt;tex&amp;gt;M \subset E&amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt;M^{\perp} = \{f \in E^* \mid \forall x \in M f(x) = 0\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt;M^{*\perp} = \{x \in E \mid \forall f \in M^* f(x) = 0\}&amp;lt;/tex&amp;gt;. Заметим, что из непрерывности функционалов следует замкнутость ортогональных дополнений.&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;E^{\perp} = \{0\},\; E^{*\perp} = \{0\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===40.	Ортогональное дополнение R(A).===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - ограниченный ЛО, &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt; замкнуто. Тогда &amp;lt;tex&amp;gt;R(A) = (Ker A^*)^{\perp}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===41.	Ортогональное дополнение R(A*).===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - ограниченный ЛО, &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt; замкнуто. Тогда &amp;lt;tex&amp;gt;R(A^*) = (Ker A)^{\perp}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===42.	Арифметика компактных операторов.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''компактен''', если &amp;lt;tex&amp;gt;\forall G : G&amp;lt;/tex&amp;gt; - ограниченное &amp;lt;tex&amp;gt;\Rightarrow A(G)&amp;lt;/tex&amp;gt; - относительно компактно&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Компактные операторы обладают следующими свойствами:&lt;br /&gt;
#&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;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;AB&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;BA&amp;lt;/tex&amp;gt; - компактные&lt;br /&gt;
#&amp;lt;tex&amp;gt;A_n&amp;lt;/tex&amp;gt; - компактные, &amp;lt;tex&amp;gt;A_n \to A&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный&lt;br /&gt;
#&amp;lt;tex&amp;gt;A : X \to Y&amp;lt;/tex&amp;gt; - компактный, &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - бесконечномерно &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; не может быть непрерывно обратим&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===43.	О компактности А*, сепарабельность R(A).===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;A^*&amp;lt;/tex&amp;gt; - компактный&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===44.	Базис Шаудера, лемма о координатном пространстве.===&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Система точек &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots \} \subset X&amp;lt;/tex&amp;gt; называется '''базисом Шаудера''', если любой элемент пространства &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; единственным образом представим в виде линейной комбинации этих точек&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===45.	Почти конечномерность компактного оператора.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - пространство с базисом Шаудера, &amp;lt;tex&amp;gt;A : X \to X&amp;lt;/tex&amp;gt; - компактный &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\forall \varepsilon \; \exists B, C : A = B+C,\; \|C\| &amp;lt; \varepsilon,\; B&amp;lt;/tex&amp;gt; - конечномерный (то есть &amp;lt;tex&amp;gt;R(B)&amp;lt;/tex&amp;gt; конечномерно), &amp;lt;tex&amp;gt;B&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;
===46.	О размерности Ker(I-A) компактного А.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный &amp;lt;tex&amp;gt;\Rightarrow \dim(Ker (I - A)) &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===47.	Условие замкнутости R(A) на языке решений операторного уравнения.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A \in L(E, F) &amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt; \exists \alpha \; \forall y \in R(A)\;  \exists x \in E : \|x\| \leq \alpha \|y\| , Ax=y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; R(A) &amp;lt;/tex&amp;gt; - замкнуто.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===48.	О замкнутости R(I-A)  компактного А.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть оператор &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - компактный. Тогда &amp;lt;tex&amp;gt; R(I - A) &amp;lt;/tex&amp;gt; - замкнуто&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===49.	Лемма о Ker(I-A)*n компактного А.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный. Тогда &amp;lt;tex&amp;gt; \exists k : Ker(I - A)^{k + 1} = Ker(I - A)^k&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===50.	Об условии справедливости  равенства  R(I-A)=Е.===&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный. Тогда &amp;lt;tex&amp;gt; R(I - A) = X \Leftrightarrow Ker(I - A) = \{0\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===51.	Альтернатива Фредгольма-Шаудера.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=альтернатива Фредгольма - Шаудера&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A : X \to X&amp;lt;/tex&amp;gt; - компактный. Рассмотрим уравнение &amp;lt;tex&amp;gt;y = x - Ax&amp;lt;/tex&amp;gt;. Возможны 2 случая:&lt;br /&gt;
#&amp;lt;tex&amp;gt;Ker(I-A) = \{0\}&amp;lt;/tex&amp;gt;. Тогда уравнение имеет решение при любом &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;Ker(I-A) \neq \{0\}&amp;lt;/tex&amp;gt;. Тогда уравнение имеет решение при &amp;lt;tex&amp;gt;y \in (Ker (I-A)^*)^{\perp}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===52.	О спектре компактного оператора.===&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&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;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Билеты - 6 семестр==&lt;br /&gt;
===1. Сопряженный оператор и его ограниченность===&lt;br /&gt;
&lt;br /&gt;
Будем работать с &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;, как с банаховым пространством.&lt;br /&gt;
&lt;br /&gt;
'''Def''': Пространство всех линейных функционалов на &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; образует линейное пространство (прошлый семестр). &lt;br /&gt;
Это пространство называется '''сопряжённым''' к &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;, оно обычно обозначается &amp;lt;tex&amp;gt;E^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Def''': Пусть &amp;lt;tex&amp;gt;A:E\to F&amp;lt;/tex&amp;gt; — непрерывный линейный оператор, действующий из банахова пространства &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; в банахово пространство &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt;. И пусть &amp;lt;tex&amp;gt;E^*, F^*&amp;lt;/tex&amp;gt; — сопряжённые пространства. Обозначим &amp;lt;tex&amp;gt;\forall x\in E, f\in F^* \langle Ax,f\rangle =f(Ax)&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; — фиксировано, то &amp;lt;tex&amp;gt;\langle Ax,f \rangle &amp;lt;/tex&amp;gt; — линейный непрерывный функционал в &amp;lt;tex&amp;gt;E, \langle Ax,f \rangle \in E^*&amp;lt;/tex&amp;gt;. Таким образом, для &amp;lt;tex&amp;gt;\forall f\in F^*&amp;lt;/tex&amp;gt; определён линейный непрерывный функционал из &amp;lt;tex&amp;gt;E^* &amp;lt;/tex&amp;gt;, поэтому определён оператор &amp;lt;tex&amp;gt;A^*:F^*\to E^*&amp;lt;/tex&amp;gt;, такой что &amp;lt;tex&amp;gt;\langle Ax,f \rangle=\langle x,A^*f \rangle&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&amp;lt;tex&amp;gt;A^*&amp;lt;/tex&amp;gt; называется '''сопряжённым оператором'''.&lt;br /&gt;
&lt;br /&gt;
'''Th''': Пусть задан линейный оператор &amp;lt;tex&amp;gt;A:E\to F&amp;lt;/tex&amp;gt;. Тогда норма оператора &amp;lt;tex&amp;gt;A^*:F^*\to E^*&amp;lt;/tex&amp;gt; совпадает с нормой &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
(оператор проектирования ??)&lt;br /&gt;
&lt;br /&gt;
===2. Ортогональные дополнения Е и Е*===&lt;br /&gt;
&lt;br /&gt;
'''Def''': Пусть &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; некоторое линейное множество. Тогда его '''ортогональное дополнение''' &amp;lt;tex&amp;gt;S^\perp = \{f \in E^* | f(x) = 0 \; \forall x \in S\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Th''': Имеют место соотношения: &amp;lt;tex&amp;gt;E^\perp = \{0\}&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;(E^*)^\perp = \{0\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
(при доказательстве используем теорему Хана-Банаха)&lt;br /&gt;
&lt;br /&gt;
===3. Ортогональное дополнение R(A)===&lt;br /&gt;
&lt;br /&gt;
(Здесь можно написать красивый текст из конспекта про важность теорем и все такое)&lt;br /&gt;
&lt;br /&gt;
'''Th''': Пусть задан линейный оператор &amp;lt;tex&amp;gt;A:E\to F&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; банаховы. Тогда &amp;lt;tex&amp;gt;\overline{R(A)} = (Ker(A^*))^\perp&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===4. Ортогональное дополнение R(A*)===&lt;br /&gt;
&lt;br /&gt;
'''Th''': Пусть множество значений оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; замкнуто: &amp;lt;tex&amp;gt;R(A) = Cl(R(A))&amp;lt;/tex&amp;gt;. Тогда верно &amp;lt;tex&amp;gt;R(A^*) = Cl(R(A^*)) = (Ker(A))^\perp&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===5. Арифметика компактных операторов===&lt;br /&gt;
&lt;br /&gt;
'''Def''': Линейный оператор &amp;lt;tex&amp;gt;A:E\to F&amp;lt;/tex&amp;gt; называется '''компактным''', если он переводит любое ограниченное множество из &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; в относительно компактное множество в &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Примером является оператор Фредгольма: &amp;lt;tex&amp;gt;\psi(s) = \int\limits_a^b\!K(s, t) \varphi(t)\, dt&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Установим несколько свойств:&lt;br /&gt;
&lt;br /&gt;
'''Th''': Пусть операторы &amp;lt;tex&amp;gt;A, B:E\to E&amp;lt;/tex&amp;gt; такие, что &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;AB&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;BA&amp;lt;/tex&amp;gt; компактны.&lt;br /&gt;
&lt;br /&gt;
===6. О компактности А*, сепарабельность R(A)===&lt;br /&gt;
[[Теорема о компактности сопряженного оператора]]&lt;br /&gt;
&lt;br /&gt;
===7. Базис Шаудера, лемма о координатном пространстве===&lt;br /&gt;
&lt;br /&gt;
'''Def''': Система векторов &amp;lt;tex&amp;gt;\{e_n\}&amp;lt;/tex&amp;gt; топологического векторного пространства &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; называется '''базисом Шаудера''', если каждый элемент &amp;lt;tex&amp;gt;f \in E&amp;lt;/tex&amp;gt; разлагается в ''единственный'', сходящийся к &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; ряд по &amp;lt;tex&amp;gt;\{e_n\}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;f= \sum_{i=1}^{\infty} f_i e_i&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;f_i&amp;lt;/tex&amp;gt; — числа, называемые коэффициентами разложения вектора &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; по базису &amp;lt;tex&amp;gt;\{e_n\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===8. Почти конечномерность компактного оператора===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Теперь походим вокруг альтернативы Фредгольма-Шаудера.&lt;br /&gt;
&lt;br /&gt;
===9. О размерности Ker(I-A) компактного А===&lt;br /&gt;
'''Утв.''' Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - компактный оператор, &amp;lt;tex&amp;gt; H = I - A &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда, &amp;lt;tex&amp;gt; dim (Ker H)&amp;lt; +\infty &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Следствие''' Множество решений операторного уравнения &amp;lt;tex&amp;gt; Ax = \lambda x, \lambda \in \mathbb{R} &amp;lt;/tex&amp;gt; конечномерно.&lt;br /&gt;
&lt;br /&gt;
===10. Условие замкнутости R(A) на языке решений операторного уравнения===&lt;br /&gt;
'''Утв.''' Пусть &amp;lt;tex&amp;gt; A \in L(E, F) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \exists \alpha = const : \forall y \in R(A), y = A(x),  \exists x \in E : \|x\| \le \alpha \|y\| &amp;lt;/tex&amp;gt;. ''Тогда'', &amp;lt;tex&amp;gt; R(A) &amp;lt;/tex&amp;gt; - замкнуто.&lt;br /&gt;
&lt;br /&gt;
===11. О замкнутости R(I-A)  компактного А===&lt;br /&gt;
'''Утв.''' Пусть оператор &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - компактный. Тогда, &amp;lt;tex&amp;gt; R(I - A) &amp;lt;/tex&amp;gt; - замкнуто.&lt;br /&gt;
&lt;br /&gt;
===12. Лемма о Ker(I-A)*n компактного А===&lt;br /&gt;
'''Утв.''' Пусть оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - компактный.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; \exists k \in \mathbb{N}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;Ker(I - A)^{k + 1} = Ker(I - A)^k&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===13. Об условии справедливости  равенства  R(I-A)=Е===&lt;br /&gt;
'''Утв.''' Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - компактный оператор. Тогда,&lt;br /&gt;
&amp;lt;tex&amp;gt; R(I - A) = E \Leftrightarrow Ker(I - A) = \{0\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===14. Альтернатива Фредгольма-Шаудера===&lt;br /&gt;
'''Th.''' (''Альтернатива Фредгольма-Шаудера'')&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A : E \rightarrow E &amp;lt;/tex&amp;gt; - компактный оператор, &amp;lt;tex&amp;gt;E - B&amp;lt;/tex&amp;gt;-пространство.&lt;br /&gt;
&lt;br /&gt;
Тогда, &amp;lt;tex&amp;gt; \forall \lambda \neq 0&amp;lt;/tex&amp;gt; возможны только 2 случая:&lt;br /&gt;
# &amp;lt;tex&amp;gt; Ker(\lambda I - A) = \{0\} \Rightarrow \lambda \in \rho(A) &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; Ker(\lambda I - A) \neq \{0\} \Rightarrow &amp;lt;/tex&amp;gt; (уравнение &amp;lt;tex&amp;gt;(\lambda I - A)x = y&amp;lt;/tex&amp;gt; разрешимо относительно &amp;lt;tex&amp;gt;x) \Leftrightarrow y \in (Ker(\lambda I^{*} - A^{*}))^{\bot}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===15. О спектре компактного оператора===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Теперь это называется Теорией Гильберта-Шмидта&lt;br /&gt;
&lt;br /&gt;
===16. О вещественности спектра ограниченного самосопряженного оператора===&lt;br /&gt;
'''Утв.''' Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - ограниченный и самосопряженный оператор. Тогда, &amp;lt;tex&amp;gt;\sigma(A) \subset \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===17. О характеризации спектра и резольвентного множества ограниченного самосопряженного оператора===&lt;br /&gt;
'''Th.''' Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; - ограниченный и самосопряженный оператор. Тогда,&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt; \lambda \in \rho(A) \Leftrightarrow \exists m &amp;gt; 0 : \|(\lambda I - A)x\| \ge m \|x\| &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \lambda \in \sigma(A) \Leftrightarrow \exists \{x_n | \|x_n\| = 1\}&amp;lt;/tex&amp;gt;, т.ч. &amp;lt;tex&amp;gt; \lim_{n \rightarrow \infty}\|(\lambda I - A)x_n\| = 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===18. О числах m- и  m+===&lt;br /&gt;
'''Def.''' &amp;lt;tex&amp;gt; m_{-} = \inf_{\|x\| = 1}\langle Ax, x \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Def.''' &amp;lt;tex&amp;gt; m_{+} = \sup_{\|x\| = 1}\langle Ax, x \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Def.''' Если для некоторого оператора &amp;lt;tex&amp;gt;L : \langle Ax, x \rangle \ge 0 &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется '''неотрицательным'''.&lt;br /&gt;
&lt;br /&gt;
'''Th.''' Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - ограниченный и самосопряженный оператор. Тогда, &amp;lt;tex&amp;gt;\sigma(A) \subset [m_{-}, m_{+}]&amp;lt;/tex&amp;gt;, и&lt;br /&gt;
&amp;lt;tex&amp;gt;m_{-} \in \sigma(A), m_{+} \in \sigma(A)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===19. Спектральный радиус ограниченного самосопряженного оператора===&lt;br /&gt;
'''Th.''' Пусть &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; - ограниченный, самосопряженный оператор. Тогда, &amp;lt;tex&amp;gt;\|A\| = r_{\sigma} = \max\{|m_{-}|, |m_{+}|\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===20. Теорема Гильберта-Шмидта===&lt;br /&gt;
&lt;br /&gt;
===21. О диагонализации компактного  самосопряженного оператора и разложении его резольвенты===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Элементы нелинейного функционального анализа.&lt;br /&gt;
&lt;br /&gt;
===22. Теорема Банаха о сжимающем отображении===&lt;br /&gt;
&lt;br /&gt;
'''Def''': Пусть на замкнутом шаре &amp;lt;tex&amp;gt;\overline{V} \subset X&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - метрическое пространство, определён оператор &amp;lt;tex&amp;gt;A: \overline{V} \subset X \to X&amp;lt;/tex&amp;gt;. Он называется сжатием на &amp;lt;tex&amp;gt;\overline{V}&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\exists\alpha\in(0; 1)&amp;lt;/tex&amp;gt; такой, что для &amp;lt;tex&amp;gt;{\forall}x,y \in M&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;{\rho(Ax,Ay)\leqslant\alpha{\cdot}\rho(x,y)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Th.'''(''Банаха о неподвижной точке'')&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T : \overline{V} \to \overline{V}&amp;lt;/tex&amp;gt; и является сжатием, тогда в этом шаре у оператора &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists !&amp;lt;/tex&amp;gt; неподвижная точка.&lt;br /&gt;
&lt;br /&gt;
[[Теорема Банаха о неподвижной точке]]&lt;br /&gt;
&lt;br /&gt;
===23. Дифференциал Фреше===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;T : V_r(x_0) \to Y&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V_r(x_0) \subset X&amp;lt;/tex&amp;gt; и, кроме того, &amp;lt;tex&amp;gt;X, Y&amp;lt;/tex&amp;gt; - нормированные пространства.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\|\delta x \| &amp;lt; r&amp;lt;/tex&amp;gt;. Тогда, очевидно, &amp;lt;tex&amp;gt;x + \delta x \in V_r(x_0)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt;\delta T(x_0, \delta x) = T(x_0 + \delta x) - T(x_0)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Def.''' Отображение &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; называется дифференцируемым по Фреше в точке &amp;lt;tex&amp;gt;x_0&amp;lt;/tex&amp;gt;, если существует оператор &amp;lt;tex&amp;gt;A_{x_0} \in L(X,Y)&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;\delta T(x_0, \delta x) = A_{x_0}(\delta x) + o(\delta x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;o(\delta x)&amp;lt;/tex&amp;gt; несёт следующий смысл: &amp;lt;tex&amp;gt;\frac{ {\|o(\delta x)\|}_Y } {{\| \delta x \|}_X} \to 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обычно, в случае дифференцируемого отображения используют следующее обозначение: &amp;lt;tex&amp;gt;T_{x_0}' = A_{x_0}&amp;lt;/tex&amp;gt;. Подчеркнем, что &amp;lt;tex&amp;gt;T_{x_0}': X \to Y&amp;lt;/tex&amp;gt;. Аргументом является &amp;quot;отклонение&amp;quot; некоторой точки &amp;lt;tex&amp;gt;x'&amp;lt;/tex&amp;gt; от &amp;lt;tex&amp;gt;x_0&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;x - x_0&amp;lt;/tex&amp;gt;. А результат применения оператора: &amp;lt;tex&amp;gt;T(x') - T(x_0)&amp;lt;/tex&amp;gt; с точностью до &amp;lt;tex&amp;gt;o(\delta x = x' - x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Lm.''' Рассмотрим оператор &amp;lt;tex&amp;gt;T(x, t) =\int_0^1 K(t,s,x(s))ds&amp;lt;/tex&amp;gt;, действующий на &amp;lt;tex&amp;gt;x(t) \in C[0,1]&amp;lt;/tex&amp;gt;, и где &amp;lt;tex&amp;gt;K = W(v, y, z); v, y \in [0, 1]&amp;lt;/tex&amp;gt;, &amp;lt;math&amp;gt; z \in \mathbb R&amp;lt;/math&amp;gt;, и существует непрерывная по &amp;lt;tex&amp;gt;v, y, z&amp;lt;/tex&amp;gt; производная &amp;lt;tex&amp;gt;\frac{\partial K}{\partial z}&amp;lt;/tex&amp;gt;. Тогда в любой точке пространства &amp;lt;tex&amp;gt;C[0,1]&amp;lt;/tex&amp;gt;  это отображение дифференцируемо и его производная Фреше задается интегральным линейным по &amp;lt;tex&amp;gt;\delta x&amp;lt;/tex&amp;gt;оператором: &amp;lt;tex&amp;gt;T_{x_0}'(\delta x, t) = \int_0^1 \frac{\partial K}{\partial z}(t, s, x_0(s))\delta x(s) ds&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===24. Неравенство Лагранжа===&lt;br /&gt;
&lt;br /&gt;
'''Lm.''' (''Неравенство Лагранжа'')&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X, Y&amp;lt;/tex&amp;gt; -- нормированные пространства, &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; -- некоторый шар в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; и дан оператор &amp;lt;tex&amp;gt;T : V \to Y&amp;lt;/tex&amp;gt; и на всем этом шаре &amp;lt;tex&amp;gt;\exists T'(x)&amp;lt;/tex&amp;gt;. Тогда для любых &amp;lt;tex&amp;gt;a, b \in V : \|T(b) - T(a)\| \le M {\|b - a\|}_X&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M = sup_{x \in [a, b]}\|T'(x)\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===25. Локальная теорема о неявном отображении===&lt;br /&gt;
&lt;br /&gt;
'''Th.'''(''о неявном отображении'')&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; - шар в &amp;lt;tex&amp;gt; X, V \subset X&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;W \subset Y&amp;lt;/tex&amp;gt; - шар в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;, и задан оператор &amp;lt;tex&amp;gt;T : {V} \times {W} \rightarrow Y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;x_0 \in V,\: y_0 \in W,\: T(x_0, y_0) = 0 \in Y&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; \forall x \in V, \forall y \in W \quad \exists T^{'}_y &amp;lt;/tex&amp;gt; - дифференциал Фреше, непрерывный как отображение переменных &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть также &amp;lt;tex&amp;gt;T^{'}_{y}(x_0, y_0)&amp;lt;/tex&amp;gt; - непрерывно обратим.&lt;br /&gt;
&lt;br /&gt;
'''Тогда''' задача о неявном отображении для &amp;lt;tex&amp;gt;T(x, y) = 0&amp;lt;/tex&amp;gt; c начальным решением &amp;lt;tex&amp;gt;T(x_0, y_0) = 0&amp;lt;/tex&amp;gt; разрешима в некоторых окрестностях точек &amp;lt;tex&amp;gt;x_0, y_0&amp;lt;/tex&amp;gt;, а именно: для любого &amp;lt;tex&amp;gt;x' \in V_{\delta_1}(x_0)&amp;lt;/tex&amp;gt; существует единственное &amp;lt;tex&amp;gt;y' \in V_{\delta_2}(y_0) : T(x', y') = 0&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
===26. Теорема о локальной обратимости отображения===&lt;br /&gt;
&lt;br /&gt;
'''Следствие локальной теоремы о неявном отображении'''&lt;br /&gt;
&lt;br /&gt;
Дано отображение &amp;lt;tex&amp;gt;T : V_r(x_0) \subset X \to V_r(y_0) \subset Y&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;T(x_0) = y_0&amp;lt;/tex&amp;gt;. Если существует непрерывно-обратимое отображение &amp;lt;tex&amp;gt;T_x '(x_0)&amp;lt;/tex&amp;gt; и отображение &amp;lt;tex&amp;gt;T_x '(x)&amp;lt;/tex&amp;gt;существует на всем шаре, то для любого &amp;lt;tex&amp;gt;y \in V_{\delta_2}(y_0)&amp;lt;/tex&amp;gt; существует единственный &amp;lt;tex&amp;gt;x \in V_{\delta_1}(x_0) : T(x) = y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===27. Локальная теорема о простой итерации===&lt;br /&gt;
&lt;br /&gt;
'''Th.'''(''о простой итерации'')&lt;br /&gt;
&amp;lt;tex&amp;gt;T: V \subset X \to X&amp;lt;/tex&amp;gt; и существует &amp;lt;tex&amp;gt;\overline{x} \in V : \overline{x} = T(\overline{x})&amp;lt;/tex&amp;gt;. Кроме того, пусть &amp;lt;tex&amp;gt;\|T'(\overline{x})\| &amp;lt; 1&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists \delta : \forall x_0 \in V_\delta(\overline{x})&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;x_{n + 1} = T(x_n)&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;lim(x_n) = \overline{x}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===28. Локальная теорема о методе Ньютона-Канторовича===&lt;br /&gt;
&lt;br /&gt;
'''Th.'''(''о методе Ньютона-Канторовича'')&lt;br /&gt;
&amp;lt;tex&amp;gt;F : V \to X, \exists \overline{x} \in V : F(\overline{x}) = 0&amp;lt;/tex&amp;gt;. &lt;br /&gt;
Кроме этого, пусть на &amp;lt;tex&amp;gt; V&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; \exists F'(x)&amp;lt;/tex&amp;gt;, непрерывная на нем. Тогда существует окрестность точки &amp;lt;tex&amp;gt;\overline{x}&amp;lt;/tex&amp;gt;, в которой метод Ньютона-Канторовича осуществим. Т.е. &amp;lt;tex&amp;gt;\exists \delta &amp;gt; 0 : x_0 \in V_\delta(\overline{x}), x_{n + 1} = x_n - (F_{x_n}')^{-1}(F(x_n))&amp;lt;/tex&amp;gt; и тогда: &amp;lt;tex&amp;gt; lim(x_n) = \overline{x} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===29. О проекторах Шаудера===&lt;br /&gt;
'''Lm.'''(''о проекторах Шаудера'')&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T: D \subset X \to X&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; -- нормированное пространство. Тогда существует последовательность компактных операторов &amp;lt;tex&amp;gt;T_n: T_n \rightrightarrows T&amp;lt;/tex&amp;gt; на D, и при этом &amp;lt;tex&amp;gt;\forall T_n&amp;lt;/tex&amp;gt; лежит в конечномерном подпространстве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===30. Теорема Шаудера о неподвижной точке===&lt;br /&gt;
'''Th.'''(''Шаудера'')&lt;br /&gt;
Если &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; -- ограниченное выпуклое замкнутое множество в Банаховом пространстве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; и оператор &amp;lt;tex&amp;gt;T : D \to D&amp;lt;/tex&amp;gt;, то у этого оператора на &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; существует неподвижная точка.&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30366</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30366"/>
				<updated>2013-01-18T20:28:07Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в любой продукции внешнего цикла в любой продукции вида &amp;lt;tex&amp;gt;A_k \to A_l\alpha, k &amp;lt; i&amp;lt;/tex&amp;gt;, должно быть &amp;lt;tex&amp;gt;l &amp;gt; k&amp;lt;/tex&amp;gt;. В результате при следующей итерации внутреннего цикла растет нижний предел &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; всех продукций вида &amp;lt;tex&amp;gt;A_i \to A_m\alpha&amp;lt;/tex&amp;gt; до тех пор, пока не будет достигнуто &amp;lt;tex&amp;gt;i \le m &amp;lt;/tex&amp;gt;.&lt;br /&gt;
   &lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. Пусть &amp;lt;tex&amp;gt;{A^\prime}_i &amp;lt;/tex&amp;gt; новый нетерминал. Можно заметить, что нет правила вида &amp;lt;tex&amp;gt;\ldots \to {A^\prime}_i&amp;lt;/tex&amp;gt;, где  &amp;lt;tex&amp;gt;{A^\prime}_i&amp;lt;/tex&amp;gt; самый левый нетерминал, а значит новые нетерминалы можно не рассматривать во внешнем цикле. &lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0 | {A_i}1 &amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30363</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30363"/>
				<updated>2013-01-18T20:13:39Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. Пусть &amp;lt;tex&amp;gt;{A^\prime}_i &amp;lt;/tex&amp;gt; новый нетерминал. Можно заметить, что нет правила вида &amp;lt;tex&amp;gt;\ldots \to {A^\prime}_i&amp;lt;/tex&amp;gt;, где  &amp;lt;tex&amp;gt;{A^\prime}_i&amp;lt;/tex&amp;gt; самый левый нетерминал, а значит новые нетерминалы можно не рассматривать во внешнем цикле. &lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0 | {A_i}1 &amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30362</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30362"/>
				<updated>2013-01-18T19:53:24Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Асимптотика */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. но так как новые нетерминалы будут ассоциированы только с нетерминалом для которого удаляется непосредственная левая рекурсия их можем не рассматривать в цикле(новый нетерминал не может быть самым левым в каком-либо правиле). &lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0 | {A_i}1 &amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30361</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30361"/>
				<updated>2013-01-18T19:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Асимптотика */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. но так как новые нетерминалы будут ассоциированы только с нетерминалом для которого удаляется непосредственная левая рекурсия их можем не рассматривать в цикле(новый нетерминал не может быть самым левым в каком-либо правиле). &lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0 | {A_i}1&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30360</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30360"/>
				<updated>2013-01-18T19:51:01Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. но так как новые нетерминалы будут ассоциированы только с нетерминалом для которого удаляется непосредственная левая рекурсия их можем не рассматривать в цикле(новый нетерминал не может быть самым левым в каком-либо правиле). &lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30359</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30359"/>
				<updated>2013-01-18T19:50:31Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&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;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30357</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30357"/>
				<updated>2013-01-18T19:34:18Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы, но по очевидным соображениям их можно не рассматривать в цикле.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30354</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30354"/>
				<updated>2013-01-18T18:59:09Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике не будет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит надо будет только устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Асимптотика===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30353</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30353"/>
				<updated>2013-01-18T18:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \le i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что если данное условие выполняется для всех&amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике не будет &amp;lt;tex&amp;gt;A_i \to^* A_i&amp;lt;/tex&amp;gt;, а значит надо будет только устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Таким образом остается только избавиться от непосредственной рекурсии для &amp;lt;tex&amp;gt;A_i&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;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30352</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30352"/>
				<updated>2013-01-18T18:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;lt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что если данное условие выполняется для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике не будет &amp;lt;tex&amp;gt;A_i \Rightarrow^* A_i&amp;lt;/tex&amp;gt;, а значит надо будет только устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Таким образом остается только избавиться от непосредственной рекурсии для &amp;lt;tex&amp;gt;A_i&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;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30351</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=30351"/>
				<updated>2013-01-18T18:23:46Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.56: /* Алгоритм  устранения произвольной левой рекурсии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (direct left recursion), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию (left recursion)''', если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Методы нисходящего разбора (top-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1\,|\,\ldots\,|\,A\alpha_n\,|\,\beta_1\,|\,\ldots\,|\,\beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime\, |\, \ldots\,  |\,  \beta_mA^\prime \,|\, \beta_1 \,|\, \ldots \,|\, \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime},  |\,  \ldots\, |\, \alpha_n{A^\prime} | \alpha_1\,  |\,  \ldots\, |\, \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает сроки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha | A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} | S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \epsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы и будим добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;lt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что если данное условие выполняется для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике не будет &amp;lt;tex&amp;gt;A_i \Rightarrow^* A_i&amp;lt;/tex&amp;gt;, а значит надо будет только устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 for все нетерминалы &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
   for все нетерминалы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt; 1 \leq j &amp;lt; i &amp;lt;/tex&amp;gt; и &lt;br /&gt;
     рассмотреть все правила вывода из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
     заменить каждое правило &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt;.&lt;br /&gt;
   устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, | \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma | \ldots | \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 | \ldots | \delta_k&amp;lt;/tex&amp;gt;. Таким образом остается только избавиться от непосредственной рекурсии для &amp;lt;tex&amp;gt;A_i&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;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_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;O(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O(\sum\limits_{i=1}^n a_j)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O(n\sum\limits_{i=1}^n a_j)&amp;lt;/tex&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;A_1 \to 0 | 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0&amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leq i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&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;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta | A\gamma | b&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;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} | {S}{\alpha}{\gamma} | \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} | \alpha\gamma{S_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [http://aclweb.org/anthology-new/A/A00/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>94.25.229.56</name></author>	</entry>

	</feed>