KONSTRUKCJA WYRAŻENIA REGULARNEGO DLA AUTOMATU

Transkrypt

KONSTRUKCJA WYRAŻENIA REGULARNEGO DLA AUTOMATU
KONSTRUKCJA WYRAŻENIA REGULARNEGO DLA AUTOMATU
SKOŃCZONEGO.
GRAFY WYRAŻEŃ
Def. Grafem wyrażeń nazywamy etykietowany graf skierowany, w którym etykietami łuków
są wyrażenia regularne. Graf wyrażeń, podobnie jak diagram stanów zawiera wyróżniony
wierzchołek początkowy i zbiór wierzchołków akceptujących.
Diagram stanów automatu o alfabecie  możemy rozważać jako graf wyrażeń. Etykietami są:
 i wyrażenia odpowiadające elementom alfabetu  .
Łuki w grafie wyrażeń mogą być etykietowane symbolem  . Ścieżki w grafach wyrażeń
generują wyrażenia regularne.
Językiem grafu wyrażeń jest suma zbiorów reprezentowanych przez zaakceptowane
wyrażenia regularne.
Grafy
u
u
v
w
akceptują wyrażenia regularne u * i u * v w *
Ze względu na prostotę tych grafów, jest oczywiste jakie wyrażenia są akceptowane przez te
grafy.
Można przedstawić procedurę redukującą dowolny graf wyrażeń do jednej z dwu powyższych
prostych postaci.
Diagram stanów automatu skończonego może mieć dowolną liczbę stanów akceptujących.
Każdy z tych stanów wskazuje zbiór słów akceptowalnych, a mianowicie zbiór tych słów,
których przetwarzanie kończy się w tym stanie. Język automatu jest sumą tych zbiorów. Aby
określić język akceptowalny przez automat możemy więc rozważać każdy stan akceptujący
oddzielnie.
ALGORYTM
Konstrukcja wyrażenia regularnego dla automatu skończonego.
Wejście: diagram stanów automatu skończonego (DAS, NAS lub NAS ) M o wierzchołkach
(stanach): 1,2,, n . Etykietą łuku z wierzchołka i do j jest wij . Jeżeli nie ma łuku z i do j,
to wij   .
Wyjście: wyrażenie regularne  takie, że L   LM 
1. Tworzymy m kopii diagramu M (dla każdego z m stanów końcowych) i oznaczamy
M1 ,, M m . Każdy stan skończony diagramu M jest stanem skończonym diagramu M t dla
pewnego t  1,2,, m .
2. for każde M t do
2.1. repeat
2.1.1. wybierz wierzchołek i nie będący wierzchołkiem początkowym ani końcowym M t
2.1.2. usuń wierzchołek i z M t zgodnie z następującą procedurą:
for każde j, k  i (może być j  k ) do
( i ) if w ji   , wik   i wii  
then dodaj łuk z j do k o etykiecie
w ji wik
( ii) if w ji   , wik   i wii  
then dodaj łuk z j do k o etykiecie w ji wii * wik
(iii) if wierzchołki j i k są połączone łukami
w1 , w2 ,, ws then zastąp je pojedynczym łukiem
o etykiecie w1  w2    ws
( iv) usuń wierzchołek i oraz wszystkie łuki wchodzące
i wychodzące z niego
until jedynymi wierzchołkami w M t jest wierzchołek
początkowy i pojedynczy wierzchołek końcowy
2.2. wyznacz wyrażenie oznaczające język akceptowany przez M t
end for
3. Wyrażenie regularne oznaczające język akceptowany przez M otrzymujemy sumując
wyrażenia dla każdego M t .
Wyjaśnienie do kroku 2.1.
(i)
jk
graf
wji
wik
j
i
k
zastępujemy przez
wjiwik
j
jk
graf
wji
j=k
wij
zastępujemy przez
j=k
wjiwij
i
k
(ii)
jk
graf
wii
wik
wji
j
i
k
zastępujemy przez
wji(wii)*wik
k
j
jk
graf
wii
wji
j=k
i
wij
zastępujemy przez
j=k
wji(wii)*wij
Wyjaśnienie do kroku 2.2.
Graf po redukcji może mieć postać:
a)
w
i akceptuje wyrażenie
w *,
b)
w1
w3
w2
w4

w1 w2 w3  w4 w1 w2
jeżeli niektóre etykiety są równe  .
i akceptuje wyrażenie

; wyrażenie to może być prostsze,
PRZYKŁAD KONSTRUKCJI WYRAŻENIA REGULARNEGO DLA AUTOMATU
SKOŃCZONEGO
Znaleźć wyrażenie regularne r oznaczające język L(M) metodą redukcji grafu wyrażeń dla
automatu M danego za pomocą diagramu:
a,b
b
b
M:
a
1
a
2
1
3
b
Tworzymy tyle kopii automatu M ile jest stanów końcowych, tak aby w każdej kopii był tylko
jeden stan początkowy i jeden końcowy:
a,b
b
b
M1:
a
1
2
1
3
b
a,b
b
b
M2:
a
a
1
a
2
1
3
b
Oddzielnie wyznaczamy r1 i r2 takie, że Lr1   LM1  i Lr2   LM 2  .
Wtedy, dla r  r1  r2 mamy Lr   LM  .
I. Redukcja M 1 .
Usuwamy pojedynczo wierzchołki, które nie są początkowe ani końcowe. W tym przypadku
możemy usunąć wierzchołek 2 i 3.
(1) Usuwamy wierzchołek 2.
i=2
w22  
nowe połączenia
j=1 k=1
1
ab
a
2
w11  w12w21  ab
b
1
1
j=1 k=3
a
1
a
2
3
1
1
3
3
3
aa
3
w13  w12w23  aa
j=3 k=1

3
2
b

1
w31  w32w21  b  
j=3 k=3

3
2
a

w33  w32w23  a  
Diagram automatu M 1 po usunięciu wierzchołka 2 wraz z wszystkimi wejściami i wyjściami z
tego wierzchołka oraz po dodaniu nowych połączeń:
b+ab
b aa
M1:
a+b
1
3
1
(2) Usuwamy wierzchołek 3
i=3
w33  a  b  
nowe połączenia
a+b
j=1 k=1
1
aa
3


1
*
w11  w13w33
w31  aa(a  b) *   
1
Diagram M 1 po usunięciu wierzchołka 3:
M1:
b+ab
b
1
1
Zatem LM1   Lr1  , gdzie r1  b  ab
*
II. Redukcja automatu M 2 .
Możemy usunąć jedynie wierzchołek 2. Procedura usuwania jest identyczna jak dla automatu M 1 .
Po usunięciu wierzchołka 2 diagram automatu jest postaci:
M2:
b+ab
b aa
a+b
1
3
1
Zatem LM 2   Lr2  , gdzie r2  b  ab aaa  b
*
*
Ostatecznie LM   Lr  , gdzie
r  r1  r2  b  ab   b  ab  aaa  b 
*
*

*
 b  ab    aaa  b 
*
*


Podobne dokumenty