Локальные автоматы — различия между версиями
Строка 95: | Строка 95: | ||
|statement=Автомат <tex>\mathcal{A}</tex> – стандартный локальный автомат, распознающий <tex>L</tex>. | |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>s</tex> и любого символа <tex>a</tex> <tex>\delta(s, a)</tex> либо неопределена либо равна <tex>a</tex>. По построению автомат является стандартным. Покажем, что <tex>L(\mathcal{A}) = L</tex>.<br> |
− | Покажем, что <tex>L(\mathcal{A}) = L</tex>. Пусть <tex>x = a_1 \ldots a_n \in L(\mathcal{A})</tex>. Тогда в автомате существует путь: <br> | + | Пусть <tex>x = a_1 \ldots a_n \in L(\mathcal{A})</tex>. Тогда в автомате существует путь: <br> |
:<tex>\varepsilon \xrightarrow{a_1} a_1 \xrightarrow{a_2} a_2 \ldots a_{n-1} \xrightarrow{a_n} a_n</tex>. | :<tex>\varepsilon \xrightarrow{a_1} a_1 \xrightarrow{a_2} a_2 \ldots a_{n-1} \xrightarrow{a_n} a_n</tex>. | ||
− | Здесь <tex>a_n</tex> {{---}} терминальное состояние, <tex>a_n \in S</tex>. Переход из <tex>\varepsilon</tex> в <tex>a_1</tex> определен, поэтому <tex>a_1 \in P</tex>. Для каждого <tex>j | + | Здесь <tex>a_n</tex> {{---}} терминальное состояние, <tex>a_n \in S</tex>. Переход из <tex>\varepsilon</tex> в <tex>a_1</tex> определен, поэтому <tex>a_1 \in P</tex>. Для каждого <tex>j: 1 \leqslant j \leqslant n - 1</tex> факт, что переход <tex>a_j \rightarrow a_{j+1}</tex> существует, означает что <tex>a_j a_{j+1} \not \in N</tex>. Следовательно, <tex>x \in L</tex>. |
+ | |||
+ | Пусть <tex>x = a_1 \ldots a_n \in L</tex>. Тогда <tex>a_1 \in P</tex>, <tex>a_n \in S</tex> и для каждого <tex>j</tex> <tex>a_j a_{j+1} \not \in N</tex>. Следовательно в автомате существует путь из начального состояния в терминальное: <br> | ||
+ | :<tex>\varepsilon \xrightarrow{a_1} a_1 \xrightarrow{a_2} a_2 \ldots a_{n-1} \xrightarrow{a_n} a_n</tex>. | ||
+ | Следовательно, <tex>x \in L(\mathcal{A})</tex>. | ||
}} | }} |
Версия 15:04, 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