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

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

	</feed>