<?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=37.113.172.118&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=37.113.172.118&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/37.113.172.118"/>
		<updated>2026-04-10T10:33:57Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%AD%D1%80%D0%BB%D0%B8,_%D0%B4%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE_%D0%BE%D1%86%D0%B5%D0%BD%D0%BA%D0%B8_O(n%5E2)_%D0%B4%D0%BB%D1%8F_%D0%BE%D0%B4%D0%BD%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%BD%D0%BE%D0%B9_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8&amp;diff=58703</id>
		<title>Алгоритм Эрли, доказательство оценки O(n^2) для однозначной грамматики</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%AD%D1%80%D0%BB%D0%B8,_%D0%B4%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE_%D0%BE%D1%86%D0%B5%D0%BD%D0%BA%D0%B8_O(n%5E2)_%D0%B4%D0%BB%D1%8F_%D0%BE%D0%B4%D0%BD%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%BD%D0%BE%D0%B9_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8&amp;diff=58703"/>
				<updated>2017-01-04T19:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;37.113.172.118: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Алгоритм==&lt;br /&gt;
Для начала модифицируем [[Алгоритм Эрли|алгоритм Эрли]].&lt;br /&gt;
&lt;br /&gt;
Будем рассматривать грамматику [[Удаление eps-правил из грамматики|без &amp;amp;epsilon;-правил]] и [[Удаление бесполезных символов из грамматики|бесполезных символов]].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;I_0&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\{[S' \rightarrow \cdot S, 0]\}&amp;lt;/tex&amp;gt; # Правило (0) — инициализация&lt;br /&gt;
 useful_loop(0)&lt;br /&gt;
 &lt;br /&gt;
 for j = 1..n&lt;br /&gt;
     for &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot a_{j} \beta, i] \in I_{j-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; &amp;amp;cup;= &amp;lt;tex&amp;gt;[A \rightarrow \alpha a_{j} \cdot \beta, i]&amp;lt;/tex&amp;gt; # Правило (1)&lt;br /&gt;
     useful_loop(j)&lt;br /&gt;
&lt;br /&gt;
 function useful_loop(j):&lt;br /&gt;
     &amp;lt;tex&amp;gt;I_j'' = I_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
     while &amp;lt;tex&amp;gt;I_j'' \ne \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;I_j' = I_j''&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;I_j'' = \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
         for &amp;lt;tex&amp;gt;[B \rightarrow \eta \cdot , i] \in I_j'&amp;lt;/tex&amp;gt; # (*)&lt;br /&gt;
             for &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot B \beta, k] \in I_{i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 &amp;lt;tex&amp;gt;I_j''&amp;lt;/tex&amp;gt; &amp;amp;cup;= &amp;lt;tex&amp;gt;[A \rightarrow \alpha B \cdot \beta, k]&amp;lt;/tex&amp;gt; # Правило (2)&lt;br /&gt;
             &lt;br /&gt;
         for &amp;lt;tex&amp;gt;[B \rightarrow \alpha \cdot A \eta, k] \in I_j'&amp;lt;/tex&amp;gt; # (**)&lt;br /&gt;
             for &amp;lt;tex&amp;gt;\beta : (A \rightarrow \beta) \in P&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 &amp;lt;tex&amp;gt;I_j''&amp;lt;/tex&amp;gt; &amp;amp;cup;= &amp;lt;tex&amp;gt;[A \rightarrow \cdot \beta, j]&amp;lt;/tex&amp;gt; # Правило (3)&lt;br /&gt;
         &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; &amp;amp;cup;= &amp;lt;tex&amp;gt;I_j''&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В циклах, помеченных &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;(**)&amp;lt;/tex&amp;gt;, просматривается не весь список &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt;, а только те ситуации, которые были добавлены на предыдущей итерации цикла &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. Данная модификация является корректной.&lt;br /&gt;
# Рассмотрим цикл &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt;. Если в текущей ситуации &amp;lt;tex&amp;gt;[B \rightarrow \eta \cdot, i]&amp;lt;/tex&amp;gt; этого цикла &amp;lt;tex&amp;gt;i \ne j&amp;lt;/tex&amp;gt;, то во внутреннем цикле просматривается список с меньшим индексом, в который новые ситуации больше не добавляются. Поэтому после первого просмотра этого списка будут добавлены все ситуации, удовлетворяющие условию, и больше ситуацию &amp;lt;tex&amp;gt;[B \rightarrow \eta \cdot, i]&amp;lt;/tex&amp;gt; в цикле &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; рассматривать не нужно. Если же &amp;lt;tex&amp;gt;i = j&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\eta \Rightarrow^* \varepsilon&amp;lt;/tex&amp;gt;, что возможно, только если &amp;lt;tex&amp;gt;B = S', \eta = \varepsilon&amp;lt;/tex&amp;gt;. Тогда во внутреннем цикле не будет добавлено ни одной ситуации, так как &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; не встречается в правых частях правил.&lt;br /&gt;
# Теперь рассмотрим цикл &amp;lt;tex&amp;gt;(**)&amp;lt;/tex&amp;gt;. Так как для каждой ситуации &amp;lt;tex&amp;gt;[B \rightarrow \alpha \cdot A \eta, k]&amp;lt;/tex&amp;gt; в список добавляется новая ситуация, соответствующая правилу из грамматики, а грамматика фиксирована, то после первого просмотра будут добавлены все возможные ситуации для &amp;lt;tex&amp;gt;[B \rightarrow \alpha \cdot A \eta, k]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом, во все списки будут добавлены ситуации, которые были бы добавлены в ходе обычного алгоритма. Очевидно, что лишних ситуаций добавлено не будет, так как в циклах &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;(**)&amp;lt;/tex&amp;gt; просматривается подмножество полного списка. Значит этот алгоритм эквивалентен оригинальному.&lt;br /&gt;
&lt;br /&gt;
==Время работы для однозначной грамматики==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=1&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall\,j: 1 \le j \le n&amp;lt;/tex&amp;gt; в списке &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; находится &amp;lt;tex&amp;gt;O(j)&amp;lt;/tex&amp;gt; ситуаций.&lt;br /&gt;
|proof=&lt;br /&gt;
Так как грамматика фиксирована, то &amp;lt;tex&amp;gt;\forall i&amp;lt;/tex&amp;gt; количество ситуаций вида &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot \beta, i]&amp;lt;/tex&amp;gt; не больше некоторой константы. Таким образом, поскольку в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; находятся ситуации, у которых &amp;lt;tex&amp;gt;0 \le i \le j&amp;lt;/tex&amp;gt;, всего в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; будет &amp;lt;tex&amp;gt;O(j)&amp;lt;/tex&amp;gt; ситуаций.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=2&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G = (N, \Sigma, P, S)&amp;lt;/tex&amp;gt; {{---}} однозначная КС-грамматика без непорождающих нетерминалов и &amp;lt;tex&amp;gt;a_1 \dots a_n&amp;lt;/tex&amp;gt; {{---}} цепочка из &amp;lt;tex&amp;gt;\Sigma^*&amp;lt;/tex&amp;gt;. Тогда алгоритм Эрли пытается включить &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot \beta, i]&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; не более одного раза, если &amp;lt;tex&amp;gt;\alpha \ne \varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Ситуацию &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot \beta, i]&amp;lt;/tex&amp;gt; можно включить в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; только по правилам &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt; (если последний символ &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; — терминал) и &amp;lt;tex&amp;gt;(2)&amp;lt;/tex&amp;gt; (если нетерминал). В первом случае результат очевиден. Во втором случае допустим, что &amp;lt;tex&amp;gt;[A \rightarrow \alpha'B \cdot \beta, i]&amp;lt;/tex&amp;gt; включается в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt;, когда рассматриваются две ситуации &amp;lt;tex&amp;gt;[B \rightarrow \eta_1 \cdot, k_1]&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;[B \rightarrow \eta_2 \cdot, k_2]&amp;lt;/tex&amp;gt; (они различны, так как в цикле &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; каждая ситуация из каждого списка рассматривается по одному разу). Тогда ситуация &amp;lt;tex&amp;gt;[A \rightarrow \alpha' \cdot B\beta, i]&amp;lt;/tex&amp;gt; должна оказаться одновременно в &amp;lt;tex&amp;gt;I_{k_1}&amp;lt;/tex&amp;gt; и в &amp;lt;tex&amp;gt;I_{k_2}&amp;lt;/tex&amp;gt;. Таким образом, получаем:&lt;br /&gt;
* &amp;lt;tex&amp;gt;\alpha' \Rightarrow^* a_{i+1} \ldots a_{k_1}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\alpha' \Rightarrow^* a_{i+1} \ldots a_{k_2}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* &amp;lt;tex&amp;gt;\eta_1 \Rightarrow^* a_{k_1+1} \ldots a_j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\eta_2 \Rightarrow^* a_{k_2+1} \ldots a_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Следовательно, &amp;lt;tex&amp;gt;\alpha' \eta_1 \Rightarrow^* a_{i+1} \ldots a_j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\alpha' \eta_2 \Rightarrow^* a_{i+1} \ldots a_j&amp;lt;/tex&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;S \Rightarrow^* \gamma A \delta \Rightarrow^* a_1 \ldots a_i A \delta \Rightarrow a_1 \ldots a_i \alpha' B \beta \delta&amp;lt;/tex&amp;gt;. Предположим, что &amp;lt;tex&amp;gt;\beta \delta \Rightarrow^* w'&amp;lt;/tex&amp;gt; (ведь в грамматике нет непорождающих нетерминалов). Тогда &amp;lt;tex&amp;gt;S \Rightarrow^* a_1 \ldots a_i \alpha' \eta_1 w'&amp;lt;/tex&amp;gt; и аналогично &amp;lt;tex&amp;gt;S \Rightarrow^* a_1 \ldots a_i \alpha' \eta_2 w'&amp;lt;/tex&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Таким образом, если &amp;lt;tex&amp;gt;k_1 \ne k_2&amp;lt;/tex&amp;gt;, то подстрока &amp;lt;tex&amp;gt;a_{i+1} \ldots a_j&amp;lt;/tex&amp;gt; выводится двумя различными способами из &amp;lt;tex&amp;gt;\alpha' \eta_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\alpha' \eta_2&amp;lt;/tex&amp;gt; (поскольку в первом случае &amp;lt;tex&amp;gt;\alpha' \Rightarrow^* a_{i+1} \ldots a_{k_1}&amp;lt;/tex&amp;gt;, а во втором &amp;lt;tex&amp;gt;\alpha' \Rightarrow^* a_{i+1} \ldots a_{k_2}&amp;lt;/tex&amp;gt;), то есть у строки &amp;lt;tex&amp;gt;a_1 \ldots a_jw'&amp;lt;/tex&amp;gt; есть два различных вывода, что противоречит однозначности грамматики. Если же &amp;lt;tex&amp;gt;k_1 = k_2&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\eta_1 \ne \eta_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;
Если входная грамматика однозначна, то время выполнения алгоритма Эрли для слова длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; составляет &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Орагнизуем каждый список разбора &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; таким образом, чтобы по любому символу &amp;lt;tex&amp;gt;x \in \Sigma \cup N&amp;lt;/tex&amp;gt;, можно было за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt; получить список тех и только тех ситуаций, содержащихся в &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt;, которые имеют вид &amp;lt;tex&amp;gt;[A \rightarrow \alpha \cdot x \beta, j]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Время построения &amp;lt;tex&amp;gt;I_0&amp;lt;/tex&amp;gt; не зависит от входной строки.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;I_j, \, j &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# При включении ситуаций по правилу &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt; необходимо лишь просмотреть предыдущий список и для каждого его элемента выполнить константное число операций.&lt;br /&gt;
# Рассмотрим правило &amp;lt;tex&amp;gt;(2)&amp;lt;/tex&amp;gt;. Можно считать, что внутри цикла &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; рассматриваются те и только те ситуации, которые удовлетворяют условию (так как список таких ситуаций можно по нетерминалу получить за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;). Тогда каждая такая ситуация будет добавлена в список и, исходя из леммы 2, попытка добавления будет единственной. А так как по лемме 1 всего в списке &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; находится &amp;lt;tex&amp;gt;O(j)&amp;lt;/tex&amp;gt; ситуаций, то суммарно за все итерации внешнего цикла while внутри цикла &amp;lt;tex&amp;gt;(*)&amp;lt;/tex&amp;gt; будет рассмотрено &amp;lt;tex&amp;gt;O(j)&amp;lt;/tex&amp;gt; ситуаций.&lt;br /&gt;
# Так как грамматика фиксирована, то при применении правила &amp;lt;tex&amp;gt;(3)&amp;lt;/tex&amp;gt; при рассмотрении любой ситуации количество включаемых ситуаций не превосходит некоторой константы, поэтому для каждой рассмотренной ситуации будет выполнено &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt; операций.&lt;br /&gt;
Таким образом, на построение списка &amp;lt;tex&amp;gt;I_j&amp;lt;/tex&amp;gt; будет потрачено &amp;lt;tex&amp;gt;O(j)&amp;lt;/tex&amp;gt; операций. Тогда время работы алгоритма составляет &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Алгоритм_Эрли | Алгоритм Эрли]]&lt;br /&gt;
* [[Алгоритм_Кока-Янгера-Касами_разбора_грамматики_в_НФХ | Алгоритм Кока-Янгера-Касами разбора грамматики в НФХ ]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации==&lt;br /&gt;
*А. Ахо, Дж. Ульман. Теория синтакcического анализа, перевода и компиляции. Том 1. Синтакcический анализ.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;/div&gt;</summary>
		<author><name>37.113.172.118</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8_(%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D1%8B%D1%85_%D0%B8_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2)&amp;diff=58597</id>
		<title>Теорема Клини (совпадение классов автоматных и регулярных языков)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8_(%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D1%8B%D1%85_%D0%B8_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2)&amp;diff=58597"/>
				<updated>2017-01-03T16:55:04Z</updated>
		
		<summary type="html">&lt;p&gt;37.113.172.118: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|author=Клини&lt;br /&gt;
|statement=Классы [[Детерминированные_конечные_автоматы#Автоматные_языки | автоматных]] и [[Регулярные языки:_два определения_и_их_эквивалентность#REG1 | регулярных]] языков совпадают.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Reg0.png|200px|thumb|right|Автоматы для регулярных языков нулевого поколения]]&lt;br /&gt;
[[Файл:cup.png|200px|thumb|right|Автомат для объединения двух регулярных языков]]&lt;br /&gt;
[[Файл:concat.png|200px|thumb|right|Автомат для конкатенации двух регулярных языков]]&lt;br /&gt;
[[Файл:Klenee.png|200px|thumb|right|Автомат для замыкания Клини регулярного языка]]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathrm{REG} \subseteq \mathrm{AUT}&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;n = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Для этого достаточно построить автоматы для трех языков:&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \varnothing&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \left\{\varepsilon \right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \left\{c \right\}&amp;lt;/tex&amp;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 + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Для этого достаточно научиться строить автоматы для следующих языков (&amp;lt;tex&amp;gt;L, M \in \mathrm{R_n}&amp;lt;/tex&amp;gt;): &lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = L \cup M&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = LM&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = L^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Заметим, что по предположению индукции автоматы для &amp;lt;tex&amp;gt;L, M&amp;lt;/tex&amp;gt; могут быть построены.&lt;br /&gt;
&lt;br /&gt;
'''Итого''', мы можем по регулярному выражению построить автомат, допускающий тот же язык.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathrm{AUT} \subseteq \mathrm{REG}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для доказательства будем строить регулярное выражение, допускающее язык, заданный каким-то автоматом. Пусть задан автомат &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с набором состояний &amp;lt;tex&amp;gt;Q = \left\{1, 2, \dots n \right\}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Определим регулярные выражения, задающие следующие множества слов:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\xi_{ijk} = \left\{ s \mid \langle i,s \rangle  \vdash^* \langle j, \varepsilon \rangle \right\} &amp;lt;/tex&amp;gt;, причем в качестве промежуточных вершин выступают только такие, у которых номер не более &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Построим эти регулярные выражения:&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ii0} = (c_1 \mid \dots \mid c_l)^*&amp;lt;/tex&amp;gt; , где &amp;lt;tex&amp;gt;c_1, c_2, \dots c_l&amp;lt;/tex&amp;gt; символы, по которым есть переход из состояния &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в него же самого.&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ij0} = c_1 \mid \dots \mid c_l&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;c_1, c_2, \dots c_l&amp;lt;/tex&amp;gt; символы, по которым есть переход из состояния &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в состояние &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{iik} = (\xi_{ii{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{ki{k-1}} )^*&amp;lt;/tex&amp;gt;. &lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ijk} = \xi_{ij{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{kj{k-1}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Теперь нетрудно задать регулярное выражение для всего языка:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\varphi = \xi_{s{t_1}n} \mid \xi_{s{t_2}n} \mid \dots \mid \xi_{s{t_r}n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; — стартовое состояние, а &amp;lt;tex&amp;gt;t_1, t_2, \dots t_r&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;
* [https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8 Википедия {{---}} Теорема Клини]&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 61.— ISBN 5-8459-0261-4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Автоматы и регулярные языки]]&lt;/div&gt;</summary>
		<author><name>37.113.172.118</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8_(%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D1%8B%D1%85_%D0%B8_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2)&amp;diff=58596</id>
		<title>Теорема Клини (совпадение классов автоматных и регулярных языков)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8_(%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D1%8B%D1%85_%D0%B8_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2)&amp;diff=58596"/>
				<updated>2017-01-03T16:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;37.113.172.118: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|author=Клини&lt;br /&gt;
|statement=Классы [[Детерминированные_конечные_автоматы#Автоматные_языки | автоматных]] и [[Регулярные языки:_два определения_и_их_эквивалентность#REG1 | регулярных]] языков совпадают.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Reg0.png|200px|thumb|right|Автоматы для регулярных языков нулевого поколения]]&lt;br /&gt;
[[Файл:cup.png|200px|thumb|right|Автомат для объединения двух регулярных языков]]&lt;br /&gt;
[[Файл:concat.png|200px|thumb|right|Автомат для конкатенации двух регулярных языков]]&lt;br /&gt;
[[Файл:Klenee.png|200px|thumb|right|Автомат для замыкания Клини регулярного языка]]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathrm{REG} \subseteq \mathrm{AUT}&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;n = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Для этого достаточно построить автоматы для трех языков:&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \varnothing&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \left\{\varepsilon \right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L = \left\{c \right\}&amp;lt;/tex&amp;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 + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Для этого достаточно научиться строить автоматы для следующих языков (&amp;lt;tex&amp;gt;L, M \in \mathrm{R_n}&amp;lt;/tex&amp;gt;): &lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = L \cup M&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = LM&amp;lt;/tex&amp;gt;,&lt;br /&gt;
:#&amp;lt;tex&amp;gt;L^\prime = L^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Заметим, что по предположению индукции автоматы для &amp;lt;tex&amp;gt;L, M&amp;lt;/tex&amp;gt; могут быть построены.&lt;br /&gt;
&lt;br /&gt;
'''Итого''', мы можем по регулярному выражению построить автомат, допускающий тот же язык.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathrm{AUT} \subseteq \mathrm{REG}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для доказательства будем строить регулярное выражение, допускающее язык, заданный каким-то автоматом. Пусть задан автомат &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с набором состояний &amp;lt;tex&amp;gt;Q = \left\{1, 2, \dots n \right\}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Определим регулярные выражения, задающие следующие множества слов:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\xi_{ijk} = \left\{ s \mid \langle i,s \rangle  \vdash^* \langle j, \varepsilon \rangle \right\} &amp;lt;/tex&amp;gt;, причем в качестве промежуточных вершин выступают только такие, у которых номер не более &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Построим эти регулярные выражения:&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ii0} = (c_1 \mid \dots \mid c_l)^*&amp;lt;/tex&amp;gt; , где &amp;lt;tex&amp;gt;c_1, c_2, \dots c_l&amp;lt;/tex&amp;gt; символы, по которым есть переход из состояния &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в него же самого.&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ij0} = c_1 \mid \dots \mid c_l&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;c_1, c_2, \dots c_l&amp;lt;/tex&amp;gt; символы, по которым есть переход из состояния &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в состояние &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{iik} = (\xi_{ii{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{ki{k-1}} )^*&amp;lt;/tex&amp;gt;. &lt;br /&gt;
#&amp;lt;tex&amp;gt;\xi_{ijk} = \xi_{ij{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{kj{k-1}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Теперь нетрудно задать регулярное выражение для всего языка:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\varphi = \xi_{s{t_1}n} \mid \xi_{s{t_2}n} \mid \dots \mid \xi_{s{t_r}n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; — стартовое состояние, а &amp;lt;tex&amp;gt;t_1, t_2, \dots t_r&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;
* [https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9A%D0%BB%D0%B8%D0%BD%D0%B8 Википедия {{---}} Теорема Клини]&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 61.— ISBN 5-8459-0261-4&lt;br /&gt;
* [https://drona.csa.iisc.ernet.in/~deepakd/atc-2011/regular-exp.pdf Regular Expressions {{---}} Deepak D’Souza]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Автоматы и регулярные языки]]&lt;/div&gt;</summary>
		<author><name>37.113.172.118</name></author>	</entry>

	</feed>