Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2 / КБ-2-л3-2009.ppt
Скачиваний:
23
Добавлен:
19.04.2015
Размер:
82.94 Кб
Скачать

Пример:

Построим НКА для регулярного выражения ab*+c, длина которого 5.

НКА для a,b,c имеет вид:

a

S0 Sf

С помощью следующей конструкции

 

 

 

 

 

 

S

 

S

S

M/

S

/

f

 

0

0

 

f

 

 

 

 

/

 

 

 

 

 

 

 

 

Построим автомат для b*

 

 

 

b

 

Затем с помощью конструкции

S0=S0/

M/

S /

S //

M//

 

 

f

0

Sf=Sf//

 

 

 

 

 

построим автомат для ab*

 

 

 

 

 

a

 

 

b

 

 

 

 

 

 

Наконец, с помощью конструкции

 

/ M1

/

 

S0

S1

S0 S1

 

S //

M2

S /

 

0

 

1

построим НКА для ab*+c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

a

s

 

s

 

s5

b

s6

s

 

 

 

2

 

3

 

4

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

s1

 

 

 

 

 

 

 

 

 

 

 

s10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

s

 

s8

 

 

9

 

Этот автомат имеет 10 состояний.

Пример:

b

Рассмотрим НКА

 

s2 a

a

 

b

s4

s1 b

 

 

 

s3

Из начального состояния s1 можно достичь s3 и заключительного состояния s4 по путям, помеченным символом .

s1

s2

 

 

 

Для вычисления

 

 

рефлексивного и

 

 

транзитивного

s3

s4

замыкания G/

ориентированного

графа G надо добавить ребро (s1,s4).

По М и G/ построим НКА М/ :

b

s

a,b

s

 

b

s4

1

2

 

 

 

 

 

a

построении ДКА М// по автомату М/ образует семь состояний. Но только четырёх из них можно достич начального состояния, так что остальные четыре можн росить. ДКА М// имеет вид:

b

{s2,s4}

 

b

 

 

 

a,

a

 

 

 

 

{s1}

 

 

 

b

 

{s }

b

 

 

a

2

 

 

 

 

 

 

 

 

 

a

 

Распознавание образов, задаваемых регулярными выражениями.

Дана цепочка-текст x=a1a2…an и

регулярное выражение , называемое образом. Необходимо найти такой

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

Задачу можно переформулировать, заменив данное регулярное выражение выражением =I* , где I

– алфавит цепочки-текста. Можно найти первое вхождение цепочки из L( ) в x=a1a2…an , обнаружив кратчайший префикс цепочки х, принадлежащий языку выражения .

Шаги решения:

1.Построить НКА М для распознавания множества, представленного выражением ;

2.Применить алгоритм для определения

последовательности множеств состояний Si, в которые может перейти НКА М после прочтения цепочки a1a2…ai при i=1,2,…,n.