Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
19.04.2015
Размер:
82.94 Кб
Скачать

Как только в Sj попадает заключительное состояние, можно сказать, что у цепочки a1,a2,…,aj есть такой

суффикс aiai+1…aj, что aiai+1…aj принадлежит языку, представленному выражением , при некотором 1 i j.

Способ моделирования НКА М на цепочке х :

1.исключить -переходы в М и тем самым построить НКА М/ без .

2.моделировать НКА М/ на входной цепочке x=a1a2… an, вычислив для каждого i, 1 i n, множество состояний Si, в которые мог бы попасть М/ после прочтения a1,a2,…,aj. На самом деле каждое множество Si – это то состояние, в которое пришёл бы ДКА М// после прочтения a1,a2,…,aj.

АЛГОРИТМ 1 (моделирование недетерминированного конечного автомата)

Вход: НКА M=(S, I, , s0, F) и цепочка x=a1a2…an из I*.

Выход: Последовательность S0, S1, …, Sn, где

Метод: Чтобы получить Si по Si-1 сначала найдём множество состояний

Ti {t (s,ai) содержит t ддлнекоторого s Si-1}

Затем вычислим «замыкание» множества Ti, добавив к Ti все такие состояния u, что (t, ) содержит u для некоторого t, ранее оказавшегося в Ti. Это замыкание (оно и будет множеством Si) строится с помощью очереди состояний t Ti, для которых множество (t, ) ещё не рассматривалось.

1.For i←0 until n do begin

2.If i=0 then Si←{s0}

3. Else Si(s,ai)

;

s Si 1

 

{Si ещё не достигло своего конечного значения. Сейчас оно соответствует множеству Ti}

4.Пометить каждое состояние t Si как «рассмотренное»;

5.Пометить каждое состояние t S-Si как «нерассмотренное»;

6.ОЧЕРЕДЬ ← Si;

7. While список ОЧЕРЕДЬ не пуст do begin

8. Найти и удалить первый элемент t, входящий в ОЧЕРЕДЬ;

9.For u (t, ) do

10.if u – «нерассмотренное» состояние then

begin

11.Пометить u как «рассмотренное»;

12. Добавить u в ОЧЕРЕДЬ и в Si; end;

end; END.