<?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=5.18.224.199&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=5.18.224.199&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/5.18.224.199"/>
		<updated>2026-06-11T14:09:20Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56665</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56665"/>
				<updated>2016-12-01T20:34:50Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Применение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (англ. ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (англ. ''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
К таким задачам относятся, например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]], [[Примеры неразрешимых задач: задача о замощении|задача о замощении полимино]] и другие .&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (англ. ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (англ. ''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, это множество будет множеством &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней (тьюринговых степеней).&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенью языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;br /&gt;
[[Категория: Примеры неразрешимых задач]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56143</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56143"/>
				<updated>2016-11-22T11:59:40Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (англ. ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (англ. ''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (англ. ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (англ. ''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, это множество будет множеством &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней (тьюринговых степеней).&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенью языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;br /&gt;
[[Категория: Примеры неразрешимых задач]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56142</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56142"/>
				<updated>2016-11-22T11:45:55Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Т-степени */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (англ. ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (англ. ''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (англ. ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (англ. ''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, это множество будет множеством &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней (тьюринговых степеней).&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенью языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56141</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56141"/>
				<updated>2016-11-22T11:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Сведение по Тьюрингу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (англ. ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (англ. ''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (англ. ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (англ. ''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56140</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56140"/>
				<updated>2016-11-22T11:39:45Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (англ. ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (англ. ''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (является ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56023</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56023"/>
				<updated>2016-11-21T19:56:16Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Применение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (является ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например, [[Примеры неразрешимых задач: проблема соответствий Поста|проблема соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (является ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56022</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56022"/>
				<updated>2016-11-21T19:51:33Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (является ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
* [[Примеры неразрешимых задач: проблема соответствий Поста|неразрешимость проблемы соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (является ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' Вычислимые функции, 2-е изд. — МЦНМО, 2002. — С. 64. — ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — Classical recursion theory. — Elsivier, 1992. — ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56021</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56021"/>
				<updated>2016-11-21T19:36:51Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Т-степени */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (является ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
* [[Примеры неразрешимых задач: проблема соответствий Поста|неразрешимость проблемы соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (является ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \leqslant d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \leqslant_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \leqslant_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' — '''Вычислимые функции''', 2-е изд. МЦНМО, 2002, стр. 64. ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — '''Classical recursion theory'''. Elsivier, 1992. ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56020</id>
		<title>M-сводимость</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=M-%D1%81%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56020"/>
				<updated>2016-11-21T19:33:42Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-сводится''' (является ''many-one reducible'', ''m-reducible'') ко множеству &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если существует всюду определённая вычислимая функция &amp;lt;tex&amp;gt;f : x\in A\Leftrightarrow f(x)\in B&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;f(A) \subset B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f(\overline{A}) \subset \overline{B}&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''m-эквивалентно''' (''many-one equivalent'', ''m-equivalent'') &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A\equiv_{m}B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
== Свойства ==&lt;br /&gt;
# &amp;lt;tex&amp;gt;A\leqslant_{m}A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' &amp;lt;tex&amp;gt;f(x)=x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; разрешимо, то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; разрешимо.&lt;br /&gt;
#*'''Доказательство:''' Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа-разрешитель для &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Тогда для любого &amp;lt;tex&amp;gt;x\in A&amp;lt;/tex&amp;gt; разрешитель должен вернуть значение &amp;lt;tex&amp;gt;p(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&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\leqslant_{m}B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B\leqslant_{m}C&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A\leqslant_{m}C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#*'''Доказательство:''' Если &amp;lt;tex&amp;gt;f:A\to B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g:B\to C&amp;lt;/tex&amp;gt;, то m-сводящая функция &amp;lt;tex&amp;gt;h:A\to C&amp;lt;/tex&amp;gt; выглядит так &amp;lt;tex&amp;gt;h(x) = g(f(x))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;A\leqslant_{m}B&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; неразрешимо.&lt;br /&gt;
|proof=&lt;br /&gt;
Следует из второго свойства. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приведённая лемма позволяет доказывать алгоритмическую неразрешимость некоторой задачи, сводя к ней ''(а не наоборот!)'' другую, неразрешимость которой уже доказана.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
* [[Примеры неразрешимых задач: проблема соответствий Поста|неразрешимость проблемы соответствий Поста]].&lt;br /&gt;
&lt;br /&gt;
==Сведение по Тьюрингу==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''сводится по Тьюрингу''' (является ''Turing reducible'') к языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если язык &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; является разрешимым с использованием &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; как оракула, обозначается как &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; '''эквивалентен по Тьюрингу''' (''Turing equivalent'') языку &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;L \leqslant_T M&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M \leqslant_T L&amp;lt;/tex&amp;gt;, обозначается как &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
* рефлексивность: &amp;lt;tex&amp;gt; L \leqslant_T L &amp;lt;/tex&amp;gt;&lt;br /&gt;
* транзитивность: из &amp;lt;tex&amp;gt; L \leqslant_T M &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; M \leqslant_T N&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; L \leqslant_T N &amp;lt;/tex&amp;gt;&lt;br /&gt;
* Очевидно, что &amp;lt;tex&amp;gt;\equiv_T&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;\mathcal{D}_T&amp;lt;/tex&amp;gt; множество классов эквивалентности языков по отношению &amp;lt;tex&amp;gt;\equiv_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&amp;lt;/tex&amp;gt; называется его класс эквивалентности по отношению &amp;lt;tex&amp;gt;\equiv_T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mathrm{deg}_T(L) = \{ M \mid L \equiv_T M \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
На Т-степенях можно ввести частичный порядок: для &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T, d_1 \le d_2&amp;lt;/tex&amp;gt;, если для каких-то &amp;lt;tex&amp;gt;L \in d_1, M \in d_2: L \leqslant_T M&amp;lt;/tex&amp;gt;, определение корректно, так как порядок не будет зависеть от выбора представителя Т-степени.&lt;br /&gt;
&lt;br /&gt;
==== Свойства ====&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{R}&amp;lt;/tex&amp;gt; — минимальный элемент в частичном порядке на Т-степенях. Очевидно из того, что класс разрешимых языков замкнут по использованию разрешимого языка в качестве оракула.&lt;br /&gt;
* Любая пара Т-степеней &amp;lt;tex&amp;gt;d_1, d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt; имеет наименьшую верхнюю границу &amp;lt;tex&amp;gt;d_1 \lor d_2 \in \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Тьюринговый скачок ====&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; язык программ, останавливающихся на пустом входе. Обозначим за &amp;lt;tex&amp;gt;H^f&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;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;f &amp;lt;_T H^f&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;f \le_T g&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^f \le_T H^g&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда тьюринговым скачком Т-степени &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; называется Т-степень языка &amp;lt;tex&amp;gt;H^L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; — произвольный язык в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Заметим, что если &amp;lt;tex&amp;gt;L \equiv_T M&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;H^L \equiv_T H^M&amp;lt;/tex&amp;gt;, поэтому определение корректно. Оператор тьюрингова скачка обозначим как &amp;lt;tex&amp;gt;J : \mathcal{D}_T \to \mathcal{D}_T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Many-one_reduction Wikipedia — Many-one reduction]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Turing_reduction Wikipedia — Turing reduction]&lt;br /&gt;
* [http://www.personal.psu.edu/t20/notes/topics-s05.pdf Topics in Logic and Foundations]&lt;br /&gt;
* ''Верещагин Н., Шень А.'' — '''Вычислимые функции''', 2-е изд. МЦНМО, 2002, стр. 64. ISBN 5-900916-36-7&lt;br /&gt;
* ''P. Odifreddi'' — '''Classical recursion theory'''. Elsivier, 1992. ISBN 0-444-87295-7&lt;br /&gt;
{{Заголовок со строчной буквы}}&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55964</id>
		<title>Регулярная аппроксимация КС-языков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55964"/>
				<updated>2016-11-19T19:57:15Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Контекстно-свободная]] грамматика &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''самоприменимой''' (англ. ''self-embeded''), если &amp;lt;tex&amp;gt; \exists A \in N: A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \alpha \neq \varepsilon \land \beta \neq \varepsilon &amp;lt;/tex&amp;gt; .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминал &amp;lt;tex&amp;gt; A \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''рекурсивным''' (англ. ''recursive''), если &amp;lt;tex&amp;gt; \exists \alpha,\beta \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминалы &amp;lt;tex&amp;gt; A,B \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называются '''взаимно рекурсивными''' (англ. ''mutual recursive''), если &amp;lt;tex&amp;gt; \exists \alpha_1,\beta_1,\alpha_2,\beta_2 \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha_1 B \beta_1 \land B \Rightarrow^* \alpha_2 A \beta_2&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм преобразования грамматики в конечный автомат ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement = Не самоприменимая контекстно-свободная грамматика генерирует регулярный язык.&lt;br /&gt;
|proof = В качестве конструктивного доказательства, мы приведем алгоритм построения [[Недетерминированные конечные автоматы|конечного автомата]] по грамматике. Для желающих, приведем ссылку на [http://books.google.ru/books?id=tFvtwGYNe7kC&amp;amp;pg=PA21#v=onepage&amp;amp;q&amp;amp;f=false формальное доказательство].&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== Идея алгоритма ===&lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; N^* &amp;lt;/tex&amp;gt; множество рекурсивных терминалов из &amp;lt;tex&amp;gt; N &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; P = \{N_1,N_2,...,N_K\} &amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt; N^*&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; дизъюнктных множеств взаимно рекурсивных терминалов, &lt;br /&gt;
&amp;lt;tex&amp;gt; N_1 \cup N_2 \cup ... \cup N_k = N^* \land \forall i N_i \neq \emptyset &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Введем функцию &amp;lt;tex&amp;gt; getTheTypeOfMutualRecursiveSet(N_i): P \rightarrow  \{left, right, self, cycle\}  &amp;lt;/tex&amp;gt;:&lt;br /&gt;
 '''function''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \alpha \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 '''function''' IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \beta \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''function''' getTheTypeOfMutualRecursiveSet (&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;):&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return left;&lt;br /&gt;
    '''if''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return right;&lt;br /&gt;
    '''if''' (IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return self;&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return cyclic;&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt; \forall i &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;getTheTypeOfMutualRecursiveSet(N_i) \neq self &amp;lt;/tex&amp;gt;, т.к в противном случае грамматика будет самоприменима.&amp;lt;br \&amp;gt;&lt;br /&gt;
В основе алгоритма будет рекурсивный обход грамматики. Спускаемся по грамматике до тех пор не приходим в нетерминал или символ алфавита:&lt;br /&gt;
# символ алфавит или &amp;lt;tex&amp;gt; \varepsilon &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;Q&amp;lt;/tex&amp;gt; {{---}} множество состояний ДКА.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt; {{---}} множество переходов ДКА.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} множество допускающих состояний.&lt;br /&gt;
 '''function''' createFA(G)               &amp;lt;font color=green&amp;gt;// &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{Q} \leftarrow \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\Delta \leftarrow \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
     s = createState&lt;br /&gt;
     f = createState&lt;br /&gt;
     &amp;lt;tex&amp;gt;F \leftarrow \{f\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' makeFA (s,S,f)&lt;br /&gt;
      &lt;br /&gt;
 '''function''' makeFA (q0,a,q1)&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; || a &amp;lt;tex&amp;gt; \in \Sigma&amp;lt;/tex&amp;gt;             &amp;lt;font color=green&amp;gt;// пришли в лист дерева разбора&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0,a,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''return'''&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt;X\beta&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; X \in (N \cup \Sigma) \land \beta \in (N \cup \Sigma)^* \land |\beta| &amp;gt; 0 &amp;lt;/tex&amp;gt;  &lt;br /&gt;
         q = createState&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q_0,X,q_1&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
         '''return'''&lt;br /&gt;
     '''if''' '''exist''' &amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; a \in N_i &amp;lt;/tex&amp;gt;  &lt;br /&gt;
          '''foreach''' b '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
             &amp;lt;tex&amp;gt;q_b&amp;lt;/tex&amp;gt; = createState&lt;br /&gt;
          '''if getTheTypeOfMutualRecursiveSet'''(&amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt;) == '''left''' &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_0, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_a,\varepsilon,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
           '''else'''                      &amp;lt;font color=green&amp;gt;// рекурсивный нетерминал right или cyclic&amp;lt;/font&amp;gt;   &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_C, X_1 \cdots X_m, q_1&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0, \varepsilon ,q_a)\} &amp;lt;/tex&amp;gt; &lt;br /&gt;
              '''return'''&lt;br /&gt;
     '''foreach''' p '''in''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; '''where''' p == &amp;lt;tex&amp;gt; a \rightarrow \beta &amp;lt;/tex&amp;gt;&lt;br /&gt;
        makeFA (&amp;lt;tex&amp;gt; q_0, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Аппроксимации самоприменимой грамматики ==&lt;br /&gt;
В данном разделе покажем методы апроксимации самоприменимой контекстно-свободной грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]]. &lt;br /&gt;
[[Файл:RTN_Automat.png|280px|thumb|right|Автоматы &amp;lt;tex&amp;gt;T_A,T_B&amp;lt;/tex&amp;gt; для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
=== RTN аппроксимация ===&lt;br /&gt;
Построим, по данной грамматике аппроксимирующий ее конечный автомат.&lt;br /&gt;
[[Файл:RTN_Automat1.png|280px|thumb|left|Конечный автомат для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A&amp;lt;/tex&amp;gt; в грамматике, создадим новый конечный автомат &amp;lt;tex&amp;gt; T_A&amp;lt;/tex&amp;gt;, добавим в него два состояния &amp;lt;tex&amp;gt; q_A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_{A^*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого правила грамматике &amp;lt;tex&amp;gt; (A \rightarrow X_1 \cdots X_m ) \in P&amp;lt;/tex&amp;gt;, введм новые состояния в автомат этого нетерминала &amp;lt;tex&amp;gt; q_0^A \cdots q_m^A&amp;lt;/tex&amp;gt;, а также добавим новые правила перехода в &amp;lt;tex&amp;gt; \Delta&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; (q_A, \varepsilon, q_0),(q_0^A,X_1,q_1^A), \cdots,(q_{m-1}^A,X_m,q_m^A),(q_m^A,\varepsilon,q_{A^*})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Таким образом мы построили множество конечных автоматов &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; \{ T_A \| A \in N\}&amp;lt;/tex&amp;gt; для каждого нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Теперь объединим все в один автомат. Объединим все состоянии автоматов из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;. Скопируем все переходы каждого автомата из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt;. Далее для каждого перехода вида &amp;lt;tex&amp;gt;(q,A,p), A\in N&amp;lt;/tex&amp;gt;, вместо него добавим два новых перехода: &amp;lt;tex&amp;gt; (q, \varepsilon, q_A),(q_A^{*}, \varepsilon, p) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MT аппроксимация ===&lt;br /&gt;
Построим по данной самоприменимой контекстно-свободной грамматике &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; регулярную грамматику &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A \in N &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, добавим нетерминалы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; A^*&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G^* &amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Для каждого правила &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_{0} B_1 {\alpha}_{1} B_2 {\alpha}_{2} \cdots B_m {\alpha}_{m}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; B_1, \cdots, B_m \in N \land {\alpha}_i \in \Sigma^*&amp;lt;/tex&amp;gt;. Добавим в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; нетерминалы &amp;lt;tex&amp;gt; B_1 \cdots B_m , B_1^* \cdots B_m^*&amp;lt;/tex&amp;gt; и следуюшие правила: &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 B_1 \\ B_1^* \rightarrow {\alpha}_1 B_2\\ \vdots \\ B^*_m \rightarrow {\alpha}_m A^* &amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;(Если &amp;lt;tex&amp;gt;m = 0 &amp;lt;/tex&amp;gt;, тогда добавим правило &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 A^* &amp;lt;/tex&amp;gt;).&lt;br /&gt;
В итоге &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; {{---}} [[Правоконтекстные грамматики, эквивалентность автоматам|правоконтекстная грамматика]], эквивалентная конечному автомату, который задает регулярный язык.&lt;br /&gt;
==== Пример ====&lt;br /&gt;
&amp;lt;tex&amp;gt; G = \left\{\begin{matrix} A \rightarrow \alpha B \alpha &lt;br /&gt;
\\ B \rightarrow \beta A | \beta&lt;br /&gt;
\end{matrix}\right.\Rightarrow G^* = \left\{\begin{matrix} A \rightarrow \alpha B  &lt;br /&gt;
\\ A^* \rightarrow B^* | \varepsilon&lt;br /&gt;
\\ B \rightarrow \beta A | \beta B^*&lt;br /&gt;
\\ B^* \rightarrow \alpha A^* | \varepsilon&lt;br /&gt;
\end{matrix}\right.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Исходная грамматика &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; генерирует язык: &amp;lt;tex&amp;gt; \{(ab)^n a^n | n &amp;gt; 0\}&amp;lt;/tex&amp;gt;. Результирущая грамматика &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; генирирует регулярный язык: &amp;lt;tex&amp;gt; (ab)^+ a^*&amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сравнение двух методов ===&lt;br /&gt;
Ясно, что оба языка, генерируемых конечным автомат для первого метода и апрокисимируещей граматикой для второго метода, содержат в себе язык генерируемый исходной грамматикой. &amp;lt;br/&amp;gt; &lt;br /&gt;
Привлекателным свойством MT аппроксимации по сравнению с RTN, то, что она можеть быть применима к большим грамматикам: для каждого нетерминала грамматике &amp;lt;tex&amp;gt; G&amp;lt;/tex&amp;gt;, добавляется не более одного нового нетерминала в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; и размер результирующий грамматики максимум в &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; раза больше, чем размер исходной. Так как для RTN апроксимации грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;, количество состаяний апроксимируещего автомата в худшем случаи может составлять &amp;lt;tex&amp;gt; O(|N|^2)&amp;lt;/tex&amp;gt;, что может быть критично для аппроксимации   больших грамматик.&amp;lt;br/&amp;gt;&lt;br /&gt;
Также,еще несколько эффекивных методов аппрокимации можно найти в статьях, приведенных в ссылках.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* [http://books.google.ru/books?id=gvVK07D4wwUC&amp;amp;pg=PA161&amp;amp;lpg=PA161 книга, где можно узнать много нового про аппроксимации]&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Fwww.cs.ucsb.edu%2F~omer%2FDOWNLOADABLE%2Fcfg-reg09.pdf&amp;amp;ei=AQbcUrL_DIfi4wSx3IDYDg&amp;amp;usg=AFQjCNHsSWONr0_c2MDgvApwrhc81deY0w&amp;amp;sig2=_2iZj4Xexe6-p5Cyt-GEMg&amp;amp;bvm=bv.59568121,d.bGE Разобрано много примеров аппроксимаций]&lt;br /&gt;
&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Facl.ldc.upenn.edu%2FJ%2FJ00%2FJ00-1003.pdf&amp;amp;ei=CgfcUrWwA-mF4ATY7IHQAQ&amp;amp;usg=AFQjCNG3QHL7yQSwTUbSi9xkse2j0p6YaA&amp;amp;sig2=UF88aXWRAbapv4o_UrIjGg&amp;amp;bvm=bv.59568121,d.bGE практические эксперименты с регулярной аппроксимацией]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55963</id>
		<title>Регулярная аппроксимация КС-языков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55963"/>
				<updated>2016-11-19T19:24:47Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Сравнение двух методов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Контекстно-свободная]] грамматика &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''самоприменимой''' (англ. ''self-embeded''), если &amp;lt;tex&amp;gt; \exists A \in N: A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \alpha \neq \varepsilon \land \beta \neq \varepsilon &amp;lt;/tex&amp;gt; .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминал &amp;lt;tex&amp;gt; A \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''рекурсивным''' (англ. ''recursive''), если &amp;lt;tex&amp;gt; \exists \alpha,\beta \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминалы &amp;lt;tex&amp;gt; A,B \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называются '''взаимно рекурсивными''' (англ. ''mutual recursive''), если &amp;lt;tex&amp;gt; \exists \alpha_1,\beta_1,\alpha_2,\beta_2 \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha_1 B \beta_1 \land B \Rightarrow^* \alpha_2 A \beta_2&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм преобразования грамматики в конечный автомат ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement = Не самоприменимая контекстно-свободная грамматика генерирует регулярный язык.&lt;br /&gt;
|proof = В качестве конструктивного доказательства, мы приведем алгоритм построения [[Недетерминированные конечные автоматы|конечного автомата]] по грамматике. Для желающих, приведем ссылку на [http://books.google.ru/books?id=tFvtwGYNe7kC&amp;amp;pg=PA21#v=onepage&amp;amp;q&amp;amp;f=false формальное доказательство].&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== Идея алгоритма ===&lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; N^* &amp;lt;/tex&amp;gt; множество рекурсивных терминалов из &amp;lt;tex&amp;gt; N &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; P = \{N_1,N_2,...,N_K\} &amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt; N^*&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; дизъюнктных множеств взаимно рекурсивных терминалов, &lt;br /&gt;
&amp;lt;tex&amp;gt; N_1 \cup N_2 \cup ... \cup N_k = N^* \land \forall i N_i \neq \emptyset &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Введем функцию &amp;lt;tex&amp;gt; getTheTypeOfMutualRecursiveSet(N_i): P \rightarrow  \{left, right, self, cycle\}  &amp;lt;/tex&amp;gt;:&lt;br /&gt;
 '''function''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \alpha \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 '''function''' IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \beta \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''function''' getTheTypeOfMutualRecursiveSet (&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;):&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return left;&lt;br /&gt;
    '''if''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return right;&lt;br /&gt;
    '''if''' (IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return self;&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return cyclic;&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt; \forall i &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;getTheTypeOfMutualRecursiveSet(N_i) \neq self &amp;lt;/tex&amp;gt;, т.к в противном случае грамматика будет самоприменима.&amp;lt;br \&amp;gt;&lt;br /&gt;
В основе алгоритма будет рекурсивный обход грамматики. Спускаемся по грамматике до тех пор не приходим в нетерминал или символ алфавита:&lt;br /&gt;
# символ алфавит или &amp;lt;tex&amp;gt; \varepsilon &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;Q&amp;lt;/tex&amp;gt; {{---}} множество состояний ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt; {{---}} множество переходов ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} множество допускающих состояний.&lt;br /&gt;
 '''function''' createFA(G) // &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{Q} \leftarrow \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\Delta \leftarrow \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
     s = createState&lt;br /&gt;
     f = createState&lt;br /&gt;
     &amp;lt;tex&amp;gt;F \leftarrow \{f\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' makeFA (s,S,f)&lt;br /&gt;
      &lt;br /&gt;
 '''function''' makeFA (q0,a,q1)&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; || a &amp;lt;tex&amp;gt; \in \Sigma&amp;lt;/tex&amp;gt;    &amp;lt;font color=green&amp;gt;// пришли в лист дерева разбора&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0,a,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''return'''&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt;X\beta&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; X \in (N \cup \Sigma) \land \beta \in (N \cup \Sigma)^* \land |\beta| &amp;gt; 0 &amp;lt;/tex&amp;gt;  &lt;br /&gt;
         q = createState&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q_0,X,q_1&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
         '''return'''&lt;br /&gt;
     '''if''' '''exist''' &amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; a \in N_i &amp;lt;/tex&amp;gt;  &lt;br /&gt;
          '''foreach''' b '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
             &amp;lt;tex&amp;gt;q_b&amp;lt;/tex&amp;gt; = createState&lt;br /&gt;
          '''if getTheTypeOfMutualRecursiveSet'''(&amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt;) == '''left''' &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_0, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_a,\varepsilon,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
           '''else'''    &amp;lt;font color=green&amp;gt;// рекурсивный нетерминал rihgt или cyclic&amp;lt;/font&amp;gt;   &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_C, X_1 \cdots X_m, q_1&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0, \varepsilon ,q_a)\} &amp;lt;/tex&amp;gt; &lt;br /&gt;
              '''return'''&lt;br /&gt;
     '''foreach''' p '''in''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; '''where''' p == &amp;lt;tex&amp;gt; a \rightarrow \beta &amp;lt;/tex&amp;gt;&lt;br /&gt;
        makeFA (&amp;lt;tex&amp;gt; q_0, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Аппроксимации самоприменимой грамматики ==&lt;br /&gt;
В данном разделе покажем методы апроксимации самоприменимой контекстно-свободной грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]]. &lt;br /&gt;
[[Файл:RTN_Automat.png|280px|thumb|right|Автоматы &amp;lt;tex&amp;gt;T_A,T_B&amp;lt;/tex&amp;gt; для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
=== RTN аппроксимация ===&lt;br /&gt;
Построим, по данной грамматике аппроксимирующий ее конечный автомат.&lt;br /&gt;
[[Файл:RTN_Automat1.png|280px|thumb|left|Конечный автомат для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A&amp;lt;/tex&amp;gt; в грамматике, создадим новый конечный автомат &amp;lt;tex&amp;gt; T_A&amp;lt;/tex&amp;gt;, добавим в него два состояния &amp;lt;tex&amp;gt; q_A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_{A^*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого правила грамматике &amp;lt;tex&amp;gt; (A \rightarrow X_1 \cdots X_m ) \in P&amp;lt;/tex&amp;gt;, введм новые состояния в автомат этого нетерминала &amp;lt;tex&amp;gt; q_0^A \cdots q_m^A&amp;lt;/tex&amp;gt;, а также добавим новые правила перехода в &amp;lt;tex&amp;gt; \Delta&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; (q_A, \varepsilon, q_0),(q_0^A,X_1,q_1^A), \cdots,(q_{m-1}^A,X_m,q_m^A),(q_m^A,\varepsilon,q_{A^*})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Таким образом мы построили множество конечных автоматов &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; \{ T_A \| A \in N\}&amp;lt;/tex&amp;gt; для каждого нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Теперь объединим все в один автомат. Объединим все состоянии автоматов из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;. Скопируем все переходы каждого автомата из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt;. Далее для каждого перехода вида &amp;lt;tex&amp;gt;(q,A,p), A\in N&amp;lt;/tex&amp;gt;, вместо него добавим два новых перехода: &amp;lt;tex&amp;gt; (q, \varepsilon, q_A),(q_A^{*}, \varepsilon, p) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MT аппроксимация ===&lt;br /&gt;
Построим по данной самоприменимой контекстно-свободной грамматике &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; регулярную грамматику &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A \in N &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, добавим нетерминалы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; A^*&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G^* &amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Для каждого правила &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_{0} B_1 {\alpha}_{1} B_2 {\alpha}_{2} \cdots B_m {\alpha}_{m}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; B_1, \cdots, B_m \in N \land {\alpha}_i \in \Sigma^*&amp;lt;/tex&amp;gt;. Добавим в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; нетерминалы &amp;lt;tex&amp;gt; B_1 \cdots B_m , B_1^* \cdots B_m^*&amp;lt;/tex&amp;gt; и следуюшие правила: &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 B_1 \\ B_1^* \rightarrow {\alpha}_1 B_2\\ \vdots \\ B^*_m \rightarrow {\alpha}_m A^* &amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;(Если &amp;lt;tex&amp;gt;m = 0 &amp;lt;/tex&amp;gt;, тогда добавим правило &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 A^* &amp;lt;/tex&amp;gt;).&lt;br /&gt;
В итоге &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; {{---}} [[Правоконтекстные грамматики, эквивалентность автоматам|правоконтекстная грамматика]], эквивалентная конечному автомату, который задает регулярный язык.&lt;br /&gt;
==== Пример ====&lt;br /&gt;
&amp;lt;tex&amp;gt; G = \left\{\begin{matrix} A \rightarrow \alpha B \alpha &lt;br /&gt;
\\ B \rightarrow \beta A | \beta&lt;br /&gt;
\end{matrix}\right.\Rightarrow G^* = \left\{\begin{matrix} A \rightarrow \alpha B  &lt;br /&gt;
\\ A^* \rightarrow B^* | \varepsilon&lt;br /&gt;
\\ B \rightarrow \beta A | \beta B^*&lt;br /&gt;
\\ B^* \rightarrow \alpha A^* | \varepsilon&lt;br /&gt;
\end{matrix}\right.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Исходная грамматика &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; генерирует язык: &amp;lt;tex&amp;gt; \{(ab)^n a^n | n &amp;gt; 0\}&amp;lt;/tex&amp;gt;. Результирущая грамматика &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; генирирует регулярный язык: &amp;lt;tex&amp;gt; (ab)^+ a^*&amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сравнение двух методов ===&lt;br /&gt;
Ясно, что оба языка, генерируемых конечным автомат для первого метода и апрокисимируещей граматикой для второго метода, содержат в себе язык генерируемый исходной грамматикой. &amp;lt;br/&amp;gt; &lt;br /&gt;
Привлекателным свойством MT аппроксимации по сравнению с RTN, то, что она можеть быть применима к большим грамматикам: для каждого нетерминала грамматике &amp;lt;tex&amp;gt; G&amp;lt;/tex&amp;gt;, добавляется не более одного нового нетерминала в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; и размер результирующий грамматики максимум в &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; раза больше, чем размер исходной. Так как для RTN апроксимации грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;, количество состаяний апроксимируещего автомата в худшем случаи может составлять &amp;lt;tex&amp;gt; O(|N|^2)&amp;lt;/tex&amp;gt;, что может быть критично для аппроксимации   больших грамматик.&amp;lt;br/&amp;gt;&lt;br /&gt;
Также,еще несколько эффекивных методов аппрокимации можно найти в статьях, приведенных в ссылках.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* [http://books.google.ru/books?id=gvVK07D4wwUC&amp;amp;pg=PA161&amp;amp;lpg=PA161 книга, где можно узнать много нового про аппроксимации]&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Fwww.cs.ucsb.edu%2F~omer%2FDOWNLOADABLE%2Fcfg-reg09.pdf&amp;amp;ei=AQbcUrL_DIfi4wSx3IDYDg&amp;amp;usg=AFQjCNHsSWONr0_c2MDgvApwrhc81deY0w&amp;amp;sig2=_2iZj4Xexe6-p5Cyt-GEMg&amp;amp;bvm=bv.59568121,d.bGE Разобрано много примеров аппроксимаций]&lt;br /&gt;
&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Facl.ldc.upenn.edu%2FJ%2FJ00%2FJ00-1003.pdf&amp;amp;ei=CgfcUrWwA-mF4ATY7IHQAQ&amp;amp;usg=AFQjCNG3QHL7yQSwTUbSi9xkse2j0p6YaA&amp;amp;sig2=UF88aXWRAbapv4o_UrIjGg&amp;amp;bvm=bv.59568121,d.bGE практические эксперименты с регулярной аппроксимацией]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55962</id>
		<title>Регулярная аппроксимация КС-языков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55962"/>
				<updated>2016-11-19T19:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* MT аппроксимация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Контекстно-свободная]] грамматика &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''самоприменимой''' (англ. ''self-embeded''), если &amp;lt;tex&amp;gt; \exists A \in N: A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \alpha \neq \varepsilon \land \beta \neq \varepsilon &amp;lt;/tex&amp;gt; .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминал &amp;lt;tex&amp;gt; A \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''рекурсивным''' (англ. ''recursive''), если &amp;lt;tex&amp;gt; \exists \alpha,\beta \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминалы &amp;lt;tex&amp;gt; A,B \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называются '''взаимно рекурсивными''' (англ. ''mutual recursive''), если &amp;lt;tex&amp;gt; \exists \alpha_1,\beta_1,\alpha_2,\beta_2 \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha_1 B \beta_1 \land B \Rightarrow^* \alpha_2 A \beta_2&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм преобразования грамматики в конечный автомат ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement = Не самоприменимая контекстно-свободная грамматика генерирует регулярный язык.&lt;br /&gt;
|proof = В качестве конструктивного доказательства, мы приведем алгоритм построения [[Недетерминированные конечные автоматы|конечного автомата]] по грамматике. Для желающих, приведем ссылку на [http://books.google.ru/books?id=tFvtwGYNe7kC&amp;amp;pg=PA21#v=onepage&amp;amp;q&amp;amp;f=false формальное доказательство].&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== Идея алгоритма ===&lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; N^* &amp;lt;/tex&amp;gt; множество рекурсивных терминалов из &amp;lt;tex&amp;gt; N &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; P = \{N_1,N_2,...,N_K\} &amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt; N^*&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; дизъюнктных множеств взаимно рекурсивных терминалов, &lt;br /&gt;
&amp;lt;tex&amp;gt; N_1 \cup N_2 \cup ... \cup N_k = N^* \land \forall i N_i \neq \emptyset &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Введем функцию &amp;lt;tex&amp;gt; getTheTypeOfMutualRecursiveSet(N_i): P \rightarrow  \{left, right, self, cycle\}  &amp;lt;/tex&amp;gt;:&lt;br /&gt;
 '''function''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \alpha \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 '''function''' IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \beta \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''function''' getTheTypeOfMutualRecursiveSet (&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;):&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return left;&lt;br /&gt;
    '''if''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return right;&lt;br /&gt;
    '''if''' (IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return self;&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return cyclic;&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt; \forall i &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;getTheTypeOfMutualRecursiveSet(N_i) \neq self &amp;lt;/tex&amp;gt;, т.к в противном случае грамматика будет самоприменима.&amp;lt;br \&amp;gt;&lt;br /&gt;
В основе алгоритма будет рекурсивный обход грамматики. Спускаемся по грамматике до тех пор не приходим в нетерминал или символ алфавита:&lt;br /&gt;
# символ алфавит или &amp;lt;tex&amp;gt; \varepsilon &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;Q&amp;lt;/tex&amp;gt; {{---}} множество состояний ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt; {{---}} множество переходов ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} множество допускающих состояний.&lt;br /&gt;
 '''function''' createFA(G) // &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{Q} \leftarrow \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\Delta \leftarrow \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
     s = createState&lt;br /&gt;
     f = createState&lt;br /&gt;
     &amp;lt;tex&amp;gt;F \leftarrow \{f\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' makeFA (s,S,f)&lt;br /&gt;
      &lt;br /&gt;
 '''function''' makeFA (q0,a,q1)&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; || a &amp;lt;tex&amp;gt; \in \Sigma&amp;lt;/tex&amp;gt;    &amp;lt;font color=green&amp;gt;// пришли в лист дерева разбора&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0,a,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''return'''&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt;X\beta&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; X \in (N \cup \Sigma) \land \beta \in (N \cup \Sigma)^* \land |\beta| &amp;gt; 0 &amp;lt;/tex&amp;gt;  &lt;br /&gt;
         q = createState&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q_0,X,q_1&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
         '''return'''&lt;br /&gt;
     '''if''' '''exist''' &amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; a \in N_i &amp;lt;/tex&amp;gt;  &lt;br /&gt;
          '''foreach''' b '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
             &amp;lt;tex&amp;gt;q_b&amp;lt;/tex&amp;gt; = createState&lt;br /&gt;
          '''if getTheTypeOfMutualRecursiveSet'''(&amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt;) == '''left''' &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_0, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_a,\varepsilon,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
           '''else'''    &amp;lt;font color=green&amp;gt;// рекурсивный нетерминал rihgt или cyclic&amp;lt;/font&amp;gt;   &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_C, X_1 \cdots X_m, q_1&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0, \varepsilon ,q_a)\} &amp;lt;/tex&amp;gt; &lt;br /&gt;
              '''return'''&lt;br /&gt;
     '''foreach''' p '''in''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; '''where''' p == &amp;lt;tex&amp;gt; a \rightarrow \beta &amp;lt;/tex&amp;gt;&lt;br /&gt;
        makeFA (&amp;lt;tex&amp;gt; q_0, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Аппроксимации самоприменимой грамматики ==&lt;br /&gt;
В данном разделе покажем методы апроксимации самоприменимой контекстно-свободной грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]]. &lt;br /&gt;
[[Файл:RTN_Automat.png|280px|thumb|right|Автоматы &amp;lt;tex&amp;gt;T_A,T_B&amp;lt;/tex&amp;gt; для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
=== RTN аппроксимация ===&lt;br /&gt;
Построим, по данной грамматике аппроксимирующий ее конечный автомат.&lt;br /&gt;
[[Файл:RTN_Automat1.png|280px|thumb|left|Конечный автомат для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A&amp;lt;/tex&amp;gt; в грамматике, создадим новый конечный автомат &amp;lt;tex&amp;gt; T_A&amp;lt;/tex&amp;gt;, добавим в него два состояния &amp;lt;tex&amp;gt; q_A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_{A^*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого правила грамматике &amp;lt;tex&amp;gt; (A \rightarrow X_1 \cdots X_m ) \in P&amp;lt;/tex&amp;gt;, введм новые состояния в автомат этого нетерминала &amp;lt;tex&amp;gt; q_0^A \cdots q_m^A&amp;lt;/tex&amp;gt;, а также добавим новые правила перехода в &amp;lt;tex&amp;gt; \Delta&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; (q_A, \varepsilon, q_0),(q_0^A,X_1,q_1^A), \cdots,(q_{m-1}^A,X_m,q_m^A),(q_m^A,\varepsilon,q_{A^*})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Таким образом мы построили множество конечных автоматов &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; \{ T_A \| A \in N\}&amp;lt;/tex&amp;gt; для каждого нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Теперь объединим все в один автомат. Объединим все состоянии автоматов из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;. Скопируем все переходы каждого автомата из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt;. Далее для каждого перехода вида &amp;lt;tex&amp;gt;(q,A,p), A\in N&amp;lt;/tex&amp;gt;, вместо него добавим два новых перехода: &amp;lt;tex&amp;gt; (q, \varepsilon, q_A),(q_A^{*}, \varepsilon, p) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MT аппроксимация ===&lt;br /&gt;
Построим по данной самоприменимой контекстно-свободной грамматике &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; регулярную грамматику &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A \in N &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, добавим нетерминалы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; A^*&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G^* &amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Для каждого правила &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_{0} B_1 {\alpha}_{1} B_2 {\alpha}_{2} \cdots B_m {\alpha}_{m}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; B_1, \cdots, B_m \in N \land {\alpha}_i \in \Sigma^*&amp;lt;/tex&amp;gt;. Добавим в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; нетерминалы &amp;lt;tex&amp;gt; B_1 \cdots B_m , B_1^* \cdots B_m^*&amp;lt;/tex&amp;gt; и следуюшие правила: &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 B_1 \\ B_1^* \rightarrow {\alpha}_1 B_2\\ \vdots \\ B^*_m \rightarrow {\alpha}_m A^* &amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;(Если &amp;lt;tex&amp;gt;m = 0 &amp;lt;/tex&amp;gt;, тогда добавим правило &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 A^* &amp;lt;/tex&amp;gt;).&lt;br /&gt;
В итоге &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; {{---}} [[Правоконтекстные грамматики, эквивалентность автоматам|правоконтекстная грамматика]], эквивалентная конечному автомату, который задает регулярный язык.&lt;br /&gt;
==== Пример ====&lt;br /&gt;
&amp;lt;tex&amp;gt; G = \left\{\begin{matrix} A \rightarrow \alpha B \alpha &lt;br /&gt;
\\ B \rightarrow \beta A | \beta&lt;br /&gt;
\end{matrix}\right.\Rightarrow G^* = \left\{\begin{matrix} A \rightarrow \alpha B  &lt;br /&gt;
\\ A^* \rightarrow B^* | \varepsilon&lt;br /&gt;
\\ B \rightarrow \beta A | \beta B^*&lt;br /&gt;
\\ B^* \rightarrow \alpha A^* | \varepsilon&lt;br /&gt;
\end{matrix}\right.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Исходная грамматика &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; генерирует язык: &amp;lt;tex&amp;gt; \{(ab)^n a^n | n &amp;gt; 0\}&amp;lt;/tex&amp;gt;. Результирущая грамматика &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; генирирует регулярный язык: &amp;lt;tex&amp;gt; (ab)^+ a^*&amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сравнение двух методов ===&lt;br /&gt;
Ясно, что оба языка, генерируемых конечным автомат для первого метода и апрокисимируещей граматикой для второго метода, содержат в себе язык генерируемый исходной грамматикой. &amp;lt;br/&amp;gt; &lt;br /&gt;
Привлекателным свойством MT аппроксимации по сравнению с RTN, то, что она можеть быть применима к большим грамматикам: для каждого нетерминала грамматике &amp;lt;tex&amp;gt; G&amp;lt;/tex&amp;gt;, добавляется не более одного нового нетерминала в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; и размер результирующий грамматики максимум в 2 раза больше, чем размер исходной. Так как для RTN апроксимации грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;, количество состаяний апроксимируещего автомата в худшем случаи может составлять &amp;lt;tex&amp;gt; O(|N|^2)&amp;lt;/tex&amp;gt;, что может быть критично для аппроксимации   больших грамматик.&amp;lt;br/&amp;gt;&lt;br /&gt;
Также,еще несколько эффекивных методов аппрокимации можно найти в статьях, приведенных в ссылках.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* [http://books.google.ru/books?id=gvVK07D4wwUC&amp;amp;pg=PA161&amp;amp;lpg=PA161 книга, где можно узнать много нового про аппроксимации]&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Fwww.cs.ucsb.edu%2F~omer%2FDOWNLOADABLE%2Fcfg-reg09.pdf&amp;amp;ei=AQbcUrL_DIfi4wSx3IDYDg&amp;amp;usg=AFQjCNHsSWONr0_c2MDgvApwrhc81deY0w&amp;amp;sig2=_2iZj4Xexe6-p5Cyt-GEMg&amp;amp;bvm=bv.59568121,d.bGE Разобрано много примеров аппроксимаций]&lt;br /&gt;
&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Facl.ldc.upenn.edu%2FJ%2FJ00%2FJ00-1003.pdf&amp;amp;ei=CgfcUrWwA-mF4ATY7IHQAQ&amp;amp;usg=AFQjCNG3QHL7yQSwTUbSi9xkse2j0p6YaA&amp;amp;sig2=UF88aXWRAbapv4o_UrIjGg&amp;amp;bvm=bv.59568121,d.bGE практические эксперименты с регулярной аппроксимацией]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55961</id>
		<title>Регулярная аппроксимация КС-языков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%A1-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=55961"/>
				<updated>2016-11-19T19:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;5.18.224.199: /* Аппроксимации самоприменимой грамматики */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Контекстно-свободная]] грамматика &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''самоприменимой''' (англ. ''self-embeded''), если &amp;lt;tex&amp;gt; \exists A \in N: A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \alpha \neq \varepsilon \land \beta \neq \varepsilon &amp;lt;/tex&amp;gt; .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминал &amp;lt;tex&amp;gt; A \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называется '''рекурсивным''' (англ. ''recursive''), если &amp;lt;tex&amp;gt; \exists \alpha,\beta \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha A \beta&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Нетерминалы &amp;lt;tex&amp;gt; A,B \in N&amp;lt;/tex&amp;gt; в грамматике &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; называются '''взаимно рекурсивными''' (англ. ''mutual recursive''), если &amp;lt;tex&amp;gt; \exists \alpha_1,\beta_1,\alpha_2,\beta_2 \in (\Sigma \cup N)^* : A \Rightarrow^* \alpha_1 B \beta_1 \land B \Rightarrow^* \alpha_2 A \beta_2&amp;lt;/tex&amp;gt;  .&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм преобразования грамматики в конечный автомат ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement = Не самоприменимая контекстно-свободная грамматика генерирует регулярный язык.&lt;br /&gt;
|proof = В качестве конструктивного доказательства, мы приведем алгоритм построения [[Недетерминированные конечные автоматы|конечного автомата]] по грамматике. Для желающих, приведем ссылку на [http://books.google.ru/books?id=tFvtwGYNe7kC&amp;amp;pg=PA21#v=onepage&amp;amp;q&amp;amp;f=false формальное доказательство].&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== Идея алгоритма ===&lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; N^* &amp;lt;/tex&amp;gt; множество рекурсивных терминалов из &amp;lt;tex&amp;gt; N &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Пусть, &amp;lt;tex&amp;gt; P = \{N_1,N_2,...,N_K\} &amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt; N^*&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; дизъюнктных множеств взаимно рекурсивных терминалов, &lt;br /&gt;
&amp;lt;tex&amp;gt; N_1 \cup N_2 \cup ... \cup N_k = N^* \land \forall i N_i \neq \emptyset &amp;lt;/tex&amp;gt;. &lt;br /&gt;
Введем функцию &amp;lt;tex&amp;gt; getTheTypeOfMutualRecursiveSet(N_i): P \rightarrow  \{left, right, self, cycle\}  &amp;lt;/tex&amp;gt;:&lt;br /&gt;
 '''function''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \alpha \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 '''function''' IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt; \exists (A \Rightarrow \alpha B \beta) \in P[ A \in N_i \land B \in N_i \land \beta \neq \varepsilon ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''function''' getTheTypeOfMutualRecursiveSet (&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;):&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return left;&lt;br /&gt;
    '''if''' IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return right;&lt;br /&gt;
    '''if''' (IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return self;&lt;br /&gt;
    '''if''' !IsLeftType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &amp;amp;&amp;amp; !IsRightType(&amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt;) &lt;br /&gt;
        return cyclic;&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt; \forall i &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;getTheTypeOfMutualRecursiveSet(N_i) \neq self &amp;lt;/tex&amp;gt;, т.к в противном случае грамматика будет самоприменима.&amp;lt;br \&amp;gt;&lt;br /&gt;
В основе алгоритма будет рекурсивный обход грамматики. Спускаемся по грамматике до тех пор не приходим в нетерминал или символ алфавита:&lt;br /&gt;
# символ алфавит или &amp;lt;tex&amp;gt; \varepsilon &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;Q&amp;lt;/tex&amp;gt; {{---}} множество состояний ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt; {{---}} множество переходов ДКА.&lt;br /&gt;
&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} множество допускающих состояний.&lt;br /&gt;
 '''function''' createFA(G) // &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{Q} \leftarrow \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\Delta \leftarrow \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
     s = createState&lt;br /&gt;
     f = createState&lt;br /&gt;
     &amp;lt;tex&amp;gt;F \leftarrow \{f\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' makeFA (s,S,f)&lt;br /&gt;
      &lt;br /&gt;
 '''function''' makeFA (q0,a,q1)&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; || a &amp;lt;tex&amp;gt; \in \Sigma&amp;lt;/tex&amp;gt;    &amp;lt;font color=green&amp;gt;// пришли в лист дерева разбора&amp;lt;/font&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0,a,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''return'''&lt;br /&gt;
    '''if''' a == &amp;lt;tex&amp;gt;X\beta&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; X \in (N \cup \Sigma) \land \beta \in (N \cup \Sigma)^* \land |\beta| &amp;gt; 0 &amp;lt;/tex&amp;gt;  &lt;br /&gt;
         q = createState&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q_0,X,q_1&amp;lt;/tex&amp;gt;)&lt;br /&gt;
         makeFA (&amp;lt;tex&amp;gt;q, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
         '''return'''&lt;br /&gt;
     '''if''' '''exist''' &amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; a \in N_i &amp;lt;/tex&amp;gt;  &lt;br /&gt;
          '''foreach''' b '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; &lt;br /&gt;
             &amp;lt;tex&amp;gt;q_b&amp;lt;/tex&amp;gt; = createState&lt;br /&gt;
          '''if getTheTypeOfMutualRecursiveSet'''(&amp;lt;tex&amp;gt; N_i &amp;lt;/tex&amp;gt;) == '''left''' &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_0, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_a,\varepsilon,q_1)\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
           '''else'''    &amp;lt;font color=green&amp;gt;// рекурсивный нетерминал rihgt или cyclic&amp;lt;/font&amp;gt;   &lt;br /&gt;
             '''foreach''' C '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_C, X_1 \cdots X_m, q_1&amp;lt;/tex&amp;gt;)             &lt;br /&gt;
             '''foreach''' C,D '''in''' &amp;lt;tex&amp;gt;N_i&amp;lt;/tex&amp;gt; '''where''' &amp;lt;tex&amp;gt; C \rightarrow DX_1...X_m \land X_1,...X_m \neq N_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
                makeFA (&amp;lt;tex&amp;gt;q_D, X_1 \cdots X_m, q_C&amp;lt;/tex&amp;gt;)&lt;br /&gt;
                &amp;lt;tex&amp;gt; \Delta = \Delta \cup \{(q_0, \varepsilon ,q_a)\} &amp;lt;/tex&amp;gt; &lt;br /&gt;
              '''return'''&lt;br /&gt;
     '''foreach''' p '''in''' &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; '''where''' p == &amp;lt;tex&amp;gt; a \rightarrow \beta &amp;lt;/tex&amp;gt;&lt;br /&gt;
        makeFA (&amp;lt;tex&amp;gt; q_0, \beta, q_1 &amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Аппроксимации самоприменимой грамматики ==&lt;br /&gt;
В данном разделе покажем методы апроксимации самоприменимой контекстно-свободной грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt; к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]]. &lt;br /&gt;
[[Файл:RTN_Automat.png|280px|thumb|right|Автоматы &amp;lt;tex&amp;gt;T_A,T_B&amp;lt;/tex&amp;gt; для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
=== RTN аппроксимация ===&lt;br /&gt;
Построим, по данной грамматике аппроксимирующий ее конечный автомат.&lt;br /&gt;
[[Файл:RTN_Automat1.png|280px|thumb|left|Конечный автомат для грамматики  &lt;br /&gt;
 &amp;lt;tex&amp;gt;A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A&amp;lt;/tex&amp;gt; в грамматике, создадим новый конечный автомат &amp;lt;tex&amp;gt; T_A&amp;lt;/tex&amp;gt;, добавим в него два состояния &amp;lt;tex&amp;gt; q_A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_{A^*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого правила грамматике &amp;lt;tex&amp;gt; (A \rightarrow X_1 \cdots X_m ) \in P&amp;lt;/tex&amp;gt;, введм новые состояния в автомат этого нетерминала &amp;lt;tex&amp;gt; q_0^A \cdots q_m^A&amp;lt;/tex&amp;gt;, а также добавим новые правила перехода в &amp;lt;tex&amp;gt; \Delta&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; (q_A, \varepsilon, q_0),(q_0^A,X_1,q_1^A), \cdots,(q_{m-1}^A,X_m,q_m^A),(q_m^A,\varepsilon,q_{A^*})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Таким образом мы построили множество конечных автоматов &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; \{ T_A \| A \in N\}&amp;lt;/tex&amp;gt; для каждого нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Теперь объединим все в один автомат. Объединим все состоянии автоматов из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;. Скопируем все переходы каждого автомата из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt;. Далее для каждого перехода вида &amp;lt;tex&amp;gt;(q,A,p), A\in N&amp;lt;/tex&amp;gt;, вместо него добавим два новых перехода: &amp;lt;tex&amp;gt; (q, \varepsilon, q_A),(q_A^{*}, \varepsilon, p) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MT аппроксимация ===&lt;br /&gt;
Построим, по данной самоприменимой кс грамматике &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, регулярную грамматику &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для каждого нетерминала &amp;lt;tex&amp;gt; A \in N &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, добавим нетерминалы &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; A^*&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G^* &amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Для каждого правила &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_{0} B_1 {\alpha}_{1} B_2 {\alpha}_{2} \cdots B_m {\alpha}_{m}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; B_1, \cdots, B_m \in N \land {\alpha}_i \in \Sigma^*&amp;lt;/tex&amp;gt;. Добавим в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; нетерминалы &amp;lt;tex&amp;gt; B_1 \cdots B_m , B_1^* \cdots B_m^*&amp;lt;/tex&amp;gt; и следуюшие правила: &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 B_1 \\ B_1^* \rightarrow {\alpha}_1 B_2\\ \vdots \\ B^*_m \rightarrow {\alpha}_m A^* &amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;(Если &amp;lt;tex&amp;gt;m = 0 &amp;lt;/tex&amp;gt;, тогда добавим правило &amp;lt;tex&amp;gt; A \rightarrow {\alpha}_0 A^* &amp;lt;/tex&amp;gt;).&lt;br /&gt;
В итоге &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; {{---}} [[Правоконтекстные грамматики, эквивалентность автоматам|правоконтекстная грамматика]], эквивалентная конечному автомату, который задает регулярный язык.&lt;br /&gt;
==== Пример ====&lt;br /&gt;
&amp;lt;tex&amp;gt; G = \left\{\begin{matrix} A \rightarrow \alpha B \alpha &lt;br /&gt;
\\ B \rightarrow \beta A | \beta&lt;br /&gt;
\end{matrix}\right.\Rightarrow G^* = \left\{\begin{matrix} A \rightarrow \alpha B  &lt;br /&gt;
\\ A^* \rightarrow B^* | \varepsilon&lt;br /&gt;
\\ B \rightarrow \beta A | \beta B^*&lt;br /&gt;
\\ B^* \rightarrow \alpha A^* | \varepsilon&lt;br /&gt;
\end{matrix}\right.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Исходная грамматика &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; генерирует язык: &amp;lt;tex&amp;gt; \{(ab)^n a^n | n &amp;gt; 0\}&amp;lt;/tex&amp;gt;. Результирущая грамматика &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; генирирует регулярный язык: &amp;lt;tex&amp;gt; (ab)^+ a^*&amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Сравнение двух методов ===&lt;br /&gt;
Ясно, что оба языка, генерируемых конечным автомат для первого метода и апрокисимируещей граматикой для второго метода, содержат в себе язык генерируемый исходной грамматикой. &amp;lt;br/&amp;gt; &lt;br /&gt;
Привлекателным свойством MT аппроксимации по сравнению с RTN, то, что она можеть быть применима к большим грамматикам: для каждого нетерминала грамматике &amp;lt;tex&amp;gt; G&amp;lt;/tex&amp;gt;, добавляется не более одного нового нетерминала в &amp;lt;tex&amp;gt; G^*&amp;lt;/tex&amp;gt; и размер результирующий грамматики максимум в 2 раза больше, чем размер исходной. Так как для RTN апроксимации грамматики &amp;lt;tex&amp;gt; G = \langle N, \Sigma, P, S \rangle&amp;lt;/tex&amp;gt;, количество состаяний апроксимируещего автомата в худшем случаи может составлять &amp;lt;tex&amp;gt; O(|N|^2)&amp;lt;/tex&amp;gt;, что может быть критично для аппроксимации   больших грамматик.&amp;lt;br/&amp;gt;&lt;br /&gt;
Также,еще несколько эффекивных методов аппрокимации можно найти в статьях, приведенных в ссылках.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* [http://books.google.ru/books?id=gvVK07D4wwUC&amp;amp;pg=PA161&amp;amp;lpg=PA161 книга, где можно узнать много нового про аппроксимации]&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Fwww.cs.ucsb.edu%2F~omer%2FDOWNLOADABLE%2Fcfg-reg09.pdf&amp;amp;ei=AQbcUrL_DIfi4wSx3IDYDg&amp;amp;usg=AFQjCNHsSWONr0_c2MDgvApwrhc81deY0w&amp;amp;sig2=_2iZj4Xexe6-p5Cyt-GEMg&amp;amp;bvm=bv.59568121,d.bGE Разобрано много примеров аппроксимаций]&lt;br /&gt;
&lt;br /&gt;
* [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCkQFjAA&amp;amp;url=http%3A%2F%2Facl.ldc.upenn.edu%2FJ%2FJ00%2FJ00-1003.pdf&amp;amp;ei=CgfcUrWwA-mF4ATY7IHQAQ&amp;amp;usg=AFQjCNG3QHL7yQSwTUbSi9xkse2j0p6YaA&amp;amp;sig2=UF88aXWRAbapv4o_UrIjGg&amp;amp;bvm=bv.59568121,d.bGE практические эксперименты с регулярной аппроксимацией]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>5.18.224.199</name></author>	</entry>

	</feed>