logo

Gramatică fără context (CFG)

CFG înseamnă gramatică fără context. Este o gramatică formală care este folosită pentru a genera toate modelele posibile de șiruri într-un limbaj formal dat. Gramatica fără context G poate fi definită prin patru tupluri ca:

 G = (V, T, P, S) 

Unde,

G este gramatica, care constă dintr-un set al regulii de producție. Este folosit pentru a genera șirul unei limbi.

T este setul final al unui simbol terminal. Este notat cu litere mici.

ÎN este setul final al unui simbol non-terminal. Este notat cu majuscule.

P este un set de reguli de producție, care este utilizat pentru înlocuirea simbolurilor non-terminale (pe partea stângă a producției) într-un șir cu alte simboluri terminale sau non-terminale (pe partea dreaptă a producției).

orașe din australia

S este simbolul de început care este folosit pentru a deriva șirul. Putem deriva șirul prin înlocuirea în mod repetat a unui non-terminal cu partea dreaptă a producției până când toate non-terminale au fost înlocuite cu simboluri terminale.

Exemplul 1:

Construiți CFG pentru limbajul având orice număr de a peste mulțimea ∑= {a}.

Soluţie:

După cum știm, expresia regulată pentru limba de mai sus este

 r.e. = a* 

Regula de producție pentru expresia regulată este următoarea:

 S → aS rule 1 S → ε rule 2 

Acum, dacă vrem să derivăm un șir „aaaaaa”, putem începe cu simbolurile de pornire.

 S aS aaS rule 1 aaaS rule 1 aaaaS rule 1 aaaaaS rule 1 aaaaaaS rule 1 aaaaaaε rule 2 aaaaaa 

Acolo. = a* poate genera un set de șir {ε, a, aa, aaa,.....}. Putem avea un șir nul deoarece S este un simbol de început și regula 2 dă S → ε.

Exemplul 2:

Construiți un CFG pentru expresia regulată (0+1)*

Soluţie:

site web ca coomeet

CFG poate fi dat de,

 Production rule (P): S → 0S | 1S S → ε 

Regulile sunt în combinația de 0 și 1 cu simbolul de început. Deoarece (0+1)* indică {ε, 0, 1, 01, 10, 00, 11, ....}. În această mulțime, ε este un șir, deci în regulă, putem stabili regula S → ε.

Exemplul 3:

Construiți un CFG pentru o limbă L = unde w € (a, b)*.

Soluţie:

Șirul care poate fi generat pentru o anumită limbă este {aacaa, bcb, abcba, bacab, abbcbba, ....}

funcții în c

Gramatica ar putea fi:

 S → aSa rule 1 S → bSb rule 2 S → c rule 3 

Acum, dacă vrem să derivăm un șir „abbcbba”, putem începe cu simbolurile de pornire.

 S → aSa S → abSba from rule 2 S → abbSbba from rule 2 S → abbcbba from rule 3 

Astfel, oricare din acest tip de șir poate fi derivat din regulile de producție date.

Exemplul 4:

Construiți un CFG pentru limbajul L = anb2nunde n>=1.

Soluţie:

Șirul care poate fi generat pentru o anumită limbă este {abb, aabbbb, aaabbbbbb....}.

Gramatica ar putea fi:

 S → aSbb | abb 

Acum, dacă dorim să derivăm un șir „aabbbb”, putem începe cu simbolurile de pornire.

 S → aSbb S → aabbbb