• Nie Znaleziono Wyników

ε Przekształcenia automatów skończonych

N/A
N/A
Protected

Academic year: 2021

Share "ε Przekształcenia automatów skończonych"

Copied!
12
0
0

Pełen tekst

(1)

Przekształcenia automatów skończonych

Teoria automatów i języków formalnych

Dr inŜ. Janusz Majewski Katedra Informatyki

Konstrukcja automatu skończonego na podstawie wyraŜenia regularnego (algorytm Thompsona)

Wejście: wyraŜenie regularne r nad alfabetem Σ

Wyjście: automat skończony akceptujący język L(r) (język opisany wyraŜeniem regularnym r)

Metoda: wyodrębnić z wyraŜenia regularnego r elementy podstawowe. Dla elementów podstawowych skonstruować odpowiadające im automaty, a następnie połączyć je według poniŜszych zasad:

• Dla ∅∅∅∅zbudować A(∅∅∅∅)

• Dla εεεε zbudować A(εεεε)

i

ε

3f

(2)

Konstrukcja automatu skończonego na podstawie wyraŜenia regularnego (algorytm Thompsona)

• Dla a∈Σ zbudować A(a)

• Gdy A(s) i A(t) są automatami dla wyraŜeń regularnych s i t , to dla wyraŜenia s|t zbudować A(s|t)

i a 3f

i f

A(s)

A(t)

ε

ε ε

ε

Konstrukcja automatu skończonego na podstawie wyraŜenia regularnego (algorytm Thompsona)

• Gdy A(s) i A(t) są automatami dla wyraŜeń regularnych s i t , to dla wyraŜenia st zbudować A(st)

• Gdy A(s) jest automatami dla wyraŜenia regularnego s, to dla wyraŜenia s* zbudować A(s*)

A(s) A(t) f

i

A(s) f

i

ε ε

ε

ε

(3)

Przykład: konstrukcja automatu skończonego dla wyraŜenia regularnego r = (a|b)*abb

Rozkład wyraŜenia (a|b)*abb :

r

11

r

10

r

9

b r

8

r

7

r

6

r

5

* r

4

r

2

r

1

r

3

b a )

(

b a

|

Przykład: konstrukcja automatu skończonego dla wyraŜenia regularnego r = (a|b)*abb

2

a

33

4 b 5

3

1

2 a 3

4 b 5

3 6

ε

ε

ε

ε

r1= a r1= b

r3= a|b = r1|r2

(4)

Przykład: konstrukcja automatu skończonego dla wyraŜenia regularnego r = (a|b)*abb

1

2 a 3

4 b 5

6

ε

ε

ε

ε

0

ε ε

3 7

ε

ε

r4= (r3) r5= r4*

Przykład: konstrukcja automatu skończonego dla wyraŜenia regularnego r = (a|b)*abb

r6= a ; r8 = b ; r10= b - konstrukcje identyczne jak dla r1i r2 rx= abb

7' a 8 b 9 b 103

r = r5rx= (a|b)*abb Ostatecznie otrzymujemy:

(5)

Przykład: konstrukcja automatu skończonego dla wyraŜenia regularnego r = (a|b)*abb

a 8

9 b 103 1

2 a 3

4 b 5

6

0

ε

7 b

(a|b)*abb

ε

ε

ε

ε

ε

ε

ε

Konstrukcja automatu deterministycznego na podstawie automatu niedeterministycznego

Dla kaŜdego automatu skończonego istnieje deterministyczny automat skończony akceptujący ten sam język.

Dla q∈Q definiuje się zbiór ε-CLOSURE(q) zawierający te stany r∈Q, do których moŜna dojść z q przechodząc tylko przez ε-przejścia, przy czym równieŜ q ∈ ∈ ∈ ∈ ε-CLOSURE(q).

Dla S⊆Q definiuje się zbiór ε-CLOSURE(S) zawierający te stany r∈Q, do których moŜna dojść ze stanów S

przechodząc tylko przez ε-przejścia, przy czym równieŜ S ⊆ ⊆ ⊆ ⊆ ε-CLOSURE(S).

Dla S⊆Q, dla a∈Σ rozszerza się definicję funkcji przejścia:

δ(S,a) = { r∈Q | r∈δ(s,a), s∈S }

(6)

Konstrukcja automatu deterministycznego na podstawie automatu niedeterministycznego

Wejście: A=< Σ, Q, F, q0, δ > - automat skończony niedeterministyczny

Wyjście: A’=< Σ, Q’, F’, r0, δ’ > - automat skończony deterministyczny (bez ε-przejść) Metoda: Q ⊇ S a r ∈ Q’ /* podzbiór zbioru stanów a pojedynczy stan */

r0:= ε-CLOSURE({q0}); r0 - nieoznaczony; /* r0– stan początkowy A’ i równocześnie podzbiór zbioru stanów Q automatu A */

Q’ := {r0};

while ∃ X∈Q’ and X – nieoznaczony do /* X = {q1,...,qk} ⊆ Q*/

begin oznacz X;

for kaŜde a∈Σ do begin

U := {q∈Q | q∈δ(s,a) ∧ s∈X } /* U = δ(X,a) */

Y := ε-CLOSURE(U) ; if Y∉Q’ then

begin

Q’ := Q’ ∪ {Y}; Y – nieoznaczony; /* dołączenie Y do Q’ jako nieoznaczonego*/

end;

δ’(X,a) := Y; /* ustalenie funkcji przejścia automatu A’ */

end;

end;

F’ := { r ∈ Q’ | r ∩ F ≠ ∅ } /* tutaj r traktowane jako (r⊂Q) podzbiór stanów automatu A */

Przykład (1)

a 8

9 b 103 1

2 a 3

4 b 5

6

0 ε 7 b

(a|b)*abb

ε

ε

ε

ε

ε ε

ε

r0= ε-CLOSURE({0}) = { 0,1,2,4,7 } = r0; Q’={ r0}

_________________________________________________________

r0– oznaczamy Ua= δ(r0,a) = {3,8}

r1= ε-CLOSURE({3,8}) = { 1,2,3,4,6,7,8 }= r1; δ’(r0,a) = r1 Ub= δ(r0,b) = {5}

r2= ε-CLOSURE({5}) = { 1,2,4,5,6,7 }= r2; δ’(r0,b) = r2 Q’ = { r0, r1, r2} /* stan podkreślony jest oznaczony */

(7)

Przykład (2)

a 8

9 b 103 1

2 a 3

4 b 5

6

0 ε 7 b

(a|b)*abb

ε

ε ε

ε

ε ε

ε r1– oznaczamy

Ua= δ(r1,a) = {3,8}

ε-CLOSURE({3,8}) = { 1,2,3,4,6,7,8 }= r1; δ’(r1,a) = r1 Ub= δ(r1,b) = {5,9}

ε-CLOSURE({5,9}) = { 1,2,4,5,6,7,9 }= r3; δ’(r1,b) = r3 Q’ = { r0, r1, r2, r3}

_________________________________________________________

r2– oznaczamy Ua= δ(r2,a) = {3,8}

ε-CLOSURE({3,8}) = r1; δ’(r2,a) = r1 Ub= δ(r2,b) = {5}

ε-CLOSURE({5}) = r2; δ’(r2,b) = r2 Q’ = { r0, r1, r2, r3}

Przykład (3)

a 8

9 b 103 1

2 a 3

4 b 5

6

0 ε 7 b

(a|b)*abb

ε

ε ε

ε

ε ε

ε r3– oznaczamy

Ua= δ(r3,a) = {3,8}

ε-CLOSURE({3,8}) = r1; δ’(r3,a) = r1 Ub= δ(r3,b) = {5,10}

ε-CLOSURE({5,10}) = { 1,2,4,5,6,7,10 } = r4 ; δ’(r3,b) = r4 Q’ = { r0, r1, r2, r3, r4 }

_________________________________________________________

r4– oznaczamy Ua= δ(r4,a) = {3,8}

ε-CLOSURE({3,8}) = r1; δ’(r4,a) = r1 Ub= δ(r4,b) = {5}

ε-CLOSURE({5,10}) = r2 ; δ’(r3,b) = r2 Q’ = { r0, r1, r2, r3, r4}

(8)

Przykład (4)

a 8

9 b 103 1

2 a 3

4 b 5

0 ε 6 7 b

(a|b)*abb

ε

ε ε

ε

ε ε

ε

a b

r

0

b

start

r

1

r

3

r

4

r

2

a a

b b

a

a

(a|b)*abb b

r2 r1

r4

r4 r1

r3

r2 r1

r2

r3 r1

r1

r2 r1

r0

b a

Stan Ostatecznie:

F’={r4}

Uzupełnienie automatu skończonego

Wejście: A = < Σ, Q, F, q

0

, δ > - automat skończony Wyjście: A’ = < Σ, Q’, F, q

0

, δ’ > - automat skończony

zupełny

Q’ := Q ∪ { err } for q∈Q do

for a∈Σ do

if δ(q,a) = ∅ then δ’(q,a) := { err } else δ’(q,a) := δ(q,a);

for a∈Σ do

δ’(err,a) := { err }

(9)

Przykład

a b

0 b

1 2 3

err

a a a

a a

b

b

start

b

Stan pułapki „err” nie jest stanem końcowym akceptującym

Redukcja automatu skończonego

A = < Σ, Q, F, q0, δ > - deterministyczny, zupełny automat skończony x∈Σ* - słowo nad alfabetem Σ

q1, q2, q3, q4∈Q – stany automatu A

• x∈Σ* rozróŜnia stany q1i q2⇔ (1) (q1,x) A* (q3, ε) (2) (q2,x) A* (q4, ε)

(3) (q3∈F ∧ q4∉F ) ∨ (q3∉F ∧ q4∈F )

• q1i q2są k–nierozróŜnialne, co oznaczamy q1kq2 ⇔ ¬(∃x ∈ Σ*) takie Ŝe:

x rozróŜnia q1i q2 oraz |x| ≤ k

• q1i q2są nierozróŜnialne, co oznaczamy q1≡q2 ⇔ (∀k ≥ 0) (q1kq2)

• q ∈ Q – {q0} jest nieosiągalny ⇔ ¬(∃x ∈ Σ*) ((q0,x) A+ (q,y) ∧ y∈Σ*)

• Automat skończony (deterministyczny, zupełny) nazywamy zredukowanym ⇔ (1) ¬(∃ q∈Q) (q jest nieosiągalny)

(2) (∀q1,q2∈Q) (q1i q2nie są nierozróŜnialne)

(10)

Usuwanie stanów nieosiągalnych

A = < Σ, Q, F, q0, δ > - deterministyczny automat skończony Niech R będzie relacją (R ⊆ Q × Q) zdefiniowaną następująco:

q1 R q2⇔( ∃∃∃a∈Σ ) ( δ(q∃ 1,a) = q2)

Trzeba znaleźć automat A’ = < Σ, Q’, F’, q0, δ’ > bez stanów nieosiągalnych, to znaczy trzeba wyznaczyć

Q’ = { q∈Q | q0 R* q }

Zakładamy, Ŝe elementy Q są nieoznaczone.

L := {q0};

while L ≠ ∅ do begin

b := pierwszy element z L;

oznacz b w Q;

L := L – {b};

L := L ∪ { c∈Q | b R c ∧ c – nieoznaczone w Q };

end;

stop; /* elementy nieoznaczone w Q są nieosiągalne */

Przykład usuwania stanów nieosiągalnych (1)

start

A

C

E D

B F

G 0

0 0

0

0

0 0

1 1 1

1

1 1

1

(11)

Przykład usuwania stanów nieosiągalnych (2)

start A

C

E D

B F

G 0

0 0

0 0

0 0

1 1 1 1

1 1

1

L = { A }; A ; Q = { A, B, C, D, E, F, G }; L = ∅ L = { B, D }; B ; Q = { A, B, C, D, E, F, G }; L = { D } L = { D, C }; D ; Q = { A, B, C, D, E, F, G }; L = { C } L = { C, E}; C ; Q = { A, B, C, D, E, F, G }; L = { E } L = { E }; E ; Q = { A, B, C, D, E, F, G }; L = ∅

nieoznaczone = nieosiągalne

start A

C

E D

B 0

0 0

0 0

1 1

1 1

1

PRZED: PO:

Łączenie stanów nierozróŜnialnych

A = < Σ, Q, F, q

0

, δ > - automat skończony, bez stanów nieosiągalnych, deterministyczny, zupełny.

Twierdzenie 1. Niech n = #Q

( ≡ ≡ ≡ ≡ ) ⊆ ⊆ ⊆ ⊆ ( ≡ ≡ ≡ ≡

n-2

) ⊆ ⊆ ⊆ ⊆ ( ≡ ≡ ≡ ≡

n-3

) ⊆ ⊆ ⊆ ⊆ ... ⊆ ⊆ ⊆ ⊆ ( ≡ ≡ ≡ ≡

1

) ⊆ ⊆ ⊆ ⊆ ( ≡ ≡ ≡ ≡

0

) przy czym: (≡) ⊆ ⊆ ⊆ ⊆ Q× × × ×Q; (≡

k

) ⊆ ⊆ ⊆ ⊆ Q× × ×Q ×

q

1

≡ ≡ ≡ ≡

0

q

2

⇔ ⇔ ⇔ ⇔ (q

1

∈ ∈ ∈ ∈F ∧ ∧ ∧ ∧ q

2

∈ ∈ ∈ ∈F) ∨ ∨ ∨ ∨ (q

1

∉F ∧ ∉ ∉ ∉ ∧ ∧ ∧ q

2

∉ ∉ ∉ ∉F)

q

1

≡ ≡ ≡ ≡

k

q

2

⇔ ⇔ ⇔ ⇔ q

1

≡ ≡ ≡ ≡

k-1

q

2

∧ ∧ ∧ ∧ (∀ ∀a∈Σ ) (δ(q ∀ ∀

1

,a) ≡ ≡ ≡ ≡

k-1

δ(q

2

,a))

Twierdzenie 2. Relacja nierozróŜnialności (≡) ⊆ ⊆ ⊆ ⊆ Q× × × ×Q jest zwrotna, symetryczna i przechodnia, jest więc relacją równowaŜności.

Algorytm łączenia stanów nierozróŜnialnych polega na wyznaczeniu relacji nierozróŜnialności (≡) ⊆ ⊆ ⊆ ⊆ Q× × × ×Q, a następnie przypisaniu kaŜdej klasie równowaŜności relacji (≡) stanu tworzonego automatu

zredukowanego. Relację (≡) wyznaczamy zgodnie z tw1.

poczynając od (≡

0

) i dokonując kolejnych podziałów Q na klasy

równowaŜności.

(12)

Algorytm łączenia stanów nierozróŜnialnych

Wejście: A = < Σ, Q, F, q

0

, δ > - deterministyczny, zupełny, bez stanów nieosiągalnych

Wyjście: A’ = < Σ, Q’, F’, q

0

’, δ’ > - automat posiadający najmniejszą liczbę stanów spośród wszystkich automatów deterministycznych i zupełnych akceptujących język L(A)

1) Podzielić Q na klasy równowaŜności dla relacji ( ≡

0

) , ( ≡

1

) , ... . Postępować tak długo, aŜ podziały : dla ( ≡

k

) i dla ( ≡

k+1

) będą identyczne. Jako podział względem relacji (≡) przyjąć ten dla ( ≡

k

) 2) Oznaczamy [q]

klasę równowaŜności relacji (≡) w Q, do której

naleŜy q∈Q

3) Q’ := { [p]

| p ∈ Q }

4) δ’( [p]

, a ) := [q]

⇔ δ(p,a) = q 5) q

0

’ := [q

0

]

6) F’ := { [q]

| q∈F }

Przykład

{4} {0,2} {1} {3}

akceptujący początkowy

3

δ(0,b)=2 δ(2,b)=2 2≡≡≡≡22 {4} {0, 2} {1} {3}

2

δ(0,b)=2 δ(2,b)=2 2≡≡≡≡1 2 δ(1,b)=3 {4} {0, 1, 2} {3}

1

δ(0,a)=1 δ(0,b)=2 δ(1,a)=1 δ(1,b)=3 2≡≡≡≡03 δ(2,a)=1 δ(2,b)=2 δ(3,a)=1 δ(3,b)=4 {4} {0, 1, 2, 3}

0

Przejścia Klasy równowaŜności

Relacja

a b

0 b

start

1 3 4

2

a a

b b

a

a b

(a|b)*abb

a b

0,2 b

start

1 3 4

a a

b a

b

Przed:

Po:

Cytaty

Powiązane dokumenty

Ciąg Fibonacciego – ciąg liczb naturalnych określony rekurencyjnie w sposób następujący: Pierwsze dwa wyrazy ciągu równe są 1, każdy następny jest sumą dwóch

Dwugªowicowy (niedeterministyczny) automat sko«czony ma sko«czony zbiór stanów i dwie gªowice czytaj¡ce sªowo wej±ciowe.. Uzasadni¢ (pomijaj¡c szczegóªy)

L jest rozpoznawany przez

minimalizacja automatów niedeterministycznych automaty na

Dwaj gracze Spoiler i Duplikator, gra rozgrywana

Wykład 5: Wariacje na temat automatów skończonych.

Punkt materialny porusza się po okręgu o promieniu R ruchem jednostajnie opóźnionym ze stałym ujemnym przyspieszeniem kątowym.. W trakcie ruchu punktu

Rozważamy języki regularne nad alfabetem {a, b, c}, takie że liczba ich słów o długości n wynosi dokładnie n·2 n1 dla każdego n