Обсуждение участницы:Анна
Определение: |
Определим | как множество первых половин цепочек языка , то есть множество существует , для которой , причем .
Например, если
, то . Заметим, что цепочки нечетной длины не влияют на .Определение: |
Определим | как множество цепочку можно представить в виде , где .
Например, если
, то .Утверждение: |
Пусть — регулярный язык. Тогда язык также регулярен. |
Так как |
Утверждение: |
Пусть — регулярный язык. Тогда язык также регулярен. |
Так как — регулярный язык, то существует допускающий его ДКА . Построим из недетерминированный автомат с переходами следующим образом: рассмотрим состояние , из которого есть переходы в другие состояния (то есть начиная с можно построить непустое слово, заканчивающееся в терминальной вершине). Тогда если какое-то слово проходит через это состояние, оно может быть зациклено таким образом, что его суффикс, начинающийся с , станет префиксом нового слова, а префикс, заканчивающийся в — суффиксом. Разделим автомат на две части и такие, что будет содержать все вершины, из которых достижима , а — все вершины, которые достижимы из (см. рис. 1). Заметим, что каждая вершина может содержаться в обеих частях одновременно, такое может случиться, если автомат содержит циклы. Теперь перестроим автомат так, что он будет принимать слова "зацикленные" вокруг , то есть начинающиеся с и после достижения терминальной вершины продолжающиеся с (см. рис. 2). Для этого стартовой вершиной сделаем и построим от нее часть . Теперь добавим состояние и соединим с ним все терминальные состояния из с помощью переходов. Далее построим от часть . Добавим вершину , эквивалентную , и сделаем ее терминальной. Данный автомат принимает слова, зацикленные вокруг выбранной вершины . Мы хотим, чтобы автомат принимал слова, зацикленные вокруг любой такой . Для этого создадим новую стартовую вершину и свяжем ее переходами со всеми перестроенными автоматами (зацикленными вокруг всех подходящих ), в том числе и с изначальным автоматом. Построенный автомат допускает язык , следовательно, данный язык является регулярным. |
Для лучшего понимания алгоритма перестроения автомата рассмотрим пример.
На рис. 3 представлен автомат, допускающий язык . На рис. 4 показано, как этот автомат был перестроен. Были добавлены части, зацикленные относительно вершин и . Появилась новая стартовая вершина , которая связана переходами с изначальным автоматом и его измененными версиями. Данный автомат распознает язык : первые три слова распознает первая часть, которая совпадает с изначальным автоматом; следующие три — вторая, перестроенная относительно вершины ; последнее слово распознает третья часть, зацикленная относительно вершины .