Прямое произведение ДКА — различия между версиями
Kris (обсуждение | вклад) м (→Разность ДКА) |
Kris (обсуждение | вклад) м (→Применение) |
||
Строка 30: | Строка 30: | ||
== Применение == | == Применение == | ||
− | Изменив конструкцию, можно получить автомат допускающий разность или объединение двух языков. | + | Изменив конструкцию, можно получить автомат, допускающий разность или объединение двух языков. |
=== Объединение ДКА === | === Объединение ДКА === | ||
[[Файл:Multi_DKA_united.png]] | [[Файл:Multi_DKA_united.png]] | ||
− | Необходимо разрешать любую цепочку удовлетворяющую первому или второму автомату, для этого | + | Необходимо разрешать любую цепочку, удовлетворяющую первому или второму автомату, для этого сделаем терминальными следующие вершины <tex>T = (T_1 \times Q_2) \cup (Q_1 \times T_2)</tex>. Полученный автомат удовлетворяет нашим требованиям, так как попав в какое-либо состояние из <tex>T_1</tex> или <tex>T_2</tex>, цепочка будет удовлетворять первому или второму автомату соответственно. |
=== Разность ДКА === | === Разность ДКА === | ||
Строка 43: | Строка 43: | ||
Заметим, что если <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>. |
Версия 01:10, 9 октября 2014
Определение: |
Прямым произведением двух ДКА и называется ДКА , где:
|
Содержание
Пример
Возьмем автомат
, и автомат .Автомат
будет их пересечением.Согласно определению:
- ...
Применение
Изменив конструкцию, можно получить автомат, допускающий разность или объединение двух языков.
Объединение ДКА
Необходимо разрешать любую цепочку, удовлетворяющую первому или второму автомату, для этого сделаем терминальными следующие вершины
. Полученный автомат удовлетворяет нашим требованиям, так как попав в какое-либо состояние из или , цепочка будет удовлетворять первому или второму автомату соответственно.Разность ДКА
Рассмотрим автомат
, то есть автомат , в котором терминальные и нетерминальные состояния инвертированы. Очевидно, он допускает те и только те слова, которые не допускает автомат , а значит, задаёт язык . Таким образом, — регулярный.Заметим, что если
и - регулярные языки, то - так же регулярный.Таким образом, надо построить пересечение двух автоматов, предварительно инвертировав во втором терминальные и нетерминальные состояния. Заметим, что меняется только набор терминальных вершин, следовательно в итоговой конструкции произведения ДКА сделаем терминальными следующие вершины
.