Buch lesen: "Teoria d'autòmats i llenguatges formals"

Schriftart:

TEORIA D’AUTÒMATS

I LLENGUATGES FORMALS

Educació. Materials 75

Francesc J. Ferri

TEORIA D’AUTOMATSI LLENGUATGES FORMALS

UNIVERSITAT DE VALÈNCIA

2004

Col•lecció: Educació. Materials

Director de la col•lecció: Guillermo Quintas Alonso


Aquesta publicació no pot ser reproduïda, ni totalment ni parcialment, ni enregistrada en, o transmesa per, un sistema de recuperació d’informació, en cap forma ni per cap mitjà, sia fotomecànic, fotoquímic, electrònic, per fotocòpia o per qualsevol altre, sense el permís previ de l’editorial.

© L’autor, 2004

© D’aquesta edició: Universitat de València, 2004

Coberta:

Disseny: Pere Fuster (Borràs i Talens Assessors SL)

Tractament gràfic: Celso Hernandez de la Figuera

Correcció: Pau Viciano

ISBN: 978-84-370-9383-3

Edició digital


Índex

PRÒLEG

SÍMBOLS UTILITZATS

Capítol 1. Llenguatges formals i computació

1.1 Símbols, cadenes i llenguatges

1.1.1 Operacions amb cadenes

1.1.2 Operacions amb llenguatges

1.2 Generació de llenguatges

1.2.1 La jerarquia de Chomsky

1.2.2 Transformació de gramàtiques

1.2.3 Verificació de gramàtiques

1.3 Acceptació de llenguatges i computabilitat

1.4 Exercicis

Capítol 2. Autòmats finits i conjunts regulars

2.1 Tipus d’autòmats finits

2.1.1 Autòmats indeterministes

2.1.2 Autòmats amb transicions buides

2.2 Autòmats finits i llenguatges regulars

2.2.1 Gramàtica equivalent a un autòmat finit

2.2.2 Autòmat equivalent a una gramàtica regular

2.3 Expressions regulars

2.3.1 Conjunts i expressions regulars

2.3.2 Propietats

2.3.3 Equivalències

2.3.4 Càlcul de l’expressió regular equivalent a un autòmat

2.4 Exercicis

Capítol 3. Propietats dels llenguatges regulars

3.1 Lema del bombament

3.1.1 Demostració de la no-regularitat

3.1.2 Problemes de decisió

3.2 Propietats de clausura

3.3 Teorema de Myhill-Nerode

3.3.1 Congruència associada a un llenguatge

3.3.2 Congruència associada a un autòmat

3.3.3 Una altra condició necessària per a la regularitat

3.3.4 Condició suficient per a la regularitat

3.3.5 Conseqüències i aplicacions

3.4 Minimització d’autòmats

3.4.1 Equivalències entre estats

3.4.2 Autòmat associat a la relació d’equivalència

3.4.3 Mètodes gràfics de càlcul de l’autòmat mínim

3.5 Exercicis

Capítol 4. Gramàtiques incontextuals i autòmats amb pila

4.1 Introducció

4.2 Manipulació de gramàtiques incontextuals

4.2.1 Formes normals de Chomsky i Greibach

4.3 Autòmats amb pila

4.3.1 Criteris d’acceptació

4.3.2 Autòmats deterministes i indeterministes

4.4 Relació entre llenguatges incontextuals i autòmats amb pila

4.4.1 Autòmat amb pila equivalent a una gramàtica incontextual

4.4.2 Gramàtica equivalent a un autòmat amb pila

4.4.3 Diferents tipus de llenguatges incontextuals

4.5 Propietats dels llenguatges incontextuals

4.5.1 Lema del bombament per als llenguatges incontextuals

4.5.2 Propietats de clausura

4.5.3 Problemes de decisió

4.6 El problema de l’anàlisi en llenguatges incontextuals

4.6.1 Anàlisi descendent

4.6.2 Anàlisi ascendent

4.7 Exercicis

Capítol 5. La màquina de Turing

5.1 Definició de la màquina de Turing

5.1.1 La màquina de Turing com a acceptor de llenguatges

5.1.2 La màquina de Turing com a model de computació

5.2 Altres tipus de màquines de Turing

5.2.1 La màquina de Turing multipista i multicinta

5.2.2 La màquina de Turing amb cinta semiinfinita

5.2.3 La màquina de Turing modular

5.2.4 Catàleg de màquines modulars

5.2.5 La màquina de Turing indeterminista

5.3 Classes de llenguatges relacionades amb màquines de Turing

5.3.1 Llenguatges acceptats per màquines de Turing

5.3.2 Llenguatges generats per màquines de Turing

5.3.3 La màquina de Turing i la jerarquia de Chomsky

5.3.4 Codificació de màquines de Turing

5.3.5 La màquina de Turing universal

5.3.6 El llenguatge diagonal

5.4 Exercicis

Capítol 6. Resolubilitat

6.1 Resolució de problemes amb màquines de Turing

6.1.1 Funcions computables

6.1.2 Hipòtesi de Church-Turing

6.1.3 Relació entre llenguatges i problemes

6.2 Problemes resolubles i irresolubles

6.2.1 Reducció de problemes

6.2.2 El problema universal

6.3 Decidibilitat d’algunes propietats dels llenguatges recursivament enumerables

6.3.1 El problema del llenguatge buit

6.3.2 El teorema de Rice

6.4 El problema de la correspondència de Post

6.4.1 Enunciat

6.4.2 El problema de Post és indecidible

6.4.3 Problemes irresolubles sobre gramàtiques incontextuals. ...

6.5 El llenguatge de les computacions d’una màquina

6.5.1 Definició

6.5.2 Aplicacions

6.5.3 Altres problemes irresolubles relacionats amb llenguatges incontextuals

6.6 Exercicis

Capítol 7. Introducció a la -completesa

7.1 Problemes tractables i intractables

7.2 Complexitats associades a màquines de Turing

7.2.1 Complexitat espacial i complexitat temporal

7.2.2 Complexitats i classes de llenguatges

7.3 Problemes -complets

7.3.1 Les classes P i

7.3.2 Reducció polinòmica

7.3.3 El teorema de Cook

7.4 Obtenció de problemes -complets

7.4.1 El recobriment exacte

7.4.2 El problema de la motxilla

7.5 Exercicis

Bibliografia

Apèndix A. Conceptes matemàtics preliminars

A.1 Conjunts

A.2 Estructures

A.3 Relacions

A.4 Aplicacions

A.5 Conjunts numerables

Apèndix B. Funcions recursives i computabilitat

B.1 Funcions numèriques i simbòliques

B.2 Aproximació recursiva a la computabilitat

B.2.1 Funcions inicials

B.2.2 Funcions recursives primitives

B.2.3 Funcions computables i no recursives primitives

B.2.4 Funcions p-recursives

B.3 Equivalència amb les funcions Turing computables

B.4 Exercicis

Índex analític

PRÒLEG

El present manual pretén donar una introducció als conceptes que constitueixen la base i els fonaments matemàtics de la computació.

A banda de servir de guia d’una assignatura concreta que s’imparteix de forma molt similar en moltes universitats tant a nivell nacional com internacional, l’objectiu principal a l’hora de proposar i desenvolupar aquest estudi ha estat donar una visió personal i adaptada als temps actuals d’una disciplina aparentment allunyada de la pràctica de la informàtica.

Com reconeixen Hopcroft, Motwani i Ullman en la recent segona edició del seu famós llibre, les coses han canviat en els darrers vint anys i el que abans era una assignatura dels cursos més avançats i amb un caire marcadament matemàtic, ara se sol oferir en segon o tercer curs i amb la intenció (encertada) que són més importants els conceptes i les seues implicacions, que no el formalisme matemàtic emprat. Això no implica de cap manera que els conceptes s’hagen d’impartir (només) informalment. Precisament, en algunes titulacions d’informàtica, aquesta assignatura troncal és l’última gran assignatura teòrica i s’hauria de prendre com una oportunitat per potenciar el formalisme matemàtic i el pensar abans de fer entre els futurs informàtics.

L’organització és molt similar a altres llibres sobre autòmats i llenguatges. El capítol 1 conté una introducció general sobre el tipus d’enfocament que es presenta i introdueix les definicions relatives a símbols, cadenes i llenguatges. Aquest primer capítol i els tres següents es dediquen bàsicament a l’estudi dels llenguatges regulars, els autòmats finits i les expressions regulars, així com a les gramàtiques incontextuals i els seus corresponents acceptors. La major part d’aquests conceptes tenen aplicació directa a l’hora de construir compiladors, dissenyar llenguatges de programació o analitzar i processar cadenes de caràcters.

La resta de capítols, més que aplicacions, tenen conseqüències importantíssimes per entendre com i per què hi ha coses que no es poden calcular (capítols 5 i 6), i que hi ha càlculs que són possibles però no factibles (capítol 7). Al final s’ha inclòs una introducció a les funcions recursives en forma d’apèndix, juntament amb un altre apèndix sobre conceptes matemàtics.

Molts dels exemples i exercicis proposats provenen d’exàmens realitzats en els últims anys i s’ha intentat que cobresquen suficientment la totalitat de la matèria amb diversos graus de dificultat.

Aquest llibre ha estat planificat per ser utilitzat en una assignatura anual de 90 hores lectives i l’únic requisit són alguns coneixements bàsics d’àlgebra i matemàtica discreta.

En algunes universitats (com una alternativa també vàlida) es dóna clarament més pes a la primera part en detriment de la segona, almenys quant a troncalitat. Fins i tot en aquest cas, el present llibre pot fer-se també servir, ja que conté bàsicament tots els conceptes escaients i amb el rigor suficient. Tan sols caldria ampliar lleugerament el nombre d’exemples i problemes i potser ampliar el rigor i l’extensió de les demostracions d’alguns teoremes i les seues conseqüències quant a la primera part.

De ben diverses maneres aquest llibre ha rebut contribucions de moltes persones. De manera especial, i per proximitat acadèmica, de Salva Bayarri i d’Elena Díaz, així com d’Ariadna Fuertes. Alguns comentaris i discussions amb altres companys també han contribuït a donar forma i sentit a aquest llibre. Voldria anomenar Jesús Albert, Salva Moreno, Fernando Barber, Carlos Pérez, Juan Gutiérrez, Vicent Arnau, Gregorio Martín i, en general, tots els companys del Departament d’Informàtica de la Universitat de València. Finalment, voldria citar els companys Encarna Segarra i Pedro García de la Universitat Politècnica de València i també Rafa Carrasco i Mikel Forcada de la Universitat d’Alacant que han tingut l’amabilitat de llegir parts substancials del manuscrit i de comentar amb mi els seus punts de vista.

Burjassot, 25 de juny de 2004

SÍMBOLS UTILITZATS


Relació binària d’equivalència.
Classe d’equivalència de R que conté l’element a.
Conjunt quocient del conjunt A induït per la relació R.
Conjunt potència de A o conjunt parts de A.
Ø Conjunt buit, llenguatge buit.
ɛ Cadena buida.
Símbol blanc.
{ɛ} Llenguatge format per la cadena buida.
Nombres enters: 0, 1, 2,. ..
Congruència associada a un llenguatge L.
Congruència associada a un autòmat A.
Alfabets o vocacularis.
Monoide lliure sobre X.
Quocient (per la dreta) del llenguatge L1 pel llenguatge L2.
a, b, c,... Símbols terminals (en gramàtiques).
X, Y, Z,... Símbols no terminals.
x, y, z,... Cadenes de símbols no terminals.
u, v, w,... Cadenes de símbols terminals.
α, β,... Cadenes de símbols de qualsevol tipus.
q, P Tancament èpsilon d’un estat o d’un conjunt d’estats.
x R Inversió o reflexió de la cadena x.
αβ Producció.
Derivació directa.
Tancament i tancament transitiu de =K
Implicació lògica.
δ Funció de transició.
Moviment.
Computació (tancament transitiu de 1—).
n-equivalència i equivalència entre estats.
Reducció entre problemes.
Reducció polinòmica entre problemes.
Codificació (efectiva) de x.

1. Llenguatges formals i computació

Aquest manual té com a objectiu l’estudi dels llenguatges formals, així com dels seus generadors i acceptors, juntament amb l’estreta relació que hi ha entre els llenguatges formals i la teoria de la computació.

Aquest estudi té una formulació matemàtica molt clara a partir del concepte de símbol, les operacions que s’hi poden definir i les seues propietats. Per això, es dedica aquest capítol introductori a donar les definicions bàsiques relacionades amb els diferents aspectes dels llenguatges formals que es faran servir al llarg de tot el manual. A banda, en l’apèndix A s’ofereix una introducció als conceptes matemàtics més importants que es donaran per suposats.

1.1 Símbols, cadenes i llenguatges

Considerarem un conjunt finit i no buit de símbols que anomenarem alfabet o vocabulari. Per exemple {a, b, c}, {0,1,2,3,4,5,6,7,8,9}o { } serien alfabets vàlids. El conjunt de tots els nombres enters1 no seria un alfabet vàlid.

Podem definir un símbol com una etiqueta o una entitat que no té, en principi, cap significat i que és indivisible. Una cadena (de símbols), també anomenada mot o paraula, és una successió finita de símbols d’un alfabet determinat.

Per exemple, aaabbba, 1024 i 2, serien exemples de cadenes sobre cada un dels alfabets anteriors.

Cada cadena de símbols té associada una longitud, que es defineix com el nombre de símbols que formen una cadena. Les cadenes anteriors tenen longitud 7, 4 i 3, respectivament. Escriurem la longitud d’una cadena x com a |x|.

Estendrem la notació per referirnos al nombre de símbols d’un cert tipus que conté una cadena. Així, si x és una cadena sobre ∑ i A és un subconjunt de ∑, |x|A representa el nombre de símbols del conjunt A que conté x. Per al cas particular que A només continga un simbol, a, escriurem |x|a en lloc de |x|{a}. Per exemple, si x = aaabbba és una cadena sobre {a, b, c}, |x|a = 4, |x|b = 3, |x|c = 0, i |x|{a, b} = |x| = 7.

Si anomenem P(∑) el conjunt de totes les possibles cadenes sobre un determinat alfabet3, podem definir certes operacions internes dins d’aquest, la més important de les quals és la concatenacio.

Siguen x i y dues cadenes sobre un determinat alfabet £, anomenem concatenacio de x amb y la cadena resultant de juxtaposar les dues cadenes (x a l’esquerra i y a la dreta), i la representem com x · y o simplement com a xy.

Es pot demostrar fàcilment que el conjunt P(∑) amb la operació • té estructura de monoide i, per tant, també de semigrup. L’element neutre d’aquest conjunt respecte de la concatenacio (que ho és per l’esquerra i per la dreta) és una cadena especial que no té cap símbol, anomenada cadena buida o cadena nul·la, i que escriurem en aquest manual4 com a ε.

Diem que una cadena y és prefix d’una altra cadena x si i només si existeix alguna cadena z tal que x = yz.

Diem que una cadena y és sufix d’una altra cadena x si i només si existeix alguna cadena z tal que x = zy.

Diem que una cadena y és factor (o infix o subcadena) d’una altra cadena x si i només si existeixen cadenes z i t tals que x = zyt.

Els prefixos i sufixos són casos particulars de factors. Es parla de factors (prefixos o sufixos) propis quan aquests són diferents de la cadena buida i de la cadena a que es refereixen.

Anomenem factorització de x una descomposició de la cadena x en un nombre finit de factors, x = y1 · y1 ··· yk.

Siga un determinat alfabet ∑, anomenem llenguatge tot conjunt de cadenes sobre ∑.

Alguns exemples de llenguatges sobre els alfabets anteriors serien


La talla o grandària d’un llenguatge, L, és la cardinalitat o nombre de cadenes corresponent, que escriurem com a |L| normalment. Les talles de cada un dels llenguatges que acabem de donar com a exemple serien ∞, 3 i 2, respectivament. Una forma més rigorosa d’expressar el primer d’aquests llenguatges és


Sobre qualsevol alfabet, hi ha sempre dos llenguatges especials que reben el nom de llenguatge buit i llenguatge format per la cadena buida i que s’escriuen com a ∅ i {ε}, respectivament.

Aquests dos llenguatges són els elements neutres dins del conjunt de tots els possibles llenguatges respecte a les operacions unió i concatenació de llenguatges5, respectivament.

Es pot demostrar que, respecte a aquestes dues operacions, el conjunt de tots els possibles llenguatges té estructura de monoide commutatiu o abelià i de monoide, respectivament.

Donat un alfabet ∑ qualsevol, s’hi suposa donada una relació d’ordre total que origina el que s’anomena ordenació alfabètica. A partir d’aquesta es pot definir una ordenació lexicogràfica o ordenació canònica del conjunt P(∑), que consisteix a ordenar-ne les cadenes de menor a major longitud i, dins d’una mateixa longitud, ordenar-les per ordre alfabètic6.

Aquesta ordenació del conjunt P(∑) fa que es puga establir una correspondència biunívoca o bijecció entre aquest conjunt i els nombres naturals, la qual cosa implica que P(∑) és sempre un conjunt numerable.

1.1.1 Operacions amb cadenes

A banda de la concatenació, es poden definir altres operacions amb cadenes.

Es defineix la potència i-èsima d’una cadena x com la concatenació de x amb ella mateixa i vegades. S’escriu


Es considera, per definició, que x0 = e.

La potència admet també una definició recursiva:


Compleix les propietats següents:

La inversió, revers o reflexió d’una cadena, que escriurem com a xR, és una altra cadena formada pels mateixos simbols però en ordre invers.


La inversió també admet la definició recursiva següent:


1.1.2 Operations amb llenguatges

Com que els llenguatges són conjunts (de cadenes), s’hi poden aplicar totes les operacions usuals sobre conjunts, com ara la unió, la intersecció, el complement i la resta. Aquestes operacions, les escriurem com a


A més a més, les operacions amb cadenes es poden estendre al cas de llenguatges, de la mateixa manera que s’ha fet amb la concatenació.

En general, donada qualsevol operació interna m-ària amb cadenes, O, la seua extensió a llenguatges és donada per


A banda, hi ha altres operacions especifiques amb llenguatges.

El quocient de dos llenguatges, L1 i L2, és donat pels prefixos d’aquelles cadenes de L1 que es poden factoritzar com el mateix prefix seguit d’un sufix en L2.


L’operació quocient també es pot definir per a cadenes:


Per exemple, abc/c = ab i abc/ac no està definit.

Aquesta operació també s’anomena quocient per la dreta i es pot veure com la inversa de la operació concatenació per la dreta.

La extensió a llenguatges es pot dur a terme com a quocient entre un llenguatge i una cadena


i també com a quocient entre dos llenguatges


Aquesta darrera definició és equivalent a la primera que s’ha donat.

Per exemple, si L1 = {an | n ≥ 0 i L2= {an bm | n, m ≥ 0}, aleshores L1/a = L1, L2//b = L2 i L2//a = L1.

De la mateixa manera es poden definir també els quocients per l’esquerra entre cadenes o llenguatges. En alguns textos els quocients entre z i y per la dreta i per l’esquerra s’escriuen com a zy–1 i y–1z, respectivament.

El quocient per l’esquerra entre una cadena x i un llenguatge L, x–1 L, s’anomena derivada de L respecte de x i està format pels anomenats sufixos de x en L (també de vegades bons finals de x en L).

Per exemple, està format per cadenes de zero o més símbols b perqué són les úniques que afegides a ab estàn en

Anomenem substitució una funció que a cada símbol d’un alfabet ∑ li fa correspondre un llenguatge sobre un altre alfabet .

Matemàticament,


La substitució s’estén trivialment a cadenes. Donada una cadena, la substitució que s’hi aplique donarà com a resultat la concatenació de les substitucions sobre cada un dels seus símbols.

Perquè tinga sentit, cal definir la substitució sobre la cadena buida, que ha de donar lògicament la cadena buida.

Escrivint-ho recursivament:


També ho podem escriure com


Les substitucions s’estenen també trivialment per a llenguatges de la manera següent:

Un cas particular de substitució és l’homomorfisme7 que és una substitució en la qual es compleix que a tot símbol de ∑ li correspon (com a màxim) una única cadena de . És a dir, h: *. Normalment escriurem les substitucions com a f i els homomorfismes com a h.

Considerem com a exemple una substitució entre els alfabets {0,1} i {a, b, c} donada per


Aleshores es compliria que


Donat un homomorfisme h: , anomenem homomorfisme invers de la cadena y, i ho escrivim com a h–1(y), el conjunt de cadenes de ∑* tals que transformades per h donen y. És a dir,


També es pot definir l’homomorfisme invers d’un llenguatge quasi de la mateixa manera.


Considerem com a exemple el llenguatge i l’homomorfisme donat per h(0) = ab, h (1) = b, h(2) = a, h(3) = cc. Aleshores es compleix que


Per a tot homomorfisme sempre es compleix que


i també


Per a l’exemple anterior es té que


És important adonar-se que la propietat anterior no es compleix si intercanviem l’ordre d’aplicacio de l’homomorfisme i l’invers. Seguint amb el mateix exemple, tenim que



Si de l’anterior definició s’exclou el terme L0, s’obté l’anomenat tancament positiu:


Si, abusant de la notació, considerem l’alfabet E com un llenguatge finit format per cadenes de longitud 1, podem escriure


Aquests dos conjunts reben el nom de monoide lliure i semigrup lliure engendrats per E. D’ara endavant utilitzarem aquests noms i la notació ∑* i ∑+ per referirnos a aquests conjunts.

En el context de la teoria de llenguatges formals només tenen importància els llenguatges que són infinits. Fins i tot dins d’aquests, els més importants són els que defineixen les cadenes que hi pertanyen en funció d’una certa estructura dins de les cadenes.

1.2 Generació de llenguatges

En el context de la teoria de llenguatges formals només tenen importància els llenguatges que són infinits. Fins i tot dins d’aquests, els més importants són els que defineixen les cadenes que i ertanyen en funció d’una certa estructura dins de les cadenes.

Un exemple d’aquest tipus de llenguatge és el que està format per aquelles cadenes sobre l’alfabet ∑ex = {x, +, *, (, )} que són expressions aritmètiques vàlides (ben parentitzades). És a dir,


Encara que és ben clar quin és aquest llenguatge, no pot ser definit d’una forma compacta (amb una descripció finita) de la mateixa manera que s’ha fet en els exemples anteriors.

Una forma de definir aquest tipus de llenguatges és mitjançant una definició recursiva. Un mecanisme que permet introduir definicions recursives en el context de cadenes de símbols és donat pels sistemes de reescriptura, un cas particular dels quals són les gramàtiques.


Els elements de l’alfabet no terminal, VN, s’anomenen símbols no terminals, símbols auxiliars o, simplement, variables de la gramàtica.

Una producció α → ß significa que la cadena a es pot reescriure com a ß(es pot canviar l’una per l’altra). Ens referirem a α i a β com les parts esquerra i dreta de la producció, respectivament. Per representar de forma compacta diverses produccions amb la mateixa part esquerra escriurem


en lloc de


Diem que una cadena y deriva directament d’una cadena x segons una gramàtica G, i ho escrivim com a si i només si , de forma que

Diem que una cadena y deriva d’una cadena x segons una gramàtica, i ho escrivim com a si i només si x = y o si existeix una seqüència finita de paraules tal que

Si, pel context, està clar a quina gramàtica ens estem referint, suprimirem la referència a la gramàtica ∈ en el símbol ⇒.

Les cadenes de V que es poden derivar a partir de l’axioma reben el nom de formes sentencials de G. Si, a més a mes, són cadenes exclusivament de Vt es diu que són sentències de G.


Per exemple, el llenguatge Lex és generat per la gramàtica


on P és


Un exemple de derivació amb aquesta gramàtica seria


En aquest exemple hem subratllat en cada forma sentencial els símbols no terminals sobre els quals s’aplica la producció següent (la producció que s’aplica és òbvia per inspecció de la cadena derivada).


Es pot demostrar mitjançant un argument purament numèric i relativament senzill que hi ha llenguatges que no són generats per cap gramàtica. La demostració consisteix a mostrar que el conjunt de totes les gramàtiques sobre un determinat alfabet és numerable (atès que una gramàtica és una descripció finita), mentre que el conjunt de tots els possibles llenguatges sobre el mateix alfabet (igual que el conjunt potència de qualsevol conjunt infinit) és no numerable8.

1.2.1 La jerarquia de Chomsky

Es pot distingir entre quatre tipus de gramàtiques d’acord amb la forma de les productions.

tipus 0 o també gramàtiques estructurades per frases o gramàtiques sense restrictions. Les productions no tenen cap tipus de restricció additional.

tipus 1 o també gramàtiques sensibles al context o gramàtiques contextuals.Les produccions han de ser necessàriament de la forma


on x iy són cadenes de V*, β és una cadena de V+ i A és qualsevol símbol no terminal. El prefix x i el sufix y de la part esquerra (i dreta) de cada producció rep el nom de context.

tipus 2 o també gramàtiques de context lliure, gramàtiques independents del context o gramàtiques incontextuals9. Les produccions han de ser de la forma

A a

on A és qualsevol símbol no terminal i a és qualsevol cadena de V*.

tipus 3 o també gramàtiques regulars. Les produccions han de ser de la forma