Локальные автоматы — различия между версиями
| Строка 13: | Строка 13: | ||
Символ <tex>c \in \Sigma</tex> назовем разрешенным, если им помечена вершина, являющая одновременно начальной и конечной. | Символ <tex>c \in \Sigma</tex> назовем разрешенным, если им помечена вершина, являющая одновременно начальной и конечной. | ||
| − | Не пустая строка <tex>c_1c_2 | + | Не пустая строка <tex>c_1c_2 \ldots c_n</tex> из <tex>\Sigma^*</tex> длиной не менее двух символов, называется разрешенной, если символом <tex>c_1</tex> отмечена стартовая вершина, а символом <tex>c_n</tex> {{---}} конечная, и для всех <tex>1 \leqslant i \leqslant n - 1</tex> в <tex>G</tex> существует ребро <tex>(c_i, c_{i+1})</tex>. |
Язык <tex>L(G)</tex>, распознаваемый графом Майхилла, состоит из всех разрешенных строк из <tex>\Sigma^+</tex>. | Язык <tex>L(G)</tex>, распознаваемый графом Майхилла, состоит из всех разрешенных строк из <tex>\Sigma^+</tex>. | ||
Покажем, что графы Майхилла могут быть представлены в виде автоматов. | Покажем, что графы Майхилла могут быть представлены в виде автоматов. | ||
| − | Пусть <tex>A = (S, \Sigma, i, \delta, T)</tex> {{---}} [[Детерминированные_конечные_автоматы | ДКА]]. | + | Пусть <tex>\mathcal{A} = (S, \Sigma, i, \delta, T)</tex> {{---}} [[Детерминированные_конечные_автоматы | ДКА]]. |
{{Определение | {{Определение | ||
| Строка 80: | Строка 80: | ||
{{Определение | {{Определение | ||
|definition=Язык <tex>L \subseteq A^*</tex> называется '''локальным языком''' (англ. ''local language''), если <tex>L \setminus \varepsilon</tex> может быть описан следующим образом: <br> | |definition=Язык <tex>L \subseteq A^*</tex> называется '''локальным языком''' (англ. ''local language''), если <tex>L \setminus \varepsilon</tex> может быть описан следующим образом: <br> | ||
| − | <tex>\exists P, S \subseteq A, N \subseteq A^2: L \setminus \varepsilon = (P A^* \cap A^* S) \setminus A^* N A^*</tex>. | + | <center><tex>\exists P, S \subseteq A, N \subseteq A^2: L \setminus \varepsilon = (P A^* \cap A^* S) \setminus A^* N A^*</tex>.</center> |
}} | }} | ||
| Строка 93: | Строка 93: | ||
{{Утверждение | {{Утверждение | ||
| − | |statement= | + | |statement=Определенный таким образом автомат <tex>\mathcal{A}</tex> {{---}} стандартный локальный автомат, распознающий <tex>L</tex>. |
|proof= | |proof= | ||
Автомат является локальным поскольку для каждого состояния <tex>s</tex> и любого символа <tex>a</tex> <tex>\delta(s, a)</tex> либо неопределена либо равна <tex>a</tex>. По построению автомат является стандартным. Покажем, что <tex>L(\mathcal{A}) = L</tex>.<br> | Автомат является локальным поскольку для каждого состояния <tex>s</tex> и любого символа <tex>a</tex> <tex>\delta(s, a)</tex> либо неопределена либо равна <tex>a</tex>. По построению автомат является стандартным. Покажем, что <tex>L(\mathcal{A}) = L</tex>.<br> | ||
Версия 19:54, 14 января 2017
Содержание
Описание
| Определение: |
Граф Майхилла (над алфавитом ) (англ. Myhill graph) — ориентированный граф, удовлетворяющий свойствам:
|
Пусть — граф Майхилла над алфавитом .
Символ назовем разрешенным, если им помечена вершина, являющая одновременно начальной и конечной.
Не пустая строка из длиной не менее двух символов, называется разрешенной, если символом отмечена стартовая вершина, а символом — конечная, и для всех в существует ребро .
Язык , распознаваемый графом Майхилла, состоит из всех разрешенных строк из .
Покажем, что графы Майхилла могут быть представлены в виде автоматов. Пусть — ДКА.
| Определение: |
| Автомат называется локальным (англ. local automaton, Glushkov automaton), если для любого из множество содержит не более одного элемента. |
| Определение: |
| Локальный автомат называется стандартным локальным автоматом (англ. standard local automation), если в нем нет перехода в начальное состояние. |
Таким образом, автомат является локальным, если для каждого из нет переходов, отмеченных , или если все они ведут в одно состояние.
Покажем, что граф Майхилла может быть преобразован в стандартный локальный автомат таким образом, что распознаваемый им язык не изменится.
| Теорема: |
Язык распознается графом Майхилла тогда и только тогда, когда он распознается стандартным локальным автоматом, стартовое состояние которого не является терминальным. |
| Доказательство: |
|
|
Пример
Граф Майхилла, изображенный на рисунке 1 может быть использован для распознавания строк над алфавитом . По определению, язык, распознаваемый данным графом, состоит из непустых строк, начинающихся и заканчивающихся на .
Недетерминированный автомат на рисунке 2 является локальным автоматом и распознает тот же самый язык.
Локальный язык
Рассмотрим язык, распознаваемый стандартным локальным автоматом.
| Определение: |
| Язык называется локальным языком (англ. local language), если может быть описан следующим образом: |
Другими словами, непустое слово принадлежит локальному языку, если оно начинается с символа из , оканчивается на символ из и не содержит пары символов из множества .
Пусть — локальный язык. Определим автомат следующим образом:
- набор состояний ,
- начальное состояние ,
- терминальные состояния ,
- если и если .
Если содержит пустую строку, то множество терминальных состояний — .
| Утверждение: |
Определенный таким образом автомат — стандартный локальный автомат, распознающий . |
|
Автомат является локальным поскольку для каждого состояния и любого символа либо неопределена либо равна . По построению автомат является стандартным. Покажем, что .
Здесь — терминальное состояние, . Переход из в определен, поэтому . Для каждого факт, что переход существует, означает что . Следовательно, . Пусть . Тогда , и для каждого . Следовательно в автомате существует путь из начального состояния в терминальное:
|
| Утверждение: |
Язык, распознаваемый локальным автоматом, является локальным. |
Алгоритм Глушкова
Описание
Дано регулярное выражение . Алгоритм Глушкова строит недетерминированный автомат, который распознает язык , распознаваемый . Построение происходит в несколько шагов:
- Линеаризация регулярного выражения. Каждый символ из алфавита, содержащийся в регулярном выражении, переименовывается таким образом, что каждый символ содержится в новом регулярном выражении не более одного раза. Пусть — исходный алфавит, — новый алфавит.
- Вычисление множеств , где — линеаризованное регулярное выражение. — множество символов, с которых начинается слово из . — множество символов, на которые оканчивается слово из и — множество пар символов, которые встречаются в слове из . Более формально:
,
,
. - Вычисление множества такого что .
- Вычисление локального языка с заданными множествами и построение по нему автомата.
- Делинеаризация, переименование каждого символа из в соответствующий ему символ из .
Пример работы
Рассмотрим регулярное выражение .
1. Линеаризуем его путем добавления индекса к каждому символу:
- .
2. Составим множества , , и :
- ,
- ,
- .
Так как пустое слово принадлежит языку, то .
3. Автомат локального языка содержит начальное состояние, обозначенное как , и состояния для каждого из пяти символов алфавита .
В построенном автомате существует переход из (соответствующего пустой строке) в два состояния из , переход из в если , три состояния терминальные (как и состояние ).
4. Получим автомат для , удалив индексы, добавленные на первом этапе.
См. также
Источники информации
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений
- Mark V. Lawson — Finite Automata
- Wikipedia — Glushkov's construction algorithm
