Прямое произведение ДКА — различия между версиями
Kris (обсуждение | вклад) м (→Источники информации) |
|||
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | '''Прямым произведением''' двух [[Детерминированные конечные автоматы|ДКА]] <tex>A_1 = \langle \ | + | '''Прямым произведением''' двух [[Детерминированные конечные автоматы|ДКА]] <tex>A_1 = \langle \Sigma_1, Q_1, s_1, T_1, \delta_1 \rangle</tex> и <tex>A_2 = \langle \Sigma_2, Q_2, s_2, T_2, \delta_2 \rangle</tex> называется ДКА <tex>A = \langle \Sigma, Q, s, T, \delta \rangle</tex>, где: |
− | * <tex>Q = Q_1 \times Q_2 | + | * <tex>\Sigma = \Sigma_1 \cup \Sigma_2</tex> |
− | * <tex>s = \langle s_1, s_2 \rangle | + | * <tex>Q = Q_1 \times Q_2</tex> |
− | * <tex>T = T_1 \times T_2 | + | * <tex>s = \langle s_1, s_2 \rangle</tex> |
− | * <tex>\delta(\langle q_1, q_2 \rangle, c) = \langle \delta_1(q_1, c), \delta_2(q_2, c) \rangle | + | * <tex>T = T_1 \times T_2</tex> |
+ | * <tex>\delta(\langle q_1, q_2 \rangle, c) = \langle \delta_1(q_1, c), \delta_2(q_2, c) \rangle</tex> | ||
}} | }} | ||
Строка 11: | Строка 12: | ||
[[Файл:Multi_DKA_source.png]] | [[Файл:Multi_DKA_source.png]] | ||
− | Возьмем | + | Возьмем автоматы: |
+ | * <tex>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</tex> | ||
+ | * <tex>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</tex>. | ||
[[Файл:Multi_DKA_result.png]] | [[Файл:Multi_DKA_result.png]] | ||
Строка 39: | Строка 42: | ||
[[Файл:Multi_DKA_division.png]] | [[Файл:Multi_DKA_division.png]] | ||
− | Рассмотрим автомат <tex>\overline{M} = \langle \Sigma , Q , s , Q \setminus T , \delta \rangle </tex>, то есть автомат <tex>M</tex>, в котором терминальные и нетерминальные состояния инвертированы. Очевидно, он допускает те и только те слова, которые не допускает автомат <tex>M</tex>, а значит, задаёт язык <tex>\overline{M}</tex> | + | Рассмотрим автомат <tex>\overline{M} = \langle \Sigma , Q , s , Q \setminus T , \delta \rangle </tex>, то есть автомат <tex>M</tex>, в котором терминальные и нетерминальные состояния инвертированы, если в автомате было опущено «дьявольское состояние», его необходимо добавить и сделать терминальным. Очевидно, он допускает те и только те слова, которые не допускает автомат <tex>M</tex>, а значит, задаёт язык <tex>\overline{M}</tex>. |
− | Заметим, что если <tex>L</tex> и <tex>M</tex> - регулярные языки, то <tex>L \setminus M = L \cap \overline{M}</tex> - так же регулярный. | + | Заметим, что если <tex>L</tex> и <tex>M</tex> {{---}} регулярные языки, то <tex>L \setminus M = L \cap \overline{M}</tex> {{---}} так же регулярный. |
− | + | Следовательно, надо построить пересечение двух автоматов, предварительно инвертировав во втором терминальные и нетерминальные состояния. Заметим, что меняется только набор терминальных вершин, следовательно в итоговой конструкции произведения ДКА сделаем терминальными следующие вершины <tex>T = T_1 \times (Q_2 \setminus T_2)</tex>. | |
== См. также == | == См. также == |
Версия 13:54, 9 октября 2014
Определение: |
Прямым произведением двух ДКА и называется ДКА , где:
|
Содержание
Пример
Возьмем автоматы:
- .
Автомат
будет их пересечением.Согласно определению:
- ...
Применение
Изменив конструкцию, можно получить автомат, допускающий разность или объединение двух языков.
Объединение ДКА
Необходимо разрешать любую цепочку, удовлетворяющую первому или второму автомату, для этого сделаем терминальными следующие вершины
. Полученный автомат удовлетворяет нашим требованиям, так как попав в какое-либо состояние из или , цепочка будет удовлетворять первому или второму автомату соответственно.Разность ДКА
Рассмотрим автомат
, то есть автомат , в котором терминальные и нетерминальные состояния инвертированы, если в автомате было опущено «дьявольское состояние», его необходимо добавить и сделать терминальным. Очевидно, он допускает те и только те слова, которые не допускает автомат , а значит, задаёт язык .Заметим, что если
и — регулярные языки, то — так же регулярный.Следовательно, надо построить пересечение двух автоматов, предварительно инвертировав во втором терминальные и нетерминальные состояния. Заметим, что меняется только набор терминальных вершин, следовательно в итоговой конструкции произведения ДКА сделаем терминальными следующие вершины
.См. также
Источники информации
- Wikipedia — Deterministic finite automaton
- Lecture "Formal languages, automata and computation" : Carnegie Mellon University in Qatar
- Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 152-154.