0% encontró este documento útil (0 votos)
24 vistas24 páginas

3.1.expresiones Regulares

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 24

Lenguajes

Formales

Expresiones
Regulares

Ing. Fabiana Aragón


Expresiones Regulares
Las ER 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.
Expresiones Regulares
En las expresiones regulares pueden aparecer símbolos de
dos tipos:

▪ Símbolos base: son los símbolos 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.
Lenguajes de las Expresiones Regulares

El lenguaje de las ER 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 que:

✓ 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, u.v, u* y v* son
expresiones regulares.
Lenguajes de las Expresiones Regulares

Sólo son expresiones regulares las que se pueden obtener


aplicando las reglas anteriores un número finito de veces.

Se establece la siguiente prioridad en las operaciones:

1. Paréntesis ( )
2. Clausura *
3. Concatenación ·
4. Unión +
Lenguajes de las Expresiones Regulares
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(α))*
• L((α)) = L(α)

Ejemplo: sobre el alfabeto Σ = { a, b }, podemos definir las siguientes expresiones


regulares:
Expresiones Regulares Lenguaje
ab { ab }
a+∅ {a}
(a+b)*a { an bm a / n, m  N }
a+λ {λ,a}
b*ab* { bn abm /n, m  N }
a* { λ, a, aa, aaa, … }
Lenguajes de las Expresiones Regulares
Propiedades de la Unión:
• Asociativa: α+ (β+γ ) = (α+β ) +γ
• Conmutativa: α+β=β+α
• Elemento neutro la expresión → vacío: + α = α +  =α
• Idempotente: α+α =α

Propiedades de la concatenación:
• Asociativa: α (βγ ) = (αβ )γ
• No es conmutativa: αβ≠ βα
• Elemento neutro la expresión → lambda: λα=αλ=α
• Tiene como elemento anulador la expresión → vacío:  α =α  = 
• Distributiva respecto al operador de unión: α (β+γ ) =αβ+αγ

Propiedades de la clausura:
• λ*=λ
•  *=λ
• α *=λ+ αα*
• αα*=α*α
• (α*+β*)* = (α+β )*
• (α+β)* = (α*β*)*
Teorema de Kleene
Kleene enuncio dos teoremas que permiten demostrar la
equivalencia entre E.R y A.F, en cuanto a que los dos
representan de una forma u otra Lenguajes Regulares.
Los teoremas son:
▪ Teorema de Análisis: Todo lenguaje aceptado por un AF es regular.
▪ Teorema de Síntesis: Todo lenguaje regular es aceptado por un AF.
Teorema de Kleene: Solución al Teorema de
Análisis
Teorema de Análisis: para demostrar que a partir de un AF se puede obtener el
lenguaje que este acepta y que es regular.
Ecuación característica o fundamental.
1. Se define xi como el conjunto de palabras que permiten pasar desde el estado qi a
un estado final.
2. Si qi  F → λ  xi , ya que  q  Q, q  f(q, λ). También,
Si qi  F → λ no tiene porque estar en xi
3. Si f(qi , a) = qj  F, entonces el símbolo a debe pertenecer a xi
4. Si f(qi , a) = qj , entonces la concatenación en la entrada del símbolo a, xj (conjunto
de cadenas que permiten pasar desde qj a un estado final) debe estar en xi (conjunto
de cadenas que permiten transitar desde qi a un estado final). Así axj  xi
Teorema de Kleene: Solución al Teorema de
Análisis
5. Para cada estado qi se puede definir el denominado sistema de ecuaciones de
conjunto lineales por la derecha que se calcula como:

Donde:
λ qi  F
(según 2) Ci =  qi  F

(según 4) Dij = { a   / f(qi, a) = qj }


Teorema de Kleene: Solución al Teorema de
Análisis
6. Una forma alternativa de definir este sistema de ecuaciones consiste en utilizar
las definiciones 3 y 4 donde solo se cambia el conjunto Ci de la siguiente manera:

si i=0 y q0  F
Ci = {a / f(qi, a) = qj  F }  λ
 en caso contrario

•Si el estado qj es final, añadimos el termino a


•Si el estado q0 es final, añadimos el termino λ para x0
Teorema de Kleene: Solución al Teorema de
Análisis
7. Una vez que se obtienen los sistemas de ecuaciones para cada estado,
se debe intentar resolver las ecuaciones de cada estado, de manera que
tenga la forma xi = Axi + B donde λ  A, xi  B que es a lo que se
denomina ecuaciones características. Para cada estado en el que se
tenga despejado xi la solución es xi =A * B. Nota: Al efecto de que se
cumpla λ  A, lo mas sencillo es eliminar las transiciones λ del
autómata, cuando sea no determinista.

8. Cuando se calcule el valor de x0 (ecuación característica del estado


inicial), esta E.R. es la que describe el lenguaje aceptado por el autómata.
Teorema de Kleene. Solución al Teorema de Análisis
Ejemplo: Sea el AFD

Se crea las ecuaciones características para cada estado:


x0= 0x0+ 1x1+1 (1)
x1= 0x0+ 1x2 (2) NOTA: Utilizamos la forma
x2= 0x2+ 1x1+1 (3) alternativa del punto 6
Teorema de Kleene. Solución al Teorema de Análisis
Resolvemos aplicando la regla de inferencia
X=αX+β  X=α*β
comenzando por la ecuación (3):
x2= 0x2+ 1x1+1
x2= 0*(1x1+1)
x2 = 0*1x1+0*1 (4)

Sustituyendo (4) en (2)


x1= 0x0+ 1x2
x1= 0x0+ 1(0*1x1+0*1)
x1= 0x0+ 10*1x1+10*1) Reordenando los términos

x1 =10*1x1+ 0x0 +10*1


x1 =(10*1)*(0x0+ 10*1)
x1 = (10*1)*0x0+ (10*1)*10*1 (5)
Teorema de Kleene. Solución al Teorema de
Análisis
Sustituyendo (5) en (1):
x0= 0x0+ 1x1+1
x0= 0x0+ 1[(10*1)*0x0+ (10*1)*10*1]+1
x0 = 0x0+ 1(10*1)*0x0+ 1(10*1)*10*1+1
x0 =(0+ 1(10*1)*0)x0+ 1(10*1)*10*1+1 Reordenando los términos

x0 =(0+1(10*1)*0)*(1(10*1)*10*1+1) Aplicamos la regla de inferencia:


X=αX+β  X=α*β

x0 = (0+1(10*1)*0)*1[(10*1)*(10*1)+ λ] Aplicamos las propiedades:


(ab*b+a )=a(b*b+λ)=ab*)

x0 =(0+1(10*1)*0)*1(10*1)* Expresión regular que describe el lenguaje L(A).


Teorema de Kleene: Solución al problema
de Síntesis
Existen 2 algoritmos para pasar de una E.R., que representa a un L.R., a un
autómata que reconozca dicho lenguaje.
1° Algoritmo: es el que asocia a cada regla de descripción de una E.R, un
autómata que la reconoce. El problema es que se generan autómatas muy
grandes y es necesario luego minimizarlos para poder trabajar con ellos

2° Algoritmo: esta basado en el concepto de derivada.


Teorema de Kleene: Solución al problema de
Síntesis
Algoritmo Recursivo: asocia a cada E.R. un autómata que
reconoce el lenguaje descrito por dicha E.R.
Teorema de Kleene: Solución al problema de
Síntesis
α= α1+ α2
A partir de M1 y M2 construimos otro autómata A(la unión), el autómata que
acepta el mismo lenguaje es:
Teorema de Kleene: Solución al problema de
Síntesis
α= α1. α2
A partir de M1y M2construimos otro autómata A(la concatenación), el autómata
que acepta el mismo lenguaje es:
Teorema de Kleene: Solución al problema de
Síntesis
α= (α1)*
A partir de M1 construimos otro autómata A(la clausura), el autómata que acepta
el mismo lenguaje es:
Teorema de Kleene: Solución al problema de
Síntesis
Ejemplo: AF construido para la expresión regular 01* + 1:

M1 representa el autómata para la expresión regular 0


Teorema de Kleene: Solución al problema de
Síntesis
Ejemplo: AF construido 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*


Teorema de Kleene: Solución al problema de
Síntesis
Ejemplo: AF construido 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


Teorema de Kleene: Solución al problema de
Síntesis
Ejemplo: AF construido para la expresión regular 01* + 1:
0: 1*:

1:

En el Autómata final se integran los


autómatas para:
• la concatenación (0 con 1*)
• y la suma de expresiones regulares 01* + 1

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy