Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Построение детерминированного конечного автомата

 

Вначале изменим грамматику таким образом, чтобы в конце любой порождаемой ею цепочки был концевой символ , отличающийся от всех символов алфавита языка. Рассмотрим все правила грамматики вида: Aa. Заменим это правило двумя правилами: AaR, R, где R – новый нетерминальный символ.

Нетрудно видеть, что после всех таких замен в грамматике останутся только правила вида AaB и одно единственное правило R, при этом в конце всех порождаемых цепочек появится дополнительный концевой символ .

Алфавит входных символов КА будет совпадать с алфавитом символов языка грамматики, включая концевой символ , множество состояний КА будет включать все множество нетерминалов (символов грамматики), а также дополнительное заключительное состояние F. Тогда каждое правило грамматики вида AaB, преобразуется в правило перехода КА: (a, A) → B, а правило грамматики вида Rпреобразуется в правило перехода: (, R) → F.

Построенный КА будет детерминированным (ДКА), если А-грамматика однозначна. В свою очередь, А-грамматика однозначна, если для любой пары (A, a) имеется не более одного правила вида AaB. В противном случае А-грамматика будет неоднозначной, и будет построен НКА.

Множество правил перехода ДКА удобно записать в виде таблицы, каждая строка в которой соответствует одному состоянию ДКА, а каждый столбец – символу из алфавита входных символов.

Далее везде для сокращения записи группы правил с одним и тем же нетерминалом в левой части будем объединять: левую часть в них будем записывать один раз, а правые части разделять вертикальной чертой. Так, вместо:

A → γ1, A → γ2, …, A → γn

будем записывать:

A → γ1| γ2| … | γn .

 

Пример 1. А-грамматика задана правилами: S → 0A| 1A, A → 0A| 1A| 2. Здесь нетерминал S – начальный. Цепочки языка, порождаемые этой грамматикой, будут состоять из непустых последовательностей нулей и единиц, в конце которых имеется цифра 2.

После изменения грамматика будет содержать правила: S → 0A| 1A, A → 0A| 1A| 2R, R. Табл. 1 содержит правила перехода ДКА.

Табл. 1

 
S A A
A A A R
R F

 

Если на входе этого КА будет цепочка 01102, то его состояния в процессе работы будут изменяться следующим образом: S, A, A, A, A, R, F. Так как цепочка прочитана вся и ДКА находится в заключительном состоянии, то такая входная цепочка считается распознанной, т.е. она принадлежит языку. При входной цепочке 0110 состояния будут такими: S, A, A, A, A, и возникнет тупик: для состояния A и входного символа перехода не задано. Это значит, что такая цепочка не принадлежит языку. Входная цепочка 2 также приводит к тупику: на первом же шаге из состояния S при входном символе 2 переход не задан.

Конец примера.


<== предыдущая страница | следующая страница ==>
Конечный автомат | Недетерминированный конечный автомат

Дата добавления: 2015-07-26; просмотров: 181; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.005 сек.