Ierarhia Chomsky

Acest articol sau această secțiune are bibliografia incompletă sau inexistentă.
Puteți contribui prin adăugarea de referințe în vederea susținerii bibliografice a afirmațiilor pe care le conține.

Ierarhia Chomsky este o ierarhie de incluziune a claselor de gramatici formale care generează limbaje formale. Ierarhia acestor gramatici, numite și gramatici de structură a frazelor, a fost descrisă de Noam Chomsky în 1956 (vezi bibliografia).

Gramatici formale

O gramatică formală constă dintr-o mulțime finită de simboluri terminale (literele cuvântului din limbajul formal), o mulțime finită de simboluri neterminale, o mulțime finită de reguli de producție care au o parte stângă și una dreaptă, ambele constând dintr-un cuvânt format din aceste două tipuri de simboluri, și un simbol de start. O regulă se poate aplica unui cuvânt prin înlocuirea părții stângi cu cea dreaptă. O derivare reprezintă o succesiune de aplicări ale regulilor de producție. O astfel de gramatică definește limbajul formal al tuturor cuvintelor constând numai din simboluri terminale la care se poate ajunge printr.o derivare din simbolul de start.

Neterminalii sunt în general reprezentați prin litere mari, terminalii prin litere mici, și simbolul de start prin S {\displaystyle S} . De exemplu, gramatica cu terminalii { a , b } {\displaystyle \{a,b\}} , neterminalii { S , A , B } {\displaystyle \{S,A,B\}} , regulile de producție

S A B S {\displaystyle S\rightarrow ABS}
S ϵ {\displaystyle S\rightarrow \epsilon } (unde ϵ {\displaystyle \epsilon } este șirul vid)
B A A B {\displaystyle BA\rightarrow AB}
B S b {\displaystyle BS\rightarrow b}
B b b b {\displaystyle Bb\rightarrow bb}
A b a b {\displaystyle Ab\rightarrow ab}
A a a a {\displaystyle Aa\rightarrow aa}

și simbolul de start S {\displaystyle S} , definește limbajul tuturor cuvintelor de forma a n b n {\displaystyle a^{n}b^{n}} (adică n {\displaystyle n} copii ale lui a {\displaystyle a} urmate de n {\displaystyle n} copii ale lui b {\displaystyle b} ). Următoarea gramatică definește un limbaj similar: Terminalii { p , q } {\displaystyle \{p,q\}} , Neterminalii { S } {\displaystyle \{S\}} , Simbolul de start S {\displaystyle S} , Regulile de producție

S p S q {\displaystyle S\rightarrow pSq}
S ϵ {\displaystyle S\rightarrow \epsilon }

Ierarhia

Ierarhia Chomsky constă din următoarele nivele:

  • Gramaticile de tip 0 (gramatici nerestricționate) includ toate gramaticile formale. Ele generează exact toate limbajele care pot fi recunoscute de o mașină Turing. Aceste limbaje sunt cunoscute și sub numele de limbaje recursiv enumerabile. De notat că acestea sunt diferite de limbajele recursive care pot fi decise de o mașină Turing care se oprește întotdeauna
  • Gramaticile de tip 1 (gramatici dependente de context) generează limbaje dependente de context. Aceste gramatici au reguli de forma α A β α γ β {\displaystyle \alpha A\beta \rightarrow \alpha \gamma \beta } cu A {\displaystyle A} neterminal și α {\displaystyle \alpha } , β {\displaystyle \beta } și γ {\displaystyle \gamma } șiruri de terminali și neterminali. Șirurile α {\displaystyle \alpha } și β {\displaystyle \beta } pot fi vide, dar γ {\displaystyle \gamma } trebuie să fie nevid. Regula S ϵ {\displaystyle S\rightarrow \epsilon } este permisă dacă S {\displaystyle S} nu apare în partea dreaptă a vreunei reguli. Limbajele descrise de aceste gramatici sunt exact toate limbajele care pot fi recunoscute de o mașină Turing nedeterministă a cărei bandă este limitată de o constantă înmulțită cu lungimea intrării.
  • Gramaticile de tip 2 (gramatici independente de context) generează limbaje independente de context. Acestea sunt definite ca reguli de forma A γ {\displaystyle A\rightarrow \gamma } cu A {\displaystyle A} neterminal și γ {\displaystyle \gamma } un șir de terminali și neterminali. Aceste limbaje sunt exact toate limbajele care pot fi recunoscute de un automat cu stivă nedeterminist. Limbajele independente de context constituie baza teoretică a majorității limbajelor de programare.
  • Gramaticile de tip 3 (gramatici regulate) generează limbaje regulate. O astfel de gramatică restrânge regulile la un singur neterminal pe partea stângă și o parte dreaptă constând dintr-un singur terminal, care poate fi urmat (sau precedat, dar nu ambele în aceeași gramatică) de un singur neterminal. Regula S ϵ {\displaystyle S\rightarrow \epsilon } este și ea permisă dacă S {\displaystyle S} nu apare în partea dreaptă a vreunei reguli. Aceste limbaje sunt exact toate limbajele care pot fi decise de un automat finit. În plus, această familie de limbaje formale poate fi obținută cu ajutorul expresiilor regulate. Limbajele regulate sunt utilizate în general pentru a căuta șabloane și în structura lexicală a limbajelor de programare.

De notat că mulțimea gramaticilor care corespund limbajelor recursive nu este membră a acestei ierarhii.

Toate limbajele regulate sunt și independente de context, toate limbajele independente de context sunt și limbaje dependente de context și toate limbajele dependente de context sunt și recursive și toate limbajele recursive sunt și recursiv enumerabile. Acestea sunt toate incluziuni stricte, adică există limbaje recursiv enumerabille care nu sunt recursive, limbaje recursive care nu sunt dependente de context, limbaje dependente de context care nu sunt independente de context și limbaje independente de context care nu sunt regulate.

Următoarea tabelă rezumă fiecare din cele patru tipuri de gramatici ale lui Chomsky, clasele de limbaje pe care le generează, tipul de automat care le recunoaște și forma regulilor de producție.

Gramatică Limbaj Automat Reguli de producție
Recursiv enumerabile limbaje recursiv enumerabile mașină Turing Nici o restricție
Dependentă de context limbaje dependente de context mașină Turing nedeterministă limitată liniar α A β α γ β {\displaystyle \alpha A\beta \rightarrow \alpha \gamma \beta }
Independentă de context limbaje independente de context automat cu stivă nedeterminist A γ {\displaystyle A\rightarrow \gamma }
Regulată limbaje regulate automat finit cu stări A a {\displaystyle A\rightarrow a} si

sau A a B {\displaystyle A\rightarrow aB}
ori A B a {\displaystyle A\rightarrow Ba}

Bibliografie

  1. Noam Chomsky: Three models for the description of language, IRE Transactions on Information Theory, 2 (1956), pages 113-124
  2. Noam Chomsky: On certain formal properties of grammars, Information and Control, 1 (1959), pages 91-112

Alte legături

  • http://www.staff.ncl.ac.uk/hermann.moisl/ell236/lecture5.htm