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