Sunteți pe pagina 1din 47

Curs 2: Limbaje regulate

2016-2017 Dezvoltarea aplicaţiilor interactive


1 / 47
Ierarhia Chomsky

2 / 47
Cuprins

1 Automate finite

2 Expresii regulate

3 / 47
Automate finite

4 / 47
Automate finite

Un automat finit nedeterminist NFA este un 5-tuplu


A = (Q, V , δ, Q0 , Qf ), unde:
Q este mulţime finită de stări
V este alfabetul de intrare (finit)
Q0 ⊆ Q este mulţimea stărilor iniţiale
Qf ⊆ Q este mulţimea stărilor finale
δ : Q × V → 2Q este relaţia de tranziţie

Un automat finit determinist DFA este un NFA astfel ı̂ncât:


există o singură stare iniţială
pt. or. q ∈ Q şi simbol a ∈ V , există şi este unică o stare q 0 astfel
ı̂ncât q 0 ∈ δ(q, a)
ı̂n acest caz, δ : Q × V → Q este funcţie de tranziţie

5 / 47
Automate finite

Exemplu

a b
start A B C F
a

b a
b b a b
a

b
D E G
b

6 / 47
Limbaj acceptat

Automatele finite pot fi folosite pentru a accepta cuvinte:


a
notăm cu q −→ q 0 faptul că q 0 ∈ δ(q, a)
un cuvânt w = a1 . . . an ∈ V ∗ (cu a1 , . . . , an ∈ V ) este acceptat de
un NFA A = (Q, V , δ, Q0 , Qf ) dacă există o secvenţă de tranziţii
1 a 2 a an−2 n a
Q0 3 q0 −→ q1 −→ . . . −→ qn−1 −→ qn ∈ Qf

limbajul acceptat este L(A) = {w ∈ V ∗ | A acceptă pe w }


un limbaj este regulat dacă este acceptat de un NFA

Exemplu
abab este acceptat, dar abba nu este acceptat.

7 / 47
Semiinel

(S, +, ·, 0, 1) este seminel dacă


1 (S, +, 0) este monoid comutativ
asociativ
0 element neutru
comutativ

2 (S, ·, 1) este monoid

3 Înmulţirea distributivă faţă de adunare


a · (b + c) = (a · b) + (a · c)
(a + b) · c = (a · c) + (b · c)

4 0·a=a·0=0

8 / 47
Prezentări matriciale

Fie (S, +, ·, 0, 1) semiinel cu o operaţie ”∗” pe matricile pătrate peste S.

O prezentare matricială abstractă a unui limbaj este o matrice


↑ n  
→ A B
M= → A B (sau M = )
n C D
n C D

peste (S, +, ·, 0, 1) de tipul (1 + n) × (1 + n).

Limbajul specificat de o astfel de prezentare matricială este


L(M) = A + B · D ∗ · C ,
unde + şi · sunt operaţiile uzuale pe matrici (suma, produs) induse de
cele din S.

9 / 47
Prezentări matriciale concrete

Limbajele peste V pot fi organizate ca semiinel S = (P(V ∗ ), ∪, ·, ∅, λ),


unde
L1 ∪ L2 = {w | w ∈ L1 sau w ∈ L2 }
L1 · L2 = {w1 w2 | w1 ∈ L1 şi w2 ∈ L2 }
∅ este mulţimea vidă
λ este limbajul format din cuvântul vid
O prezentare matricială concretă este una ı̂n care
(S, +, ·, 0, 1) este S = (P(V ∗ ), ∪, ·, ∅, λ) şi
D ∗ = Id ∪ D ∪ D 2 ∪ D 3 ∪ . . ., cu Id matricea identitate
corespunzătoare

10 / 47
Prezentări matriciale concrete

Prezentări matriciale de NFA sunt prezentări concrete de tipul


(1 + n) × (1 + n) care, ı̂n plus, satisfac condiţiile:
1, . . . , n reprezintă stările automatului
A=0
B = (bj )j∈[n] specifică stările iniţiale
bj = 1 dacă j este stare iniţială, altfel 0

C = (ci )i∈[n] specifică stările finale


ci = 1 dacă i este stare finală, altfel 0

D = (dij )(i,j)∈[n]×[n] ) specifică tranziţiile


P a
dij = {a | i −→ j}

11 / 47
Prezentări matriciale concrete

Exemplu
Fie A NFA-ul de mai jos:

q1 a q2 a q3
start a

Prezentarea matricială a lui A este


 
0 1 0 0
 1 0 a 0 
M=  0

0 0 a 
1 0 0 a

12 / 47
Prezentări matriciale concrete

Cazuri particulare de prezentări matriciale:


1 NFA-urile coincid cu prezentările matriciale ı̂n care
D conţine numai 0 ori sume de litere
B şi C sunt matrici cu 0 şi 1
A este 0

2 Dacă ı̂n 1 se adaugă restricţia că ı̂n D, ı̂n fiecare linie fiecare literă
apare exact o dată, obţinem prezentări corespunzătoare DFA-urilor
3 Dacă 1 se relaxează acceptând apariţia lui 1 ı̂n D, atunci se obţin
prezentări care corespund automatelor finite nedeterministe cu
mişcări vide
4 Dacă relaxăm 1 admiţând sume finite de cuvinte (nu numai litere)
ca elemente ı̂n D şi C , iar B are un unic 1, altfel 0, obţinem
prezentări matriciale care modelează gramaticile regulate.

13 / 47
Limbaj acceptat

Teoremă
 
→ A B
Fie A un NFA şi M = prezentarea concretă pentru A.
n C D
Atunci L(M) (i.e., A + B · D ∗ · C ) coincide cu limbajul L(A) acceptat de
A ı̂n sens uzual.

Dem:
Fie
D = D 1 = (dij1 )ij
Dk = D| · .{z . . · D} = (dijk )ij
de k ori
D ∗ = (dij∗ )ij

14 / 47
Limbaj acceptat

Dem: (cont.)
Atunci
dij1 =
P
a1
{a1 |i −→j}
a1 este suma literelor care dau tranziţii de la i la j

dij2 = {a ,a |ex.r ,i −→r


P
a1 a2 a1 a2 este suma cuvintelor de lungime 2
1 2 1 1 −→j}
pentru care există un drum de la i la j
...
dijk = {a ,...,a |ex.r ,...,r ,i −→r
P
a1 a2 ak a1 . . . ak este suma
1 k 1 k−1 1 −→r2 ...rk−1 −→j}
cuvintelor de lungime k pentru care există un drum de la i la j
...

15 / 47
Limbaj acceptat

Dem: (cont.)
Deci dij∗ = {w |i −→j}
P
w w conţine cuvintele pentru care există un drum ı̂n
automat de la i la j (de lungime arbitrară).
Înmulţind cu B şi C selectăm din D ∗ cuvintele pentru care există drumuri
de la stări iniţiale la stări finale.
Deci, L(A) = B · D ∗ · C = A + B · D ∗ · C = L(M).


16 / 47
Prezentări matriciale concrete

Exemplu
Fie A NFA-ul de mai jos:

q1 a q2 a q3
start a

Prezentarea matricială a lui A este


 
0 1 0 0
 1 0 a 0 
M=  0

0 0 a 
1 0 0 a

17 / 47
Prezentări matriciale concrete

Exemplu (cont.)
 
0 1 0 0
 1 0 a 0 
Prezentarea matricială a lui A este M = 
 0 0 0 a .

1 0 0 a
Avem
0 0 a2 0 0 a3
   

D 2 =  0 0 a2  D 3 =  0 0 a3 
2
0 0 a 0 0 a3
1 a a2 + a3 + . . .
 

D ∗ =  0 1 a + a2 + a3 + . . . 
2 3
0 0 1 + a + a + a + ...

1 a a≥2
  
1
L(M) = A + BD ∗ C = [1 0 0]  0 1 a≥1   0  = 1 + a≥2 = L(A)
0 0 a≥0 1
18 / 47
Prezentări matriciale similare

 
→ Ai Bi
Două prezentări matriciale Mi = , pentru i = 1, 2,
ni Ci Di
sunt similare via o relaţie ρ ⊆ [n1] × [n2], notat M1 →ρ M2 , dacă
M1 · (I1 ∗ ρ) = (I1 ∗ ρ) · M2

 
A 0
Cum A ∗ B este , pe componente, similaritatea ı̂nseamnă
0 B
   
A1 B1 ρ A2 B2
= ,
C1 D1 ρ ρC2 ρD2
deci se reduce la
A1 = A2 , B1 ρ = B2 , C1 = ρC2 , D1 ρ = ρD2

19 / 47
Prezentări matriciale similare

Teoremă
Similaritatea conservă limbajul (ı̂n cazul prezentărilor concrete), adică
dacă M1 →ρ M2 , atunci L(M1 ) = L(M2 ).

Dem.:
Exerciţiu!

20 / 47
De la NFA-uri la DFA-uri

Fie dat un NFA A. Putem elimina nedeterminismul din A construind un


DFA D(A) care foloseşte submulţimi de stări (engl. ”power-set
construction”) astfel:
D(A) foloseşte o unică stare iniţială care colectează toate stările
iniţiale din A
O stare este finală ı̂n D(A) dacă conţine o stare finală din A
Pentru o stare s din D(A) şi o literă a, există o unică stare t din
a
D(A) cu s −→ t
această stare t se obţine colectând toate stările din A care se obţin
aplicând tranziţia a pe o stare din s

21 / 47
De la NFA-uri la DFA-uri

Exemplu

Fie A NFA-ul de mai jos: Atunci D(A) este:


a b
a, b
q1 q2 ∅ {q1 }
b
start start b a

b
{q2 } {q1 , q2 } a, b

start

22 / 47
De la NFA-uri la DFA-uri

Teoremă
Fie A un NFA. Există un DFA D(A) şi o relaţie ρ astfel ı̂ncât
D(A) →ρ A.

Dem.:
 
→ A B
Fie reprezentarea matricială a lui A. Automatul D(A)
n C D
are reprezentarea matricială  
→ Ā B̄
2n C̄ D̄
stările sunt elemente ı̂n [2n ] identificate cu submulţimi s ⊆ [n]
componentele matricii D(A) sunt definite astfel:
Ā = A
1 pentru t = tin , unde tin = {j | bj = 1}, altfel 0
b̄t = P
c̄s = {i|i∈s} ci
a a
a ∈ d¯st (ori s −→ t in D̄) dacă t = {j | ex.i ∈ s cu i −→ j in D}
23 / 47
De la NFA-uri la DFA-uri

Dem.: (cont.)
Considerăm relaţia ρ ⊆ [2n ] × [n] definită prin
(s, j) ∈ ρ ddacă j ∈ s.

Este suficient să arătăm că


D(A) →ρ A.


24 / 47
De la NFA-uri la DFA-uri

Exemplu

Fie A NFA-ul de mai jos: Atunci D(A) este:


a b
a, b
q1 q2 ∅ {q1 }
b
start start b a

b
{q2 } {q1 , q2 } a, b

start

25 / 47
De la NFA-uri la DFA-uri

Exemplu (cont.)
 
0 1 1
Reprezentarea matricială a lui A este:  0 a a+b 
1 b b
Notăm ∅, {1}, {2}, {1, 2} cu 1, 2, 3, 4, respectiv.
Atunci reprezentarea matricială a lui D(A) este
 0 0 0 0 1   
0 0
 0 0 0 0 0  1 0 

 0 0 0 b a ρ=
   
0 1 

1 0 0 0 b
 
1 1
1 0 0 0 a+b

Se observă că: 
0 1 1

  0 0 0   
1 0 1 0

D(A) = 0 a a+b = A
 
0 ρ 0 ρ
 1 b b 
1 a+b a+b

26 / 47
De la NFA-uri la DFA-uri

Corolar
L(A) = L(D(A)), deci orice NFA este echivalent cu un DFA.

În practică, spre a evita creşterea numărului de stări, ne restrângem la


partea accesibilă a DFA-ului asociat. Anume:
plecăm din starea iniţială,
construim tranziţiile ei,
contruim tranziţiile noilor stări care apar,
şi asa mai departe, până ce procedura se stabilizează.

27 / 47
Expresii regulate

28 / 47
Expresii regulate

Expresii regulate:
1 0, 1 şi a(∈ V ) sunt expresii regulate
2 dacă E , F sunt expresii regulate, atunci E + F , E · F şi E ∗ sunt
expresii regulate
3 toate expresiile regulate se obţin aplicând 1) şi 2) de un număr finit
de ori

Limbajul specificat de o expresie regulată E , notat |E | (⊆ V ∗ ), se


defineşte inductiv astfel:
|0| = ∅ |1| = {λ}
|a| = {a} |E ∗ | = |E |∗
|E + F | = |E | ∪ |F | |E · F | = |E | · |F |

29 / 47
Algebră regulată

Fie dată o familie dublu-indexată M = (M(m, n), +, ·, ∗, 0m,n , In ) unde


0m,n ∈ M(m, n)
In ∈ M(n, n)
+ : M(m, n) × M(m, n) → M(m, n)
· : M(m, n) × M(n, p) → M(m, p)
∗ : M(n, n) → M(n, n)

30 / 47
Algebră regulată

M = (M(m, n), +, ·, ∗, 0m,n , In ) este semiinel de matrici dacă axiomele


următoare sunt valide (când termenii au sens)

(M(m, n), +, 0m,n ) monoid comutativ


(a + b) + c = a + (b + c), a + 0m,n = 0m,n + a = a, a + b = b + a

(M(m, n), ·, In ) monoid


(a · b) · c = a · (b · c), a · In = Im · a = a

distributivitate
a · (b + c) = (a · b) + (a · c), (a + b) · c = (a · c) + (b · c)

legile lui zero:


0p,m · a = 0p,n , a · 0n,p = 0m,p

Semiinelul este idempotent dacă a + a = a.

31 / 47
Algebră regulată

Axiome pentru repetiţie:


(I) (In )∗ = In
(S) (a + b)∗ = (a∗ · b)∗ · a∗
(P) (a · b)∗ = In + a · (b · a)∗ · b
(Inv) a · ρ = ρ · b ⇒ a∗ · ρ = ρ · b ∗ , unde ρ este o matrice peste 0 şi 1

Toate aceste axiome definesc o teorie Kleene idempotentă


Fără (Inv) obţinem axiomele pentru o teorie Conway idempotentă
Eliminând idempotenţa obţinem noţiunile generale

32 / 47
Algebră regulată

Consecinţe simple (din (I), (S), (P)):


(S1) (a + b)∗ = a∗ (ba∗ ·)
(P1) a∗ = In + aa∗
(P2) b(ab)∗ = (ba)∗ b
(P3) bb ∗ = b ∗ b

33 / 47
Matrici de limbaje ca teorii Kleene

Propoziţie
Axiomele de mai sus sunt valide ı̂n cazul matricilor de limbaje

MP(V ∗ ) (m, n) = {(aij )i∈[m],j∈[n] | aij ⊆ P(V ∗ )}

(cu operaţiile uzuale).

Dem. (schiţă)
Se verifică toate axiomele prin calcul direct.

34 / 47
De la NFA la expresii regulate

 
→ A B
Fie A un NFA cu reprezentarea matricială .
n C D
Atunci L(A) = A + BD ∗ C , dar . . . aceasta nu este o expresie regulată!
Operaţia de stelare se aplică unei matrici.
Problema se reduce la a exprima D ∗ folosind stelare doar pe
componentele lui D.

35 / 47
Stelare de matrici ı̂n teorii Conway

Teoremă (Star de matrici ı̂n teorii Conway idempotente)


Într-o teorie Conway idempotentă
∗  ∗
a + a∗ bwca∗ a∗ bw
 
a b
=
c d wca∗ w

unde w = (ca∗ b + d)∗ .

36 / 47
Stelare de matrici ı̂n teorii Conway

Dem:
1. Avem:
 ∗  
a b 1 
a b )∗

= (
0 0 0
     
1 0 1 1
)∗
   
=P + ( a b a b
0 1 0 0
∗ ∗
 
1+a a a b
=
0 1
 ∗ ∗

a a b
=P1
0 1

2. Analog,  ∗  
0 0 1 0
=
c d d ∗c d∗

37 / 47
Stelare de matrici ı̂n teorii Conway

Dem: (cont.)
3. În final,
 ∗    
a b a b 0 0 ∗
= ( + )
c d 0 0 c d
 ∗   ∗
a b 0 0 a b
=S1 ( )∗
0 0 c d 0 0
 ∗ ∗
a a∗ b

0 0
=
0 1 ca∗ ca∗ b + d
 ∗
a a∗ b
  
1 0
=
0 1 wca∗ w
 ∗
a + a∗ bwca∗ a∗ bw

=
wca∗ w

38 / 47
De la NFA la expresii regulate

Teoremă (Teorema lui Kleene I)


1 Orice limbaj acceptat de un NFA poate fi specificat cu o expresie
regulată.
2 Există o demonstraţie algebrică a acestui rezultat folosind doar
axiomele de teorie Conway idempotentă.

Dem:
 
→ A B
Fie A un NFA cu reprezentarea matricială .
n C D
Atunci L(A) = A + BD ∗ C .

39 / 47
De la NFA la expresii regulate

Dem: (cont.)
Din teorema de mai sus, D ∗ se scrie ca o matrice de expresii
regulate
Dacă π este o permutare, atunci (π −1 Aπ)∗ = π −1 A∗ π (din P2)
Deci extensia stelării de la componente la matrici nu depinde de
ordinea de descompunere aleasă.

Substituim D ∗ ı̂n formula de mai sus şi obţinem o expresie regulată


pentru L(A).
Cum regulile folosite (teorie Comway idempotentă) sunt valide ı̂n
cazul matricilor de limbaje, expresia regulată obţinută specifică
acelaşi limbaj ca şi NFA-ul iniţial. 

40 / 47
De la expresii regulate la NFA

Teoremă (Normalizarea expresiilor regulate)


1 Pentru orice
 expresie
 regulată E există o prezentare matricială
0 B
N(E ) = cu |E | = BD ∗ C .
C D
2 Există o demonstraţie algebrică a acestui rezultat folosind doar
axiomele de teorie Conway idempotentă.

Dem:  
0 B
Pentru M = , notăm L(M) = BD ∗ C .
C D
Funcţia de normalizare N (de la expresii regulate la prezentări matriciale)
se defineşte inductiv astfel:

41 / 47
De la expresii regulate la NFA

Dem: (cont.)
 
0 1
N(0) =
0 0
 
0 1
N(1) =
1 0
 
0 1 0
N(a) =  0 0 a 
1 0 0

42 / 47
De la expresii regulate la NFA

Dem: (cont.)
 
0 Bi
Sumă: dacă N(Ei ) = , pentru i = 1, 2, atunci
Ci Di
 
0 B1 B2
N(E1 + E2 ) =  C1 D1 0 
C2 0 D2
 
0 Bi
Produs: dacă N(Ei ) = , pentru i = 1, 2, atunci
Ci Di
 
0 B1 B1 C1 B2
N(E1 · E2 ) =  C1 B2 C2 D1 D1 C1 B2 
C2 0 D2

43 / 47
De la expresii regulate la NFA

Dem: (cont.)
 
0 B
Stelare: dacă N(E ) = , atunci
C D
 
0 B 1
N(E ∗ ) =  (CB)∗ C (CB)∗ D 0 
1 0 0

44 / 47
De la expresii regulate la NFA

Dem: (cont.)
Arătăm, prin inducţie, că definiţia este corectă, anume L(N(E )) = |E |.
În primul rând, L(N(f )) = f = |f |, pentru f ∈ {0, 1}.
Apoi,
 ∗  
  0 a 0
L(N(a)) = 0+ 1 0
0 0 1
  
  1 a 0
= 0+ 1 0
0 1 1
= 0 + a = a = |a|

45 / 47
De la expresii regulate la NFA

Dem: (cont.)
Pentru sumă avem:
 D1 0 ∗ C1
   

L(N(E1 + E2 )) = 0 + B2 B1
0 D2 C2
 ∗  
  D1 0 C1
= B1 B2
0 D2∗ C2
∗ ∗
= B1 D1 C1 + B2 D2 C2
= L(N(E1 )) + L(N(E2 )) = |E1 | + |E2 | = |E1 + E2 |

Similar pentru produs şi stelare (exercitiu!). 

46 / 47
Pe săptămâna viitoare!

47 / 47

S-ar putea să vă placă și