Gramáticas Regulares

Anuncio
TEMA 5. GRAMÁTICAS REGULARES.
5.1. Gramáticas Regulares.
5.2. Autómatas finitos y gramáticas regulares.
5.2.1. Gramática regular asociada a un AFD
5.2.2. AFD asociado a una Gramática regular
5.3. Expresiones regulares.
5.3.1. Lenguaje de las expresiones regulares.
5.3.2. Álgebra de las expresiones regulares.
5.3.3. Teorema fundamental.
5.4. Autómatas finitos y expresiones regulares.
5.4.1. AFN asociado a una expresión regular
5.4.2. expresión regular asociada a un AF
TALF. Tema5
nº 1
5.1. gramáticas regulares.
Gramáticas
Lenguajes
Máquinas
Sin restricciones o
de Tipo 0
Sin restricciones o
de Tipo 0
Máquina de Turing
Sensible al
contexto o de Tipo
1
Sensible al
contexto o de Tipo
1
Autómata
linealmente
acotado
Libre de contexto
o de Tipo 2
Libre de contexto
o de Tipo 2
Autómata a pila
Regular o de
Tipo 3
Regular o de
Tipo 3
Autómata Finito
TALF. Tema5
nº 2
5.1. gramáticas regulares.

Gramáticas Tipo 3
(Gramáticas regulares o de estado finito)

Sus producciones son de la forma:

Lineal por la derecha:
AaB o Aa, donde A,B N , a T

Lineal por la izquierda:
ABa o Aa, donde A,B N , a T

Se permiten producciones de la forma S

Los lenguajes representados por este tipo de gramáticas se denominan
lenguajes regulares.

Ejemplos:

G1 = ({ 0, 1}, {A, B}, A, { A ::= B1 | 1, B ::= A0}) Gramática lineal por la
izquierda que describe el lenguaje L1 = { 1, 101, 10101, ... } = {1(01)n | n
= 0, 1, 2, ...}

G2 = ({ 0, 1}, {A, B}, A, { A ::= 1B | 1, B ::= 0A}) Gramática lineal
derecha que genera el mismo lenguaje que la gramática anterior.
TALF. Tema5
nº 3
5.1. gramáticas regulares.


1.
Para cada Gramática lineal por la derecha existe una Gramática lineal
izquierda que genera el mismo lenguaje y viceversa.
Algoritmo:
Se transforma la gramática de forma que no haya ninguna regla en cuya parte
derecha esté el axioma. Para lo cual:
1.
2.
3.
2.
Se crea un grafo G dirigido:
1.
2.
3.
4.
3.
Se intercambian las etiquetas del axioma y .
Se invierte la dirección de todos los arcos.
Se transforma en un conjunto de reglas:
1.
2.
3.

 A N  {} se crea un nodo.
 producción (A::=aB) P se crea un arco etiquetado con a que va del nodo A al B.
 producción (A::=a) P se crea un arco etiquetado con a que va del nodo A al  (F).
Si  S::= se crea un arco sin etiqueta que va del nodo del axioma al nodo .
Se crea otro grafo G´a partir de G:
1.
2.
4.
Se crea un nuevo S´ N
 regla S::=x (con S axioma y x *) se crea una nueva regla S´::=x.
Cada regla A::=xSy, se transforma en A::=xS´y.
 nodo, se crea un símbolo no terminal excepto para el nodo .
 arco etiquetado con a que va del nodo A al nodo B N {}, se crea una
producción A::=Ba.
Si  un arco del nodo del axioma al nodo  se crea una regla S::=.
El algoritmo para el paso inverso es similar al descrito.
TALF. Tema5
nº 4
5.1. gramáticas regulares.

Ejemplo: Gramática lineal derecha:
G1 = ({ 0, 1}, {A, B}, A, { A::=1B | , B::=0A, B::=0})
1.
Se transforma la gramática para que no haya regla como: B::=0A
1.
2.
3.
4.
Se
Se
Se
Se
crea un nuevo A´
crean las reglas A´::=1B |  .
crea la regla B::=0A´.
borra la regla B::=0A.
La Gramática resultante es:
G11 = ({ 0, 1}, {A, B, A´}, A, { A::=1B | , A´::=1B |  , B::=0A´, B::=0})

Se elimina A´::=  quedando:
G12 = ({ 0, 1}, {A, B, A´}, A, { A::=1B | , A´::=1B, B::=0A´, B::=0})
TALF. Tema5
nº 5
5.1. gramáticas regulares.
G12 = ({ 0, 1}, {A, B, A´}, A, { A::=1B | , A´::=1B, B::=0A´, B::=0})
1.
Se crea un grafo G que representa
las transiciones de esta gramática.
1
2.
Se crea el grafo G´invirtiendo G:
A
1
B
0
B
0
0
1
A´

1

A´
0
A
3. Se transforma en un conjunto de reglas, en la Gramática lineal por la
izquierda equivalente:
G2 = ({ 0, 1}, {A, B, A´}, A, { A ::= B0 | , A´::= B0, B ::= A´1, B::=1})
TALF. Tema5
nº 6
5.1. gramáticas regulares.


1.
2.
3.
4.
Para cada Gramática lineal por la izquierda existe una Gramática lineal
derecha que genera el mismo lenguaje y viceversa.
Algoritmo:
Se transforma la gramática de forma que no haya ninguna regla en cuya parte
derecha esté el axioma. Para lo cual:
1. Se crea un nuevo S´ N
2.  regla S::=x (con S axioma y x *) se crea una nueva regla S´::=x.
3. Cada regla A::=xSy, se transforma en A::=xS´y.
Se crea un grafo G dirigido:
1.  A N  {F} se crea un nodo.
2.  producción (A::=Ba) P se crea un arco etiquetado con a que va del nodo A al
B.
3.  producción (A::=a) P se crea un arco etiquetado con a que va del nodo A al
F.
4. Si  S::= se crea un arco con etiqueta  que va del nodo del axioma al nodo F.
Se crea otro grafo G´a partir de G:
1. Se intercambian las etiquetas del axioma y F.
2. Se invierte la dirección de todos los arcos.
Se transforma en un conjunto de reglas:
1.  nodo, se crea un símbolo no terminal excepto para el nodo F.
2.  arco etiquetado con a que va del nodo A al nodo B  N {F}, se crea una
producción A::=aB.
3. Si  un arco etiquetado con  del nodo del axioma al nodo F se crea una regla
S::=.
TALF. Tema5
nº 7
5.1. gramáticas regulares.

Ejemplo: Gramática lineal izquierda:
G1 = ({ 0, 1}, {A, B}, A, { A::=B1 | 1 , B::=A0})
1.
Se transforma la gramática para que no haya regla como: B::=A0
1. Se crea un nuevo A´
2. Se crean las reglas A´::=B1 | 1
3. Se crea la regla B::=0A´0
4. Se borra la regla B::=A0
La Gramática resultante es:
G11 = ({ 0, 1}, {A, B, A´}, A, { A::=B1 | 1, A´::=B1 | 1 , B::=A´0})
2.
Grafo G para las transiciones
de la gramática.
B
1
A
1
F
1
1
3.
Se crea el grafo G´invirtiendo G:
F
0
A´
1
A
B
1
1
1
0
A´
4. Se transforma en las reglas, de la Gramática lineal por la derecha equivalente:
G2 = ({ 0, 1}, {A, B, A´}, A, { A ::= 1A´ | 1 , A´::= 0B, B ::= 1A´ | 1})
TALF. Tema5
nº 8
5.2. Autómatas finitos y gramáticas regulares.
5.2.1. Gramática regular asociada a un AFD

Si L es aceptado por un AFD entonces L puede generarse
mediante una gramática regular.

Sea M=(Q,  ,f,q0,F), la gramática regular equivalente es
aquella definida como G=(Q, , P, q0), donde P viene
dado por:

Si f(q,a)=p entonces añadir a P la producción qap.

Si f(q,a)=p y pF entonces añadir a P la producción qa.

Si q0F entonces añadir a P la producción q0
TALF. Tema5
nº 9
5.2. Autómatas finitos y gramáticas regulares.


Ejemplo: De AFD a Gramática regular:
Dado un lenguaje regular L reconocido por un AFD M=(Q,  ,f,q0,F), se
puede obtener una gramática regular G=(N , T, S, P), que genere el
mismo lenguaje de la siguiente forma:

N =Q



T = 
S=q0
P={(q,ap)|f(q,a)=p}{(q0,)|p,q0F}
Ej.- Considera el siguiente DFA que acepta el lenguaje a*b:
a
 q0


b
q1
a,b
a,b
q2
La gramática será:
 q0  aq0|bq1|b
 q1  aq2|bq2
 q2  aq2|bq2
TALF. Tema5
nº 10
5.2. Autómatas finitos y gramáticas regulares.
5.2.2. AFD asociado a una Gramática regular

Si L es un lenguaje generado por una gramática regular,
entonces existe un AFD que lo reconoce:

Sea la gramática regular G=(N , T ,P , S), se construye
el AFND- equivalente como M=(N {F}, T ,f,S,{F}),
donde f viene dado por:

Si AaB entonces f(A,a)=B

Si Aa entonces f(A,a)=F

Si S  entonces f(S, )=F

F es un “nuevo” símbolo no terminal.

Convertir el AFND-  obtenido a un AFD.
TALF. Tema5
nº 11
5.2. Autómatas finitos y gramáticas regulares.



Ejemplo: De Gramática regular a AFN:
Dado un lenguaje regular L generado por una gramática regular G=(N ,
T, S, P) , se puede obtener un AFD M=(Q,  ,f,q0,F) que reconozca el
mismo lenguaje de la siguiente forma:

Q= N {F},


 =T
q0 =S
Ej.- Considera la siguiente gramática:
 S  aS|b que acepta el lenguaje a*b:
El AFD equivalente:
a
S
TALF. Tema5
b
F
nº 12
5.3. Expresiones regulares.




Las expresiones regulares son una notación especial que se utiliza
habitualmente para describir los lenguajes de tipo regular.
La notación más utilizada para especificar patrones son las
expresiones regulares, sirven como nombres para conjuntos de
cadenas.
Los usos más habituales de las expresiones regulares son en la
creación de analizadores léxicos para compiladores, en la búsqueda de
patrones dentro de los editores de texto, en la descripción de redes
neuronales y circuitos electrónicos, etcétera.
En las expresiones regulares pueden aparecer símbolos de dos tipos:


Símbolos base: son los del alfabeto del lenguaje que queremos describir, λ
para describir la palabra vacía y ∅ para describir un lenguaje vacío.
Símbolos de operadores: „+‟ o unión, „.‟ o concatenación y „*‟ para la
clausura. En ocasiones se utiliza para la unión el símbolo „|‟ y el punto se
omite en la concatenación de expresiones regulares.
TALF. Tema5
nº 13
5.3.1. Lenguaje de las expresiones regulares.


El lenguaje de las expresiones regulares se construye de forma inductiva a partir
de símbolos para expresiones regulares elementales y operadores.
Expresiones regulares
Dado un alfabeto  y los símbolos:  (lenguaje vacío),  (palabra vacía),
·(concatenación), + (unión), *(clausura), se cumple:

Los símbolos  y  son expresiones regulares.

Cualquier símbolo a  es una expresión regular.

Si u y v son expresiones regulares, entonces, u+v, uv, u* y v* son expresiones
regulares.
Sólo son expresiones regulares las que se pueden obtener aplicando un número
finito de veces las reglas anteriores.
Se establece la siguiente prioridad en las operaciones:
1. Paréntesis ( )
2. Clausura *
3. Concatenación ·
4. Unión +

A cada expresión regular le corresponde un lenguaje regular:
Si α= , L(α) = 
Si α=  , L(α) = { }.
Si α=a, a  , L(α) = {a}
Si α y β son dos expresiones regulares entonces:
L(α+β) = L(α) L(β)
L(αβ) = L(α)L(β)
L(α*) = L(α)*

TALF. Tema5
nº 14
5.3.1. Lenguaje de las expresiones regulares.

Definiciones regulares



Son nombres dados a las expresiones regulares.
Una definición regular es una secuencia de definiciones de la forma:
d1  r1
d2  r2
…..
dn  rn
Donde cada di es un nombre distinto y cada ri una expresión regular sobre los
símbolos del alfabeto  {d1, d2,..,dn}
Ejemplo:definición regular para identificadores en Pascal:
letra A|B|…|Z|a|b|…|z
digito 0|1|…|9
id letra(letra|digito)*


Abreviaturas en la notación

Uno o más casos: operador unitario posfijo +

Cero o un caso: operador unitario posfijo ?

Clases de caracteres: [abc]
Ejemplos:
digitos digito+
Exponente_opcional  (E(+|-)?digitos)?
TALF. Tema5
nº 15
5.3.1. Lenguaje de las expresiones regulares.
 Ejemplo, sobre el alfabeto Σ= {a,b } , podemos definir
las siguientes expresiones regulares:
TALF. Tema5
Expresión Regular
Lenguaje
ab
{ab}
a +∅
{a}
(a+b)*a
Σ*{a}
a+ λ
{λ,a}
b*ab*
{bnabm/n,mN}
a*
{λ,a,aa,aaa…}
nº 16
5.3.2. Álgebra de las expresiones regulares.

Propiedades de la Unión:
 asociativo: α+ (β+γ ) = (α+β ) +γ
 conmutativo: α+β=β+α
 elemento neutro la expresión vacía:  + α = α +  =α
 idempotente: α+α =α

Propiedades de la concatenación:
 asociativo: α (βγ ) = (αβ )γ
 no es conmutativo: αβ≠ βα
 elemento neutro la expresión lambda: λα=αλ=α
 Tiene como elemento anulador la expresión vacía: α =α = 
 distributivo respecto al operador de unión: α (β+γ ) =αβ+αγ

Propiedades de la clausura:
 λ*=λ

 *=λ
 α *=λ+ αα*
 αα*=α*α
 (α*+β*)* = (α+β )*
 (α+β)* = (α*β*)*
TALF. Tema5
nº 17
5.3.3. Teorema fundamental.

El Teorema servirá para describir mediante una expresión regular el
lenguaje reconocido por un autómata.

El objetivo del teorema fundamental es resolver sistemas de
ecuaciones en el dominio de las expresiones regulares que tienen la
forma siguiente: X=αX+β

El teorema se divide en dos partes que nos permiten obtener la
solución a esta ecuación en los casos en que λL(α) y aquellos en los
que λ∉L(α) , respectivamente.

Regla General:


Teorema. Sean α y β dos expresiones regulares de forma que
λL(α). En estas condiciones, la solución a la ecuación
X=αX+β es de la forma X=α*(β+γ ) en donde γ representa
cualquier expresión regular.
Regla de Inferencia:

Teorema. Sean α y β dos expresiones regulares de forma que
λ∉ L(α). En estas condiciones,
X=αX+β  X=α*β
TALF. Tema5
nº 18
5.4. Autómatas finitos y expresiones regulares.

Todo lenguaje definido por un autómata finito (AFD, AFND) es también
definido por una expresión regular.

Todo lenguaje definido por una expresión regular es definido por un
autómata finito.
TALF. Tema5
AFND-
AFND
ER
AFD
nº 19
5.4.1. AFN asociado a una expresión regular
 Cada lenguaje definido por una expresión regular
es también definido por un autómata finito.
 La demostración es inductiva sobre el número de
operadores de α (+, . *).
 Base.- (cero operadores)

Α puede ser , , a, donde a T
Expresión regular α


a
TALF. Tema5
Autómata

a
nº 20
5.4.1. AFN asociado a una expresión regular

Inducción.- (uno o más operadores en α)
 Suponemos que se cumple la hipótesis para expresiones
regulares de menos de n operadores.
 Por hipótesis existen dos AF M1 y M2 tal que que acepta
el mismo lenguaje L(M1)=L(α1 ) y L(M2)=L(α2 ) donde:
M1
 q1
TALF. Tema5
M2
f1
 q2
f2
nº 21
5.4.1. AFN asociado a una expresión regular
 Suponemos que tenemos una expresión regular α con n
operadores.
 Vamos a construir el autómata M tal que L(M)=L(α).
 Distinguimos tres casos correspondientes a las tres
formas posibles de expresar α en función de otras
expresiones regulares con menos de n operadores :
1. α = α1 + α2
tal que op(α1), op(α2) < n
2. α = α1 . α2
tal que op(α1), op(α2) < n
3. α = (α1)*
tal que op(α1) = n-1
TALF. Tema5
nº 22
5.4.1. AFN asociado a una expresión regular
1.
α = α1 + α2
tal que op(α1), op(α2) < n
 A partir de M1 y M2 construimos otro autómata M (la
unión), el autómata que acepta el mismo lenguaje
es:

q1
M1
f1

q0
f0

q2
TALF. Tema5
M2
f2

nº 23
5.4.1. AFN asociado a una expresión regular
2.
α = α1 . α2
tal que op(α1), op(α2) < n
 A partir de M1 y M2 construimos otro autómata M (la
concatenación), el autómata que acepta el mismo
lenguaje es:
q1
TALF. Tema5
M1
f1

q2
M2
f2
nº 24
5.4.1. AFN asociado a una expresión regular
3.
α = (α1)*
tal que op(α1) = n-1
 A partir de M1 construimos otro autómata M (la
clausura), el autómata que acepta el mismo
lenguaje es:

q0


q1
M1
f1
f0

TALF. Tema5
nº 25
5.4.1. AFN asociado a una expresión regular
Ejemplo: AF construído para la expresión regular 01* + 1:

M1 representa el autómata para la expresión regular 0
M2 representa el autómata para la expresión regular 1*
M3 representa el autómata para la expresión regular 1
En el Autómata final se integran simultáneamente los autómatas para la
concatenación (0 con 1*) y la suma de expresiones regulares 01* + 1




0
q1
q2
M1
q5
1
q7


q3


q0
TALF. Tema5
q1
0 q  q 
1
2
5
q3


q6
q8
M3

1

q4
q7 1
q8


q4
M2
q6

f0
nº 26
5.4.2. expresión regular asociada a un AFD

Si L es un lenguaje aceptado por un autómata finito M entonces existe
una expresión regular  tal que L = L(M) = L().





Podemos suponer que el autómata finito M no tiene -transiciones. Si
las tuviera, podemos encontrar autómata equivalente sin -transiciones
Sea M = (Q, , f, q0, F). A partir de su diagrama de transición podemos
obtener un sistema de ecuaciones de expresiones regulares
(ecuaciones características del autómata):
 A cada nodo qi le corresponde una ecuación y cada estado se
puede considerar como una incógnita xj de la ecuación.
 La ecuación para el estado qi tiene en el primer miembro el estado
qi, xi, y en el segundo miembro una suma de términos, de forma
que por cada arco del diagrama de la forma qi →qj tenemos un
a
término axj .
 Si el estado qi es final, añadimos el termino a al segundo miembro.
 Si el estado q0 es final, añadimos el termino  al segundo miembro
para x0.
Cada incógnita para qi, xi,representa el conjunto de palabras que
llevan de qi a un estado final.
Resolviendo el sistema de las ecuaciones tendremos soluciones de la
forma xi = i, donde i es una expresión regular sobre el alfabeto 
El lenguaje descrito por esta expresión regular es:
L(i) = {w  ∗ | (qi,w) ⊢∗ (qF , ) , qF  F}
(1)
TALF. Tema5
nº 27
5.4.2. expresión regular asociada a un AFD


El método para obtener una expresión regular  a partir de un AF es el
siguiente:
1.
Obtener las ecuaciones características del autómata.
2.
Resolver el sistema de ecuaciones
3.
 ← solución para el estado inicial.
Para comprobar que es válido hay que probar que se cumple (1) para
toda solución xi = i del sistema de ecuaciones, y en particular la
solución para el estado inicial es la expresión regular correspondiente
al autómata

No es necesario resolver todas las incógnitas, sólo necesitamos
despejar la incógnita correspondiente al estado inicial x0.
TALF. Tema5
nº 28
5.4.2. expresión regular asociada a un AFD

0
Ejemplo. Sea el AF:
 q0


Ecuaciones características:
1. x0= 0x0+ 1x1+1
2.
x1= 0x0+ 1x2
3.
x2= 0x2+ 1x1+1
1
0
0
1
q1
1
q2
Resolvemos aplicando la regla de inferencia X=αX+β  X=α*β

x2= 0*(1x1+1)=0*1x1+0*1
Sustituyendo en (2): x1= 0x0+ 10*1x1+10*1=(10*1)*(0x0+ 10*1)=
=(10*1)*0x0+ (10*1)*10*1

Sustituyendo en (1):

comenzando por la ecuación (3) :
x0= 0x0+ 1[(10*1)*0x0+ (10*1)*10*1]+1= 0x0+ 1(10*1)*0x0+
1(10*1)*10*1+1= (0+ 1(10*1)*0)x0+ 1(10*1)*10*1+1=
(0+1(10*1)*0)*(1(10*1)*10*1+1)=
= (0+1(10*1)*0)*1[(10*1)*(10*1)+ ]=
=(0+1(10*1)*0)*1(10*1)* expresión regular que describe el lenguaje L(M).
(aplicando las propiedades:(ab*b+a )=a(b*b+)=ab*)
TALF. Tema5
nº 29
Descargar