View
7
Download
0
Category
Preview:
Citation preview
TALF. Tema5 nº 1
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º 2
5.1. gramáticas regulares.
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
Gramáticas Lenguajes Máquinas
TALF. Tema5 nº 3
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:
AaB o Aa, donde A,B N , a T
Lineal por la izquierda:
ABa o Aa, 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º 4
5.1. gramáticas regulares.
Para cada Gramática lineal por la derecha existe una Gramática lineal izquierda que genera el mismo lenguaje y viceversa.
Algoritmo:
1. 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.
2. Se crea un grafo G dirigido:
1. A N {} se crea un nodo.
2. producción (A::=aB) 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 sin etiqueta que va del nodo del axioma al nodo .
3. Se crea otro grafo G´a partir de G:
1. Se intercambian las etiquetas del axioma y .
2. Se invierte la dirección de todos los arcos.
4. Se transforma en un conjunto de reglas:
1. nodo, se crea un símbolo no terminal excepto para el nodo .
2. arco etiquetado con a que va del nodo A al nodo B N {}, se crea una producción A::=Ba.
3. 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º 5
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. Se crea un nuevo A´
2. Se crean las reglas A´::=1B | .
3. Se crea la regla B::=0A´.
4. Se 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º 6
5.1. gramáticas regulares.
1. Se crea un grafo G que representa las transiciones de esta gramática.
2. Se crea el grafo G´invirtiendo G:
A´ A
01
B0
1
A´
A
1
B0
1
0
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})
G12 = ({ 0, 1}, {A, B, A´}, A, { A::=1B | , A´::=1B, B::=0A´, B::=0})
TALF. Tema5 nº 7
5.1. gramáticas regulares.
Para cada Gramática lineal por la izquierda existe una Gramática lineal derecha que genera el mismo lenguaje y viceversa.
Algoritmo:1. 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.
2. 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.
3. 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.
4. 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º 8
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 | 13. Se crea la regla B::=0A´04. 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.
A´
A
F
01
B
1
1
1
1
3. Se crea el grafo G´invirtiendo G:
A´
F
A
01
B
1
1
1
1
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º 9
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 qap.
Si f(q,a)=p y pF entonces añadir a P la producción qa.
Si q0F entonces añadir a P la producción q0
TALF. Tema5 nº 10
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,q0F}
Ej.- Considera el siguiente DFA que acepta el lenguaje a*b:
La gramática será: q0 aq0|bq1|b q1 aq2|bq2
q2 aq2|bq2
q0 q1q2
a
b a,ba,b
TALF. Tema5 nº 11
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 AaB entonces f(A,a)=B
Si Aa 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º 12
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:
S F
a
b
TALF. Tema5 nº 13
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º 14
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(α)*
5.3.1. Lenguaje de las expresiones regulares.
TALF. Tema5 nº 15
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)?
5.3.1. Lenguaje de las expresiones regulares.
TALF. Tema5 nº 16
5.3.1. Lenguaje de las expresiones regulares.
Ejemplo, sobre el alfabeto Σ= {a,b } , podemos definir las siguientes expresiones regulares:
Expresión Regular Lenguaje
ab {ab}
a +∅ {a}
(a+b)*a Σ*{a}
a+ λ {λ,a}
b*ab* {bnabm/n,mN}
a* {λ,a,aa,aaa…}
TALF. Tema5 nº 17
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º 18
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º 19
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.
AFND- AFND
ER AFD
TALF. Tema5 nº 20
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 α Autómata
a a
TALF. Tema5 nº 21
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:
q1 f1
M1
q2 f2
M2
TALF. Tema5 nº 22
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º 23
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:
M1
M2
q1
q2
f0q0
f1
f2
TALF. Tema5 nº 24
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:
M1 M2q1 q2 f2f1
TALF. Tema5 nº 25
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:
M1q1 f0q0
f1
TALF. Tema5 nº 26
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
M1
q1
0q2
M3
q7
1q8
M2
1q3 q6q5
q4
1
q1
q7f0
q0
q6
q8
q20
q5 q3 q4
1
TALF. Tema5 nº 27
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 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)
a
TALF. Tema5 nº 28
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º 29
5.4.2. expresión regular asociada a un AFD
Ejemplo. Sea el AF:
q0 q1 q2
0
1 1 0
0 1 Ecuaciones características:
1. x0= 0x0+ 1x1+1
2. x1= 0x0+ 1x2
3. x2= 0x2+ 1x1+1
Resolvemos aplicando la regla de inferencia X=αX+β X=α*β
comenzando por la ecuación (3) : 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):
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*)
Recommended