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

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%94%D0%9A%D0%90,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B7%D0%B0_O(n%5E2)_%D1%81_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D0%B0%D1%80_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D0%BC%D1%8B%D1%85_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=12740</id>
		<title>Минимизация ДКА, алгоритм за O(n^2) с построением пар различимых состояний</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%94%D0%9A%D0%90,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B7%D0%B0_O(n%5E2)_%D1%81_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D0%B0%D1%80_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D0%BC%D1%8B%D1%85_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=12740"/>
				<updated>2011-11-06T01:17:16Z</updated>
		
		<summary type="html">&lt;p&gt;Petrova: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
Состояния &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; если&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle u, s \rangle \vdash^* \langle t, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t \in T &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle v, s \rangle \vdash^* \langle z, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;z \notin T &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
Состояния &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; эквивалентны, если они неразличимы никакой строкой &amp;lt;tex&amp;gt;s&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;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; эквивалентны, то &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; эквивалентны.&lt;br /&gt;
|proof = &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; неэквивалентны. Тогда &amp;lt;tex&amp;gt; \mathcal {9} s&amp;lt;/tex&amp;gt;, такой, что&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle u, s \rangle \vdash^* \langle t, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t \in T &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle z, s \rangle \vdash^* \langle t_1, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t_1 \notin T &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, такой, что &amp;lt;tex&amp;gt; \langle v, s \rangle \vdash^* \langle x, \varepsilon \rangle &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in T&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Противоречие. &amp;lt;br&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \notin T&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Противоречие. &amp;lt;br&amp;gt;&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&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 \times 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;Q&amp;lt;/tex&amp;gt; пары состояний различимых строкой &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; и пометим их в таблице.&lt;br /&gt;
Пока &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; не станет пуста, будем делать следующее:&lt;br /&gt;
#Извлечем пару &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для всех пар &amp;lt;tex&amp;gt; \langle t, k \rangle &amp;lt;/tex&amp;gt;, таких, что &amp;lt;tex&amp;gt; \mathcal {9} c \in \Sigma, \langle t, c \rangle \vdash \langle u, \varepsilon \rangle, \langle k, c \rangle \vdash \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt; и пара &amp;lt;tex&amp;gt; \langle t, k \rangle&amp;lt;/tex&amp;gt; не отмечена в таблице, то отметим ее в таблице и добавим в &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
За один проход по таблице согласно теореме разбиваем не помеченные состояния на классы эквивалентности. &amp;lt;br&amp;gt;&lt;br /&gt;
Стартовым состоянием полученного автомата будет состояние, соответствующее классу эквивалентности, содержащему стартовое состояние исходного автомата. &amp;lt;br&amp;gt;&lt;br /&gt;
Терминальными состояниями полученного автомата будут состояния, соответствующие классам эквивалентности, содержащим терминальные состояния исходного автомата.&lt;br /&gt;
&lt;br /&gt;
==Корректность алгоритма==&lt;br /&gt;
Пусть в результате применения данного алгоритма к автомату &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; мы получили автомат &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt;. Докажем, что этот автомат минимальный и единственный с точностью до изоморфизма. &amp;lt;br&amp;gt;&lt;br /&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;A_{min}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Стартовые состояния &amp;lt;tex&amp;gt;s \in A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;s' \in A'&amp;lt;/tex&amp;gt; эквивалентны, так как &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; допускают один и тот же язык. Рассмотрим строку &amp;lt;tex&amp;gt;\alpha = a_1a_2...a_{k}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;a_{i} \in \Sigma&amp;lt;/tex&amp;gt;, такую что &amp;lt;tex&amp;gt; \langle s, \alpha \rangle \vdash^* \langle u, \varepsilon \rangle &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle s', \alpha \rangle \vdash^* \langle u', \varepsilon \rangle &amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;\langle s, a_1 \rangle \vdash^* \langle l, \varepsilon \rangle &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\langle s', a_1 \rangle \vdash^* \langle l', \varepsilon \rangle &amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;s'&amp;lt;/tex&amp;gt; эквивалентны, то &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;l'&amp;lt;/tex&amp;gt; эквивалентны. Аналогично для всех &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;. В итоге получим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; эквивалентно &amp;lt;tex&amp;gt;u'&amp;lt;/tex&amp;gt;. Значит для каждого состояния из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; существует эквивалентное состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Состояний в &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; меньше чем в &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt;, значит двум состояниям из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; эквивалентно одно состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;. Тогда эти два состояния эквивалентны, но автомат &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; построен так, что в нем нет эквивалентных состояний. Противоречие.&amp;lt;br&amp;gt;&lt;br /&gt;
Так как каждому состоянию из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; эквивалентно состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;, то автоматы &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; изоморфны.&lt;br /&gt;
&lt;br /&gt;
==Время работы алгоритма==&lt;br /&gt;
Каждую пару мы добавляли в очередь один раз, значит время заполнения таблицы &amp;lt;tex&amp;gt;O(n^2)&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;
Минимизируем данный автомат. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:dka.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Будем рассматривать только нижний треугольник таблицы пар различимых состояний. &amp;lt;br&amp;gt;&lt;br /&gt;
Отметили состояния, различающиеся строкой &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
{| border = &amp;quot;1&amp;quot;&lt;br /&gt;
 |B&lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |C&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;5&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |D&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |E&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |F&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |colspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |G&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |  &lt;br /&gt;
 |colspan = &amp;quot;1&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |H&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |x &lt;br /&gt;
 |x&lt;br /&gt;
 |-&lt;br /&gt;
 | &lt;br /&gt;
 |A&lt;br /&gt;
 |B&lt;br /&gt;
 |C&lt;br /&gt;
 |D&lt;br /&gt;
 |E&lt;br /&gt;
 |F&lt;br /&gt;
 |G&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На момент опустошения очереди&lt;br /&gt;
{| border = &amp;quot;1&amp;quot;&lt;br /&gt;
 |B&lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |C&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |colspan = &amp;quot;5&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |D&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |E&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |colspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |F&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |colspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |G&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |  &lt;br /&gt;
 |colspan = &amp;quot;1&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |H&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x&lt;br /&gt;
 |-&lt;br /&gt;
 | &lt;br /&gt;
 |A&lt;br /&gt;
 |B&lt;br /&gt;
 |C&lt;br /&gt;
 |D&lt;br /&gt;
 |E&lt;br /&gt;
 |F&lt;br /&gt;
 |G&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Из таблицы видно, что классы эквивалентных состояний это &amp;lt;tex&amp;gt; \mathcal {f} A, B \mathcal {g}, \mathcal {f} C, D \mathcal {g}, \mathcal {f} F, G \mathcal {g}, \mathcal {f} E \mathcal {g}, \mathcal {f} H \mathcal {g} &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Итого получили такой автомат: &amp;lt;br&amp;gt; [[Файл:dkaMin.jpg]]&lt;/div&gt;</summary>
		<author><name>Petrova</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%94%D0%9A%D0%90,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B7%D0%B0_O(n%5E2)_%D1%81_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D0%B0%D1%80_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D0%BC%D1%8B%D1%85_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=12739</id>
		<title>Минимизация ДКА, алгоритм за O(n^2) с построением пар различимых состояний</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%94%D0%9A%D0%90,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B7%D0%B0_O(n%5E2)_%D1%81_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D0%B0%D1%80_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D0%BC%D1%8B%D1%85_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9&amp;diff=12739"/>
				<updated>2011-11-06T01:11:57Z</updated>
		
		<summary type="html">&lt;p&gt;Petrova: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Определения==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
Состояния &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; если&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle u, s \rangle \vdash^* \langle t, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t \in T &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle v, s \rangle \vdash^* \langle z, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;z \notin T &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
Состояния &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; эквивалентны, если они неразличимы никакой строкой &amp;lt;tex&amp;gt;s&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;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; эквивалентны, то &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; эквивалентны.&lt;br /&gt;
|proof = &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; неэквивалентны. Тогда &amp;lt;tex&amp;gt; \mathcal {9} s&amp;lt;/tex&amp;gt;, такой, что&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle u, s \rangle \vdash^* \langle t, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t \in T &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \langle z, s \rangle \vdash^* \langle t_1, \varepsilon \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t_1 \notin T &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, такой, что &amp;lt;tex&amp;gt; \langle v, s \rangle \vdash^* \langle x, \varepsilon \rangle &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \in T&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Противоречие. &amp;lt;br&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;x \notin T&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; различимы строкой &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Противоречие. &amp;lt;br&amp;gt;&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z&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 \times 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;Q&amp;lt;/tex&amp;gt; пары состояний различимых строкой &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; и пометим их в таблице.&lt;br /&gt;
Пока &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; не станет пуста, будем делать следующее:&lt;br /&gt;
#Извлечем пару &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Для всех пар &amp;lt;tex&amp;gt; \langle t, k \rangle &amp;lt;/tex&amp;gt;, таких, что &amp;lt;tex&amp;gt; \mathcal {9} c \in \Sigma, \langle t, c \rangle \vdash \langle u, \varepsilon \rangle, \langle k, c \rangle \vdash \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt; и пара &amp;lt;tex&amp;gt; \langle t, k \rangle&amp;lt;/tex&amp;gt; не отмечена в таблице, то отметим ее в таблице и добавим в &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
За один проход по таблице согласно теореме разбиваем не помеченные состояния на классы эквивалентности.&lt;br /&gt;
&lt;br /&gt;
==Корректность алгоритма==&lt;br /&gt;
Пусть в результате применения данного алгоритма к автомату &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; мы получили автомат &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt;. Докажем, что этот автомат минимальный и единственный с точностью до изоморфизма. &amp;lt;br&amp;gt;&lt;br /&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;A_{min}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Стартовые состояния &amp;lt;tex&amp;gt;s \in A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;s' \in A'&amp;lt;/tex&amp;gt; эквивалентны, так как &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; допускают один и тот же язык. Рассмотрим строку &amp;lt;tex&amp;gt;\alpha = a_1a_2...a_{k}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;a_{i} \in \Sigma&amp;lt;/tex&amp;gt;, такую что &amp;lt;tex&amp;gt; \langle s, \alpha \rangle \vdash^* \langle u, \varepsilon \rangle &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle s', \alpha \rangle \vdash^* \langle u', \varepsilon \rangle &amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;\langle s, a_1 \rangle \vdash^* \langle l, \varepsilon \rangle &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\langle s', a_1 \rangle \vdash^* \langle l', \varepsilon \rangle &amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;s'&amp;lt;/tex&amp;gt; эквивалентны, то &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;l'&amp;lt;/tex&amp;gt; эквивалентны. Аналогично для всех &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;. В итоге получим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; эквивалентно &amp;lt;tex&amp;gt;u'&amp;lt;/tex&amp;gt;. Значит для каждого состояния из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; существует эквивалентное состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Состояний в &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; меньше чем в &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt;, значит двум состояниям из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; эквивалентно одно состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;. Тогда эти два состояния эквивалентны, но автомат &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; построен так, что в нем нет эквивалентных состояний. Противоречие.&amp;lt;br&amp;gt;&lt;br /&gt;
Так как каждому состоянию из &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; эквивалентно состояние из &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt;, то автоматы &amp;lt;tex&amp;gt;A_{min}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A'&amp;lt;/tex&amp;gt; изоморфны.&lt;br /&gt;
&lt;br /&gt;
==Время работы алгоритма==&lt;br /&gt;
Каждую пару мы добавляли в очередь один раз, значит время заполнения таблицы &amp;lt;tex&amp;gt;O(n^2)&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;
Минимизируем данный автомат. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:dka.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Будем рассматривать только нижний треугольник таблицы пар различимых состояний. &amp;lt;br&amp;gt;&lt;br /&gt;
Отметили состояния, различающиеся строкой &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
{| border = &amp;quot;1&amp;quot;&lt;br /&gt;
 |B&lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |C&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;5&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |D&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |E&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |F&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |colspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |G&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |  &lt;br /&gt;
 |colspan = &amp;quot;1&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |H&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |x &lt;br /&gt;
 |x&lt;br /&gt;
 |-&lt;br /&gt;
 | &lt;br /&gt;
 |A&lt;br /&gt;
 |B&lt;br /&gt;
 |C&lt;br /&gt;
 |D&lt;br /&gt;
 |E&lt;br /&gt;
 |F&lt;br /&gt;
 |G&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На момент опустошения очереди&lt;br /&gt;
{| border = &amp;quot;1&amp;quot;&lt;br /&gt;
 |B&lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |C&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |colspan = &amp;quot;5&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |D&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 | &lt;br /&gt;
 |colspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |E&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |colspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |F&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |colspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |G&lt;br /&gt;
 |x&lt;br /&gt;
 |x&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |  &lt;br /&gt;
 |colspan = &amp;quot;1&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 |H&lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x &lt;br /&gt;
 |x&lt;br /&gt;
 |-&lt;br /&gt;
 | &lt;br /&gt;
 |A&lt;br /&gt;
 |B&lt;br /&gt;
 |C&lt;br /&gt;
 |D&lt;br /&gt;
 |E&lt;br /&gt;
 |F&lt;br /&gt;
 |G&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Из таблицы видно, что классы эквивалентных состояний это &amp;lt;tex&amp;gt; \mathcal {f} A, B \mathcal {g}, \mathcal {f} C, D \mathcal {g}, \mathcal {f} F, G \mathcal {g}, \mathcal {f} E \mathcal {g}, \mathcal {f} H \mathcal {g} &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Итого получили такой автомат: &amp;lt;br&amp;gt; [[Файл:dkaMin.jpg]]&lt;/div&gt;</summary>
		<author><name>Petrova</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DkaMin.jpg&amp;diff=12738</id>
		<title>Файл:DkaMin.jpg</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DkaMin.jpg&amp;diff=12738"/>
				<updated>2011-11-06T01:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;Petrova: Минимизированный автомат&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Минимизированный автомат&lt;/div&gt;</summary>
		<author><name>Petrova</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dka.jpg&amp;diff=12737</id>
		<title>Файл:Dka.jpg</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dka.jpg&amp;diff=12737"/>
				<updated>2011-11-06T01:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;Petrova: Автомат для минимизации&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автомат для минимизации&lt;/div&gt;</summary>
		<author><name>Petrova</name></author>	</entry>

	</feed>