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 LM 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) jk graf wji wik j i k zastępujemy przez wjiwik j jk graf wji j=k wij zastępujemy przez j=k wjiwij i k (ii) jk graf wii wik wji j i k zastępujemy przez wji(wii)*wik k j jk 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 Lr1 LM1 i Lr2 LM 2 . Wtedy, dla r r1 r2 mamy Lr LM . 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 LM1 Lr1 , 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 LM 2 Lr2 , gdzie r2 b ab aaa b * * Ostatecznie LM Lr , gdzie r r1 r2 b ab b ab aaa b * * * b ab aaa b * *