Локальные автоматы — различия между версиями
Строка 44: | Строка 44: | ||
Пусть <tex>G</tex> {{---}} граф Майхилла. | Пусть <tex>G</tex> {{---}} граф Майхилла. | ||
− | Построим автомат <tex> | + | Построим автомат <tex>A</tex> следующим образом: |
* Добавим вершину ромбик в <tex>G</tex> с ребрами от ромбика к каждой стартовой вершине <tex>G</tex>, отметим вершину ромбик как стартовое состояние. | * Добавим вершину ромбик в <tex>G</tex> с ребрами от ромбика к каждой стартовой вершине <tex>G</tex>, отметим вершину ромбик как стартовое состояние. | ||
* Отметим конечные вершины как терминальные состояния. | * Отметим конечные вершины как терминальные состояния. | ||
* Отметим каждое ребро результирующего ориентированного графа символом, стоящим в вершине, на которою оно указывает. | * Отметим каждое ребро результирующего ориентированного графа символом, стоящим в вершине, на которою оно указывает. | ||
По построению стартовое состояние не является терминальным. | По построению стартовое состояние не является терминальным. | ||
+ | |||
Покажем, что полученный автомат конечен. | Покажем, что полученный автомат конечен. | ||
Ребра, выходящие из стартового состояния обозначены различными символами, потому что они указывают на вершины, которые, по свойству 3, были отмечены различными символами в исходном автомате. | Ребра, выходящие из стартового состояния обозначены различными символами, потому что они указывают на вершины, которые, по свойству 3, были отмечены различными символами в исходном автомате. | ||
Если мы рассмотрим любое другое состояние <tex>s</tex>, то два перехода из <tex>s</tex> могут иметь одинаковые метки только в том случае, если в <tex>G</tex> оба ориентированных ребра идут в одну и ту же вершину. Но этого не может быть по свойтсву 1. | Если мы рассмотрим любое другое состояние <tex>s</tex>, то два перехода из <tex>s</tex> могут иметь одинаковые метки только в том случае, если в <tex>G</tex> оба ориентированных ребра идут в одну и ту же вершину. Но этого не может быть по свойтсву 1. | ||
− | То есть <tex> | + | То есть <tex>A</tex> {{---}} ДКА, возможно, незаконченный. По построению он является стандартным локальным автоматом. |
Теперь просто проверить, что <tex>L(A) = L(G)</tex>. | Теперь просто проверить, что <tex>L(A) = L(G)</tex>. | ||
Строка 59: | Строка 60: | ||
Пусть <tex>A = (S, \Sigma, i, \delta, T)</tex> {{---}} стандартный локальный автомат, стартовое состояние которого не является терминальным. | Пусть <tex>A = (S, \Sigma, i, \delta, T)</tex> {{---}} стандартный локальный автомат, стартовое состояние которого не является терминальным. | ||
Построим по нему граф Майхилла следующим образом: | Построим по нему граф Майхилла следующим образом: | ||
− | * Отметим все состояния <tex> | + | * Отметим все состояния <tex>A</tex>, кроме стартового, <tex>input</tex> символами, стоящими на ребрах, входящих в эти состояния. |
* Сотрем все метки на ребрах <tex>А</tex>. | * Сотрем все метки на ребрах <tex>А</tex>. | ||
* Отметим все состояния <tex>s</tex> как начальные вершины, если существует переход из <tex>i</tex> в <tex>s</tex> | * Отметим все состояния <tex>s</tex> как начальные вершины, если существует переход из <tex>i</tex> в <tex>s</tex> |
Версия 16:38, 2 января 2015
Известно, как по регулярному выражению построить автомат с
-переходами, но потом его нужно перобразовать к детерминированному конечному автомату (ДКА). Изучим, как по регулярному выражению сразу построить ДКА.Графы Майхилла
Определение: |
Граф Майхилла 1. Для каждой упорядоченной пары вершин и существует только одно ребро из в .2. Некоторые вершины обозначены начальными, а некоторые - конечными. Ребро может одновременно быть начальным и конечным. 3. Вершины обозначены различными символами из конечного алфавита , то есть мы можем обращаться к вершине по ее символу. | (над алфавитом ) (англ. Myhill graph) — ориентированный граф, удовлетворяющий свойствам:
Пусть — граф Майхилла над алфавитом .
Символ
из назовем разрешенным, если им помечена вершина, являющая одновременно начальной и конечной.Не пустая строка
из длиной не менее двух символов, называется разрешенной, если символом отмечена стартовая вершина, а символом — конечная, и для всех в существует ребро .Язык
, распознаваемый графом Майхилла, состоит из всех разрешенных строк из .Покажем, графы Майхилла могут быть представлены в виде автоматов. Пусть
— ДКА, не обязательно законченный.
Определение: |
Автомат | называется локальным (англ. local automation), если для любого из множество содержит не более одного элемента.
Определение: |
Автомат | называется стандартным локальным автоматом (англ. standard loal automation), если в нем нет перехода в начальное состояние.
Таким образом, автомат является локальным, если для каждого из нет переходов, отмеченных , или если все они в одно состояние.
Покажем, что граф Майхилла может быть преобразован в стандартный локальный автомат таким образом, что распознаваемый им язык не изменится.
Теорема: |
Язык распознается графом Майхилла тогда и только тогда, когда он распознается стандартным локальным автоматом, стартовое состояние которого не является терминальным. |
Доказательство: |
Пусть — граф Майхилла. Построим автомат следующим образом:
По построению стартовое состояние не является терминальным. Покажем, что полученный автомат конечен. Ребра, выходящие из стартового состояния обозначены различными символами, потому что они указывают на вершины, которые, по свойству 3, были отмечены различными символами в исходном автомате. Если мы рассмотрим любое другое состояние , то два перехода из могут иметь одинаковые метки только в том случае, если в оба ориентированных ребра идут в одну и ту же вершину. Но этого не может быть по свойтсву 1. То есть — ДКА, возможно, незаконченный. По построению он является стандартным локальным автоматом. Теперь просто проверить, что .
Пусть — стандартный локальный автомат, стартовое состояние которого не является терминальным. Построим по нему граф Майхилла следующим образом:
|