Теория автоматов. Лекция 1 Основные понятия теории конечных автоматов. Элементы логикоматематического языка. 59
![]()
|
Примеры доказательств нерегулярности языкаРассмотрим теперь некоторые примеры доказательств нерегулярности языка с использованием леммы о разрастании. Стандартный ход рассуждений при решении таких задач состоит в предположении регулярности данного языка и последующем анализе возможности представить любую достаточно длинную цепочку языка в виде, указанном в условии леммы о разрастании. Анализируя все возможные случаи размещения "накачиваемой" подцепочки , мы должны получить противоречие. Пример 1. Докажем нерегулярность языка ![]() Выбирая настолько большим, чтобы оно превосходило (константу леммы), получаем следующие возможные случаи размещения средней подцепочки в цепочке . 1. , т.е. "накачиваемая" подцепочка целиком располагается в "зоне символов " . Ясно, что накачка в этом случае выведет за пределы языка, так как при повторении цепочки число символов будет неограниченно расти, а число символов будет оставаться прежним. 2. , т.е. "накачиваемая" подцепочка целиком располагается в "зоне символов ". Накачка невозможна по той же причине, что и в предыдущем случае. 3. , где ![]() В этом случае при накачке возникнет вхождение подцепочки в слово, которое, следовательно, уже не принадлежит языку . Таким образом, рассматриваемый язык нерегулярен. 5. Докажем, что язык , где ![]() Полагая, что язык регулярен, возьмем слово для достаточно большого . Применяя такую же схему рассуждений, как и выше, легко убеждаемся в том, что цепочка не может состоять из одних символов или из одних символов . Пусть , где . Тогда, повторив цепочку два раза, получим слово ![]() ![]() Заметим, что в силу ограничения по длине на цепочку никакие способы ее размещения в указанной цепочке языка , кроме описанных выше, не возможны. Полезно иметь в виду следствие из леммы о разрастании. Следствие. Если— бесконечный регулярный язык, то в нем найдется последовательность слов, длины которых образуют возрастающую арифметическую прогрессию. В качестве такой последовательности можно взять последовательность слов из формулировки леммы о разрастании. Их длины образуют арифметическую прогрессию со знаменателем (длина "накачиваемой" средней подцепочки). Отсюда легко получается вывод о том, что не являются регулярными следующие языки: 1) ![]() 2) { — простое число}. Можно доказать, что любой конечный язык регулярен и, более того, допускается конечным автоматом без контуров. Значит, последовательность цепочек, указанная в формулировке леммы, в таком случае не существует, но утверждение леммы остается истинным. Нужно всегда помнить простое логическое правило: утверждение вида "если А, то Б" равносильно утверждению вида "не А или Б". В заключение обсудим еще одну схему доказательства нерегулярности языка с использованием как леммы о разрастании, так и алгебраических свойств данного класса регулярных языков, которые были установлены ранее. Пример 2. Докажем нерегулярность языка правильных скобочных структур, порождаемых КС-грамматикой ![]() Для доказательства поступим так: рассмотрим пересечение данного языка с регулярным языком , который содержит все цепочки вида для любых натуральных . Поскольку каждая правильная скобочная структура содержит одинаковое число символов w(" и ")", то указанное пересечение будет языком ![]() Лекция №3 Недетерминированные автоматы. Эквивалентные состояния. План лекции:
Недетерминированные конечные автоматы. Недетерминированные конечные автоматы, рассматриваемые в этом параграфе, являются обобщениями детерминированных: они при чтении очередного символа на входе могут выбрать в качестве следующего одно из нескольких состояний, а кроме того, могут изменить состояние без чтения входа. Основной результат, который мы установим, утверждает, что это обобщение не существенно: недетерминированные и детерминированные конечные автоматы распознают одни и те же языки. Определение 1. Недетерминированный конечный автомат (НКА) - распознаватель - это система вида ![]() включающая следующие компоненты:
Для ![]() ![]() ![]() Как и для детерминированных автоматов, функцию переходов можно представить с помощью набора команд-программы: для каждой пары ![]() ![]() ![]() ![]() ![]() ![]() ![]() При табличном задании функции ![]() ![]() ![]() ![]() Для недетерминированного автомата ![]() ![]() ![]() Скажем, что заданный последовательностью ребер путь p=e1e2 ... eT в диаграмме DM несет слово w=w1w2 ... wt (t <= T), если после удаления из него "пустых" ребер (т.е. ребер с метками ![]() ![]() ![]() ![]() ![]() Слово w переводит q в q' в диаграмме DM, если в ней имеется путь из q в q' который несет w . На недетерминированные автоматы естественным образом переносится определение конфигураций и отношения перехода между ними. Определение 2. Назовем конфигурацией НКА ![]() ![]() ![]() ![]() ![]() или ![]() Как и для ДКА, через ![]() ![]() Внешне определение распознавания слов НКА совпадает с определением для ДКА. Определение 3. НКА M распознает (допускает, принимает) слово w, если для некоторого ![]() ![]() Язык LM, распознаваемый НКА M, состоит из всех слов, распознаваемых автоматом: ![]() Отличие состоит в том, что у НКА может быть несколько различных способов работы (путей вычисления) на одном и том же входном слове w. Считаем, что НКА распознает (допускает, принимает) это слово, если хотя бы один из этих способов приводит в заключительное состояние из F. Из определения диаграммы DM непосредственно следует, что НКА M распознает слово w, тогда и только тогда, когда существует такое заключительное состояние ![]() ![]() Пример 1. Рассмотрим НКА ![]()
Его диаграмма ![]() ![]() Рис 1. Диаграмма автомата N1 Рассмотрим работу этого автомата на слове ababa: ![]() Так как 3 - заключительное состояние, то ![]() Очевидно, что детерминированные конечные автоматы являются частными случаями недетерминированных. Эквивалентные автоматы. Автоматы являются устройствами для переработки дискретной информации. При этом характером перерабатываемой информации определяется алфавит Σ, алфавит внутренних состояний Q определяется строением автомата, и вообще говоря, он может различаться у разных автоматов с одинаковыми внешними алфавитами. Следовательно, преобразование информации может быть осуществлено автоматами с разным числом состояний, и, следовательно, посредством разного числа команд. Состояние q автомата М и состояние q1 автомата М1 считаются эквивалентными, если оба автомата, получив одну и ту же (любую) входную последовательность символов, перерабатывают ее в одинаковую выходную последовательность. Автоматы М и М1 называются эквивалентными, если для каждого состояния автомата М существует эквивалентное ему состояние автомата М1 и наоборот. Другими словами, эквивалентные автоматы реализуют одинаковые преобразования, но могут иметь различное число внутренних состояний. Понятие эквивалентности состояний применимо и к одному автомату(формально можно считать то М и М1 совпадают). Для одного автомата эквивалентными будут различные состояния, через которые одна и та же последовательность символов преобразуется в одинаковую выходную. В связи с синтезом схем практический интерес представляет задача построения автомата, выполняющего заданный набор преобразований при минимальном числе внутренних состояний. Теорема 1. Автомат, эквивалентный заданному автомату и имеющий наименьшее число состояний из возможных, называется минимальным. Задача построения минимального автомата называется задачей минимизации автомата. Ее решение осуществляется в два этапа: сначала устанавливаются все эквивалентные состояния исходного автомата, а затем по ним строится минимальный автомат. В свою очередь, для определения неэквивалентных состояний необходимо выяснить классы эквивалентных состояний. Пусть имеется автомат с множеством внутренних состояний Q, среди которых могут быть эквивалентные автоматы. Отношение эквивалентности состояний обладает обычными свойствами эквивалентности: рефлективностью, симметричностью и транзитивностью. Поэтому множество Q можно разбить на классы эквивалентности. Например: пусть имеется автомат, заданный таблицей (автомат преобразователь, а не распознаватель).
На основе этой таблицы составим другую таблицу, клетки которой будут соответствовать различным парам q(i) q(j) (i!=j), заполнив ее согласно следующим правилам: - если два состояния q(i) q(j) неэквивалентны (т. е. Для какого то значения входного символа х значения на выходе различаются), то соответствующая клетка зачеркивается; - если в состояниях q(i) и q(j) для каждого х значения на выходе одинаковы, то в клетках записываются все пары состояний q(v) q(w) (v!=w), отличные от q(i) q(j), в которые автомат может перейти из q(i) и q(j) при подаче одного и того же входного сигнала.
X в таблице –. клетка зачеркнута Эквивалентны: q1 q3, q1 q4, q2 q5, q2 q6, q3 q4, q5 q6; Попарно эквивалентны: {q1,q3}, {q2,q5,q6}; Все остальные эквивалентны лишь сами себе {q4}. После выделения классов эквивалентности состояний для автомата М можно построить эквивалентный ему автомат М1. В качестве алфавитов для М1 возьмем соответствующие алфавиты из М, а каждому классу эквивалентных состояний поставим в соответствие одно состояние из М1, т. е. (q1)1↔{q1,q2}; (q2)1↔{q2,q5,q6}; и т.д. Окончательно таблицу можно представить следующим образом:
Можно доказать следующую теорему: Для всякого конечного автомата существует единственный эквивалентный ему минимальный автомат. Существует алгоритм, который любому заданному конечному автомату строит соответствующий минимальный. С точки зрения распознавания формальных языков. |