- •Пример:
- •С помощью следующей конструкции
- •Затем с помощью конструкции
- •Наконец, с помощью конструкции
- •Пример:
- •Из начального состояния s1 можно достичь s3 и заключительного состояния s4 по путям,
- •По М и G/ построим НКА М/ :
- •построении ДКА М// по автомату М/ образует семь состояний. Но только четырёх из
- •Распознавание образов, задаваемых регулярными выражениями.
- •Как только в Sj попадает заключительное состояние, можно сказать, что у цепочки a1,a2,…,aj
- •АЛГОРИТМ 1 (моделирование недетерминированного конечного автомата)
- •Метод: Чтобы получить Si по Si-1 сначала найдём множество состояний
- •1.For i←0 until n do begin
- •7. While список ОЧЕРЕДЬ не пуст do begin
Пример:
Построим НКА для регулярного выражения 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.