4 6 RG Gramatyki regularne

background image

Gramatyki regularne

Teoria automatów i języków
formalnych

Dr inż. Janusz Majewski
Katedra Informatyki

Gramatyki regularne

G = < V,Σ,P,S > jest gramatyką prawostronnie liniową, jeśli jej produkcje mają

postać:

x

∈Σ* U,W∈

∈V

G = < V,Σ,P,S > jest gramatyką prawostronnie regularną, jeśli jej produkcje mają

postać:

a

∈Σ

U,W

∈V

oraz (iii) jeśli (S

→ε)∈P to S nie występuje w prawych stronach żadnej produkcji.

(Często w definicji gramatyki regularnej pomija się warunek (iii) dotyczący

niewystępowania S w prawych stronach produkcji – dopuszcza się za to produkcje

U

→ε ; U∈V)

Analogicznie określa się :
-gramatyki lewostronnie liniowe

x

∈Σ* U,W∈V

-gramatyki lewostronnie regularne

a

∈Σ

U,W

∈V

x

U

ii

xW

U

i

)

(

)

(

a

U

ii

aW

U

i

)

(

)

(

x

U

Wx

U

a

U

Wa

U

background image

Szkic algorytmu przekształcania gramatyki

prawostronnie liniowej w prawostronnie regularną

Wejście: G = < V,Σ,P,S >

∈ G

PLN

Wyjście: G’ = < V,Σ,P,S >

∈ G

PRG

taka, że L(G) = L(G’)

Metoda:
P’ := P;

V’ := V;

for (A

→ α) ∈ P do

begin

if

α = xB and x = x

1

...x

n

∈ Σ* and |x| ≥ 2 then

begin

C :=

{ A → x

1

C

1

; C

1

→ x

2

C

2

; ... ; C

n-1

→ x

n

B };

P’ := P’ \ { A

→ xB } ∪ C ;

V’ := V’

∪ { C

1

,...,C

n-1

} ;

end;
if

α = x and x = x

1

...x

n

∈ Σ* and |x| ≥ 2 then

begin

C :=

{ A → x

1

C

1

; C

1

→ x

2

C

2

; ... ; C

n-

1

→ x

n

B };

P’ := P’ \ { A

→ x } ∪ C ;

V’ := V’

∪ { C

1

,...,C

n-1

} ;

end;

end;

Szkic algorytmu przekształcania gramatyki

prawostronnie liniowej w prawostronnie regularną

Usunąć

ε - produkcje (w razie potrzeby) ;

Usunąć reguły łańcuchowe ;

Usunąć symbol początkowy z prawych stron produkcji (w razie potrzeby);

/* algorytm usuwania symbolu początkowego będzie podany później */

Przykład:

Gramatyka
prawostronn
ie regularna

** - usunięcie
produkcji
łańcuchowych

* - usunięcie

ε-produkcji

Gramatyka
prawostronnie
liniowa

A

1

→ b

A

1

→ b


*

B

→ ε

B

→ ε

B

→ aA

1

B

→ bA

2

⇒**

B

→ A

B

→ A

B

→ A

B

→ b

B

→ b

B

→ b

B

→ b

A

→ bA

2

A

2

→ a

A

→ bA

2

A

2

→ a

A

→ bA

2

A

2

→ a

A

→ ba

A

→ aA

1

A

1

→ bB

A

→ aA

1

A

1

→ bB

A

→ aA

1

A

1

→ bB

A

→ abB

background image

Przekształcenie

gramatyki lewostronnie regularnej

w prawostronnie regularną

Wejście: G = < V,Σ,P,S >

∈ G

LRG

; G – nie zawiera symbolu

początkowego S w prawych stronach produkcji

Wyjście: G’ = < V’,Σ,P’,S’>

∈ G

PRG

taka, że L(G’) = L(G)

Metoda:
P’ :=

∅;

V’ := V

∪ {S’} – {S}

for (A

→ a) ∈ P : a∈Σ do

if A=S

then P’ := P’

∪ {S’→ a}

else P’ := P’

∪ {S’→ aA};

for (A

→ Ba) ∈ P : B∈V , a∈Σ do

if A=S

then P’ := P’

∪ {B→ a}

else P’ := P’

∪ {B→ aA};

Przekształcenie

gramatyki lewostronnie regularnej

w prawostronnie regularną

Przykład:

G=<{S,A},{a,b},P,S>

G’=<{S’,A},{a,b},P’,S’>

S

→ a

S’

→ a

S

→ Ab

A

→ b

A

→ a

S’

→ aA

A

→ Ab

A

→ bA

background image

Usuwanie produkcji końcowych

(kosztem wprowadzenia

ε-produkcji)

Produkcje końcowe: U

→ a : U∈V , a∈Σ

Wejście: G = < V,Σ,P,S >

∈ G

PRG

Wyjście: G’ = < V’,Σ,P’,S > - bez produkcji końcowych, taka że

L(G’) = L(G)

Metoda:
V’ := V;
P’ := P;
for (A

→ x) ∈ P do

if x

∈Σ then

begin

V’ := V’

∪ { A

x

};

P’ := P’

∪ { A → xA

x

, A

x

→ ε }

– { A

→ x };

end;

Usuwanie produkcji końcowych

(kosztem wprowadzenia

ε-produkcji)

Przykład:
G = < {S,A,B,C,R,Q}, {a,b}, P, S >

S

→ bS

S

→ bS

S

→ aA

S

→ aA

S

→ aB

S

→ aB

B

→ bC

B

→ bC

C

→ aA

C

→ aA

A

→ bR

A

→ bR

Q

→ aB

Q

→ aB

A

→ b

A

→ bD,

D

→ εεεε

D – Symbol końcowy (nie mylić z symbolem terminalnym)

background image

Wykres gramatyki (bez produkcji końcowych)

w postaci grafu zorientowanego

A

→ aB

A,B

∈V a∈Σ

A

≠S (B→ ε) ∉P

S

→ aB

a

∈Σ, B∈V

(B

→ε) ∉P

A

→ aB

B

→ ε

a

∈ Σ; A,B ∈ V

A

B

a

Przykład (1)

S

→ bS

S

→ aA

S

→ aB

B

→ bC

C

→ aA

A

→ bR

Q

→ aB

A

→ bD

D

→ ε

S

A

B

C

Q

R

D

b

b

b

b

a

a

a

a

background image

Przykład (2)

Usuwanie symboli

nieosiągalnych

Można usunąć każdą

produkcję U

→ aW,

taką że U

≠S oraz

symbol U nie
występuje po
prawej stronie
żadnej produkcji.

S

A

B

C

Q

R

D

b

b

b

b

a

a

a

a

nieosiągalny

Przykład (3)

Usuwanie symboli

nieużytecznych

Można usunąć wszystkie

produkcje U

→ aW,

gdzie W nie jest
symbolem końcowym
oraz W nie występuje
po lewej stronie żadnej
produkcji, z wyjątkiem
być może produkcji
typu W

→ aW.

S

A

B

C

R

D

b

b

b

b

a

a

a

nieużyteczny

Powyższe stwierdzenia nie są precyzyjne. Dokładne algorytmy podano dla
gramatyk bezkontekstowych. (G

RG

⊂ G

BK

)

background image

Przypomnienie o ścieżkach

w grafie skierowanym

Ścieżka – ciąg wierzchołków grafu zgodny z istniejącymi krawędziami i ich

zorientowaniem.

Definicje: Ścieżka końcowa

⇔ ścieżka K

0

K

1

... K

n

taka, że

K

0

= S

K

n

∈ zbiór symboli końcowych

Ścieżka wyznaczona przez słowo x=x

1

x

2

...x

n

⇔ ścieżka końcowa K

0

K

1

...K

n

taka, że
(K

0

→ x

1

K

1

)

∈ P

(K

1

→ x

2

K

2

)

∈ P

...
(K

n-1

→ x

n

K

n

)

∈ P

(K

n

→ ε) ∈

∈ P

x

∈ L(G) ⇔ ∃

∃∃

∃ ścieżka wyznaczona przez słowo x.

Graf automatu skończonego

≡≡

≡ graf gramatyki prawostronnie regularnej bez

produkcji końcowych

Automat skończony

⇒ wyrażenie regularne

Twierdzenie: Język generowany przez gramatykę

prawostronnie regularną bez produkcji
końcowych (język akceptowany przez automat
skończony) jest językiem regularnym (tzn.
określonym przez wyrażenie regularne).

[Dowód przez indukcję względem liczby krawędzi

w grafie].

Z gramatyki prawostronnie regularnej usuwamy

jedną produkcję typu S

→ aA (S – symbol

początkowy).

background image

Automat skończony

⇒ wyrażenie regularne

Rozważamy cztery gramatyki:

G

1

:

G

2

:

W G

2

wierzchołkiem początkowym

i jedynym końcowym jest S.

G

3

:

G

4

:

W G

3

wierzchołkiem początkowym jest A

zaś jedynym końcowym jest S

Automat skończony

⇒ wyrażenie regularne

G

1

:

G

2

:

W G

2

wierzchołkiem początkowym

i jedynym końcowym jest S.

G

3

:

G

4

:

W G

3

wierzchołkiem początkowym jest A

zaś jedynym końcowym jest S

L(G) = L(G

1

)

∪ L(G

2

) [ aL(G

3

)]*aL(G

4

)

Każda ścieżka końcowa w G jest albo końcowa w G

1

albo może być

przedstawiona w postaci:

x

a y

1

a y

2

...

a y

m

a z

sciezka końcowa w G

2

scieżki końcowe w G

3

scieżka końcowa w G

4

background image

Automat skończony

⇒ wyrażenie regularne

Przykład (1)

• Zbudować wyrażenie regularne opisujące język

akceptowany przez automat skończony dany grafem
(generowany przez gramatykę daną grafem):

Automat skończony

⇒ wyrażenie regularne

Przykład (2)

S

A

B

C

D

b

b

b

a

a

G

1

A

B

C

D

b

b

b

a

a

G

2

S

L(G

1

)= {b

n

abab | n

≥ 0} = b*abab

≡≡≡≡

L(G

2

) = {b

n

|n

≥0} = b*

b

S

background image

Automat skończony

⇒ wyrażenie regularne

Przykład (3)

≡≡≡≡

L(G

3

) =

≡≡≡≡

L(G

4

) = {b}= b

A

B

C

D

b

b

b

a

a

G

3

S

S

A

B

C

b

b

b

a

a

G

4

D

A

A

b

D

Automat skończony

⇒ wyrażenie regularne

Przykład (4)

L(G

1

)= b*abab

L(G

2

) = b*

L(G

3

) =

L(G

4

) = b

L(G) = L(G

1

)

∪ L(G

2

) [aL(G

3

)]*aL(G

4

) =

= b*abab | b*(a

∅)*ab

b*abab | b*(a

ϕ

ϕ

ϕ

ϕ)*ab =

= b*abab | b*

ϕ

ϕ

ϕ

ϕ*ab =

= b*abab | b*

εεεεab =

= b*abab | b*ab =
= b*ab(ab|

εεεε)

L(G) = b*ab(ab|

εεεε)

background image

Usuwanie symbolu początkowego

z prawych stron produkcji

We : G = <V,Σ,P,S> - gramatyka regularna bez produkcji

końcowych

Wy : G’=<V’,Σ,P’,S> - gramatyka regularna bez S w prawych

stronach produkcji, taka że L(G’) = L(G)

Metoda:
P

1

:= P;

V’ := V;
for (A

→ aB) ∈

∈P do

if B=S then
begin

V’ := V’

∪ {K};

P

1

:= P

1

– {A

→ aS} ∪

∪ {A → aK};

end;

P’ := P

1

;

for (A

→ X) ∈

∈P

1

and (X = aB or X =

ε) do

if A=S then

P’ := P’

∪ {K → X};

Usuwanie symbolu początkowego

z prawych stron produkcji

S

→ bS

S

→ bK

S

→ bK

K

→ bK

S

→ aA

S

→ aA

S

→ aA

K

→ aA

S

→ aB

S

→ aB

S

→ aB

K

→ aB

B

→ bC

B

→ bC

B

→ bC

C

→ aA

C

→ aA

C

→ aA

A

→ bD

A

→ bD

A

→ bD

D

→ ε

D

→ ε

D

→ ε

background image

Konstrukcja sumy teoriomnogościowej, złożenia

i domknięcia Kleene’go języków regularnych

Twierdzenie: L

1

i L

2

– języki regularne generowane przez gramatyki

G

1

= <V

1

1

,P

1

,S

1

>

G

2

= <V

2

2

,P

2

,S

2

>

Wówczas języki :

L

1

∪ L

2

L

1

L

2

L

1

*

są regularne.
Konstrukcję gramatyki G = <V,Σ,P,S>, takiej, że:
a) L(G) = L

1

(G

1

)

∪ L

2

(G

2

)

b) L(G) = L

1

(G

1

) L

2

(G

2

)

c) L(G) = [L

1

(G

1

)]*

dokonujemy przy założeniach i oznaczeniach :



Σ = Σ

1

∪ Σ

2



V

1

∩ V

2

=

∅ (jeśli nie, to można nieterminale pomalować na różne kolory)



G

1

i G

2

- gramatyki regularne bez produkcji końcowych



F

1

i F

2

- zbiór nieterminalnych symboli końcowych gramatyk G1 i G2



F - zbiór symboli końcowych gramatyki G

Konstrukcja sumy teoriomnogościowej, złożenia

i domknięcia Kleene’go języków regularnych (a)

(a) Konstrukcja G = <V

1

∪V

2

∪{S}, Σ, P, S> takiej, że L(G) = L

1

(G

1

)

∪ L

2

(G

2

)

if

ε∉L

1

∪L

2

then F:= F

1

∪F

2

else F:= F

1

∪F

2

∪{S};

P:=

∅;

for (A

→ aB)∈P

1

do P:= P

∪ {A → aB};

for (A

→ aB)∈P

2

do P:= P

∪ {A → aB};

for (S

1

→ aB)∈P

1

do P:= P

∪ {S → aB};

for (S

2

→ aB)∈P

2

do P:= P

∪ {S → aB};

for A

∈ F do P:= P ∪ {A → ε};

*

S

1

stał się nieosiągalny

background image

Konstrukcja sumy teoriomnogościowej, złożenia

i domknięcia Kleene’go języków regularnych (b)

(b) Konstrukcja G = < V

1

∪V

2

, Σ, P, S

1

> takiej, że L(G) = L

1

(G

1

)L

2

(G

2

)

if S

2

∉F

2

then F:= F

2

else F:= F

1

∪F

2

;

P:=

∅;

for (A

→ aB)∈P

1

and A

∈V

1

–F

1

do

P:= P

∪ {A → aB };

for (A

→ aB)∈P

1

and A

∈F

1

do

P:= P

∪ {A → aB} ∪ {A → bC | (S

2

→ bC)∈P

2

};

for (A

→ aB)∈P

2

do P:= P

∪ {A → aB};

for A

∈ F do P:= P ∪ {A → ε};

*

A oraz B przestają być końcowymi

Konstrukcja sumy teoriomnogościowej, złożenia

i domknięcia Kleene’go języków regularnych (c)

(c) Konstrukcja G = <V

1

∪{S}, Σ, P, S> takiej , że : L(G) = [L

1

(G

1

)]*

F := F

1

∪{S};

P:=

∅;

for a

∈Σ and A∈V

1

–F

1

do

P := P

∪ {A → aB | (A → aB) ∈ P

1

};

for a

∈Σ and A∈F

1

do

begin

P := P

∪ {A → aB | (A → aB) ∈ P

1

};

P := P

∪ {A → aB | (S

1

→ aB) ∈ P

1

};

end;

for a

∈ Σ do

P := P

∪ {S

1

→ aB | (S → aB) ∈ P

1

};

for A

∈ F do P := P ∪ {A → ε};


Wyszukiwarka

Podobne podstrony:
4 4 RG Wlasnosci regularnych
4 1 RG Zbiory regularne id 3818 Nieznany (2)
4 4 RG Wlasnosci regularnych
ćw4 Automaty skończone, gramatyki, wyrażenia regularne
Genetyka regulacja funkcji genow
REGULACJA UKLADU KRAZENIA 2
33 Przebieg i regulacja procesu translacji
8 ocena jakości układów regulacji
WYKŁAD 11 SPS 2 regulatory 0
WYKŁAD 7 Szeregowy regulacja hamowanie
PREZENTACJA ĆWICZENIA GRAMATYCZNE
Wzajemna regulacja gruczołów wydzielania wewnętrznego, pętle sprzężeń między gruczołami

więcej podobnych podstron