Изменения

Перейти к: навигация, поиск

Детерминированные конечные автоматы

322 байта добавлено, 19:35, 10 января 2020
Нет описания правки
== Способы представления ==
* ===Диаграмма переходов — граф, вершины которого соответствуют состояниям автомата, а рёбра — переходам между состояниями.* Таблица переходов <tex>T (|Q| \times |\Sigma|)</tex>, дающая табличное представление функции <tex>\delta</tex>.===
Диаграмма переходов — граф, вершины которого соответствуют состояниям автомата, а рёбра — переходам между состояниями.:<tex>\bigcirc</tex> — нетерминальное состояние,:<tex>\circledcirc</tex> — терминальное состояние,:Стрелка <tex>\downarrow</tex> указывает на начальное состояние.{| class ="wikitable" !Пример!!Описание|-align= Примеры "center"| style="background-color:white;" | [[Файл:Automata_Search.png|340px]]|Автомат для поиска образца в тексте для строки <tex>abbab</tex>.|-align="center"| style="background-color:white;" | [[Файл:Finite state machine 1.png|250 px]]|Автомат, принимающий непустые строки из чередующихся символов <tex>a</tex> и <tex>b</tex>,без «дьявольской вершины». |-align="center"| style="background-color:white;" | [[Файл:Finite state machine 2.png|200 px]]|Автомат, принимающий непустые строки из чередующихся символов <tex>a</tex> и <tex>b</tex>, с «дьявольской вершиной». |-align="center"|}
===Представление диаграммой Таблица переходов===
{| border="1" cellpadding="5" cellspacing="0" style="text-align:center" width=60%|style="background:#ffffff" colspan="2"|Автомат, принимающий непустые строки из чередующихся символов <tex>a</tex> и <tex>bТаблица переходов </tex>,<br/>T (|style="background:#ffffff"Q| Автомат для поиска образца в тексте для строки <tex>abbab</tex>.\times |-|style="background:#ffffff"| без «дьявольской вершины» |style="background:#ffffff"| с «дьявольской вершиной» |style="background:#ffffff" rowspan="2"|[[Файл:Automata_Search.png|340px]]|-|style="background:#ffffff"|[[Файл:Finite state machine 1.png|150 px]]|style="background:#ffffff"|[[Файл:Finite state machine 2.png|200 px]]\Sigma|-|style="background:#ffffff" colspan="3"|<tex>\bigcirc)</tex> — нетерминальное состояние,дающая табличное представление функции <tex>\circledcircdelta</tex> — терминальное состояние.Стрелка <tex>\downarrow</tex> указывает на начальное состояние.|}
===Представление таблицей переходов===
<tex>M = (Q, \Sigma , \delta, q_0, F)</tex>, где
*<tex>Q = {S_1, S_2}</tex>,
*<tex>\Sigma</tex> = \{0, 1\}</tex>,
*<tex>q_0 = S_1</tex>,
*<tex>F = {S_1}</tex>,
*<tex>\delta</tex> {{---}} функция переходов, представленная таблицей:
:{| borderclass="1wikitable" cellpaddingborder="1" cellspacingstyle="0border-collapse:collapse"| || ! !! <center><tex>0</tex></center> || !! <center><tex>1</tex></center>
|-
|!<tex>S_1</tex> || <tex>S_2</tex> || <tex>S_1</tex>
|-
|!<tex>S_2</tex> || <tex>S_1</tex> || <tex>S_2</tex>
|}
{{Определение
|definition=
Автоматы называются '''изоморфными''' (англ. ''isomorphic''), если существует [[Отображения | биекция]] между их вершинами такая, что сохраняются все переходы, терминальные состояния соответствуют терминальным, а начальные {{---}} начальным.
}}
{{Задача
=== Псевдокод ===
* <tex> \mathtt {Transitions} </tex> {{---}} множество пар <tex>\langle a</tex>, <tex>T \rangle</tex> , где <tex> a \in \Sigma</tex>, <tex>T \in Q</tex>
* <tex> \mathtt {Assotiations} </tex> {{---}} массив, где каждому состоянию первого автомата соответствует найденное состояние второго автомата.
'''boolean''' dfs(u: '''Vertex''', v: '''Vertex'''):
visited[u] = ''true'' <font color="green">// заметим, что достаточно только одного массива <tex>\mathtt{visited}</tex> на два автомата</font>
'''if''' (v.terminal '''!=''' u.terminal)
'''return''' ''false''
associations[u] = v
'''boolean''' result = ''true''
'''for''' (<tex>\langle c, q \rangle</tex> : u.transitions)
'''if''' одна из вершин t1, t2 ''дьявольская'', а другая {{---}} нет
'''return''' ''false''
'''if''' (visited[t1]) result = result '''and'not''t2 ' visited''==''' associations[t1]) '''else'''
result = result '''and''' dfs(t1, t2)
== См. также ==
* [[Недетерминированные конечные автоматы]]
* [[Автомат для поиска образца в текстеКнута-Морриса-Пратта]]* [[Суффиксный автомат]]
* [[Алгоритм Ахо-Корасик]]
* [[Теорема Клини (совпадение классов автоматных и регулярных языков)]]
Анонимный участник

Навигация