Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_по тяпу готовые.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
952.32 Кб
Скачать

2. Недетерминированный конечный автомат: формальное определение, построение множества достижимых состояний.

Если язык задан регулярными выражениями, то для него можно построить конечный автомат.

КА представляется диаграммой переходов. Узлы - состояния, дуги – переходы, финальное состояние - двойной кружок. Цепочка принимается автоматом, если существует путь из начального состояния в конечное, метки дуг которого, формируют эту цепочку. Автомат называется недетерминированным, если у него есть переходы из одного и того же состояния, помеченные одним и тем же символом, и в нем присутствуют  - переходы.

Формально КА определяется пятеркой <S, , , s0, F>,

S – конечное множество состояний;

 – конечное множество входных символов (алфавит);

d – отношение переходов, это подмножество S на Σ, к которому добавлена пустая строка; s ×( {})×s

s0начальное состояние; s0 S

F S – множество финальных состояний.

Для каждой пары (начальное состояние и входной символ) можно определить множество конечных состояний.

Считая  функцией, через  (s,а) будем обозначать множество состояний, в которые конечный автомат может перейти из состояния s по входному сигналу а. Пользуясь функцией , можно описать поведение конечного автомата.

Функция переходов -  определяет для заданного состояния s и входной последовательности w множество состояний, в которых может оказаться автомат, обработав входную строку w.

Определяется:

1) s (S,) если s (s, )

2) s (S,) если есть путь по  переходам, т.е. если есть состояние s’’ (S,) и одновременно s (s’’,)

3) когда строка не пустая: s (S,aw), если есть состояние s’’ (s, а) и s (s’’,w).

Язык распознается конечным автоматом, если он является множеством последовательностей:

Например, автомат A = <S, Σ, δ, so, F> распознаёт последовательности (язык):

L(A) { w | Δ(s0,w) ∩ F }, если автомат детерминированный: L(A) { w | Δ(s0,w) }.

4. Преобразование недетерминированного конечного автомата в детерминированный.

Работа конечного автомата заключается в нахождении пути от начального состояния в конечное, по которому можно прочитать лексему. Лексема принимается, если такой путь найден. Недетерминированный конечный автомат включает -переходы и переходы из одного состояния по одному и тому же входному символу в разные состояния. Поэтому при работе недетерминированного автомата возможны откаты в процессе поиска пути, вследствие этого недетерминированный автомат работает медленно. Для каждого недетерминированного конечного автомата можно построить детерминированный конечный автомат.

Рассмотрим алгоритм преобразования. Входом алгоритма является недетерминированный автомат N, выходом – детерминированный автомат D состоящий из множества состояний Dstates и множества переходов Dtrans.

Введем обозначения.

S - состояние из N;

T - множество состояний из N. При работе алгоритма такие множества становятся состояниями D.

Пусть реализованы следующие функции.

closure(S). Эта функция строит -замыкание состояния S, то есть множество состояний в которые можно перейти из S по -переходам, это множество включает также само состояние S;

closure(T). Функция строит -замыкание множества состояний T, то есть множество состояний, достижимых из множества состояний T через -переходы. Это множество включает и состояния, принадлежащие T.

Move(T, a). Функция строит множество состояний, в которые можно перейти из Т по входному символу а.

Алгоритм состоит в следующем.

Dstates:=close(S0); заносим в множество Dstates состояние Т =  - closure (s0) и оставляем это состояние не помеченным.

Пока в Dstates хотя бы одно множество Т непомеченно выполнить

begin

пометить множество Т

Для каждого входного символа а принадлежащего  - алфавиту автомата выполнить

Begin:

вычислим множество U:=closure(Move(T, a));

Если U  Dstates

то Dstates:=Dstates+U заносим U в Dstates непомеченным

Dtrans[T, a]:=U;

end;

end;

Этот алгоритм позволяет построить ДКА.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]