2.lenguajes Regulares y Expresiones Regulares

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 80

fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Lenguajes regulares
Luis M. Estrada
[email protected]

20 de febrero de 2019
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Agenda

• Lenguajes Regulares
• Expresiones Regulares

Luis M. [email protected]—Short title@—20 de febrero de 2019@


2/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Lenguajes Regulares
Definición
Un lenguaje L ⊆ Σ∗ es regular si se puede generar a
partir de los lenguajes básicos ∅, {λ}, {σ} (donde
σ ∈ Σ) mediante las operaciones de unión,
concatenación y cerradura.
Definición recursiva
• ∅, {λ} son lenguajes regulares.
• Si σ ∈ Σ entonces {σ} es regular.
• Si L, L1 , L2 son regulares entonces L1 ∪ L2 ,
L1 · L2 y L∗ son regulares.
• Son todos.
Luis M. [email protected]—Short title@—20 de febrero de 2019@
3/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos
Cualquier lenguaje finito es regular.

En efecto si L = {w1 , ..., wn } ⊆ Σ∗ podemos


construir L a partir de la unión de Li = {wi } para i
desde 1 hasta n. Es decir:

L = L1 ∪ L2 ∪ ... ∪ Ln

Cada lenguaje Li es regular puesto que a su vez si


wi = a1 ...aki
con aj ∈ Σ entonces Li = {a1 }{a2 }...{aki } y cada
{aj } es regular por definición.
Luis M. [email protected]—Short title@—20 de febrero de 2019@
4/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos

Sobre el alfabeto Σ = {a, b} tenemos los siguientes


lenguajes regulares infinitos:

• L1 = {w ∈ Σ∗ | w empieza con a} = {a}{a, b}∗


• L2 = {w ∈ Σ∗ | w tiene exactamente una b} =
{a}∗ {b}{a}∗
• L3 = {w ∈ Σ| w contiene la subcadena aa} =
{a, b}∗ {aa}{a, b}∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


5/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos
Sobre el alfabeto Σ = {a, b} tenemos los siguientes
lenguajes regulares infinitos:

• L4 = {w ∈ Σ| w tiene exactamente dos bes} =


{a}∗ {b}{a}∗ {b}{a}∗
• L5 = {w ∈ Σ∗ | w tiene un número par de as} =
{b}∗ ∪ ({b}∗ {a}{b}∗ {a}{b}∗ )∗

Importante
No todo lenguaje infinito es regular

Luis M. [email protected]—Short title@—20 de febrero de 2019@


6/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares

La notación conjuntista vista anteriormente para ex-


presar lenguajes regulares se puede simplificar, lo cual
da lugar a una notación conocida como expresiones
regulares.

Una expresión regular (ER) es una expresión alge-


bráica para especificar lenguajes regulares.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


7/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares

En otras palabras, una expresión regular es un una


expresión algebráica que captura la forma que tienen
todas las cadenas de un lenguaje regular particular.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


8/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares

Formalmente una expresión regular se define recursi-


vamente como sigue:
Definición
• ∅ es una expresión regular.
• λ es una expresión regular.
• Si σ ∈ Σ entonces σ es una expresión regular.
• Si α y β son expresiones regulares entonces αβ,
α + β y α∗ , (α) son expresiones regulares.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


9/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos
Algunas ER con el alfabeto {a, b, c} son:
• λ

• a

• b

• c

• a+b

• a·c

• b∗

• (a + b)∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


10/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Precedencia de los operadores

En ER los operadores se aplican en el siguiente orden:

1 ()
2 ∗ cerradura.
3 · concatenación.
4 + unión

Luis M. [email protected]—Short title@—20 de febrero de 2019@


11/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Precedencia de los operadores

Por ejemplo, si tenemos la ER b · a∗ + a · b

Entonces se interpreta como (b · (a)∗ ) + (a · b)

y no como ((b · a)∗ + a) · b

Luis M. [email protected]—Short title@—20 de febrero de 2019@


12/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

ER y Lenguajes asociados

Toda expresión regular α tiene asociado un lenguaje


al que denotaremos como L(α):
• L(∅) = ∅

• L(λ) = {λ}

• L(σ) = {σ}

• L(α + β) = L(α) ∪ L(β)

• L(α · β) = L(α)L(β)

• L(α∗ ) = L(α)∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


13/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos
•L(λ) = {λ}
• L(a) = {a}

• L(b) = {b}

• L(c) = {c}

• L(a + b) = L(a) ∪ L(b) = {a} ∪ {b} = {a, b}

• L(a · b) = L(a) · L(b) = {a} · {b} = {ab}

• L(b ∗ ) = L(b)∗ = λ, b, bb, bbb, ...

• L((a + b)∗ ) = (L(a + b))∗ = {a, b}∗


={λ, a, b, aa, ab, ba, bb, aab, abb, ...}
Luis M. [email protected]—Short title@—20 de febrero de 2019@
14/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


15/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Solución: abc

Luis M. [email protected]—Short title@—20 de febrero de 2019@


16/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Solución: abc

Luis M. [email protected]—Short title@—20 de febrero de 2019@


17/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Solución: abc(de)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


18/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Solución: abc(de + λ)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


19/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una expresión regular para el lenguaje


{abcdefg , abcde, abc}

Solución: abc(de(fg + λ) + λ)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


20/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L1 = {w ∈ Σ∗ | w empieza con a}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


21/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L1 = {w ∈ Σ∗ | w empieza con a}

Solución:

L1 = {a}({a} ∪ {b})∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


22/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L1 = {w ∈ Σ∗ | w empieza con a}

Solución:

L1 = {a}({a} ∪ {b})∗ = L(a(a + b)∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


23/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L2 = {w ∈ Σ∗ | w contiene exactamente una b}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


24/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L2 = {w ∈ Σ∗ | w contiene exactamente una b}

Solución:

L2 = {a}∗ {b}{a}∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


25/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L2 = {w ∈ Σ∗ | w contiene exactamente una b}

Solución:

L2 = {a}∗ {b}{a}∗ = L(a∗ ba∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


26/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L3 = {w ∈ Σ| w contiene la subcadena aa}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


27/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L3 = {w ∈ Σ| w contiene la subcadena aa}

Solución:

L3 = ({a} ∪ {b})∗ · {aa} · ({a} ∪ {b})∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


28/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L3 = {w ∈ Σ| w contiene la subcadena aa}

Solución:

L3 = ({a} ∪ {b})∗ · {aa} · ({a} ∪ {b})∗


= L((a+b)∗ aa(a + b)∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


29/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L4 = {w ∈ Σ| w contiene exactamente dos bes}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


30/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L4 = {w ∈ Σ| w contiene exactamente dos bes}

Solución:

L4 = {a}∗ · {b} · {a}∗ · {b} · {a}∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


31/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L4 = {w ∈ Σ| w contiene exactamente dos bes}

Solución:

L4 = {a}∗ · {b} · {a}∗ · {b} · {a}∗ = L(a∗ ba∗ ba∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


32/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L5 = {w ∈ Σ∗ | w contiene un nmero par de aes}

Luis M. [email protected]—Short title@—20 de febrero de 2019@


33/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L5 = {w ∈ Σ∗ | w contiene un nmero par de aes}

Solución:

L5 = {b}∗ ∪ ({b}∗ · {a} · {b}∗ · {a} · {b}∗ )∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


34/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Sea Σ = {a, b}, dar una ER para el lenguaje

L5 = {w ∈ Σ∗ | w contiene un nmero par de aes}

Solución:

L5 = {b}∗ ∪ ({b}∗ · {a} · {b}∗ · {a} · {b}∗ )∗


= L(b∗ + (b ∗ ab ∗ ab ∗ )∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


35/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una ER para las cadenas sobre el alfabeto


{a, b} que contienen al menos una aparición de
cada sı́mbolo.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


36/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplo

Dar una ER para las cadenas sobre el alfabeto


{a, b} que contienen al menos una aparición de
cada sı́mbolo.

Solución:
((a + b)∗ a(a + b)∗ b(a + b)∗ ) + ((a + b)∗ b(a + b)∗ a(a + b)∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


37/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejemplos

Los números naturales en notación decimal:


0+((1+2+3+4+5+6+7+8+9)·(0+1+2+3+4+5+6+7+8+9)∗ )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


38/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejercicio
Considere el alfabeto binario. Damos expresiones regulares
para los siguientes lenguajes.
1 Cadenas 0 o 11 o 101
2 Cadenas solo con ceros
3 Cadenas binarias
4 Cadenas binarias excepto la vacı́a
5 Cadenas que empiezan con 1
6 Cadenas que empiezan y terminan con 1
7 Contiene al menos tres 1’s
Luis M. [email protected]—Short title@—20 de febrero de 2019@
39/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Ejercicio
Soluciones:
1 Cadenas 0 o 11 o 101: 0 + 11 + 101
2 Cadenas solo con ceros: 0∗
3 Cadenas binarias: (0 + 1)∗
4 Cadenas binarias excepto la vacı́a:
(0 + 1)(0 + 1)∗
5 Cadenas que empiezan con 1: 1(0 + 1)∗
6 Cadenas que empiezan y terminan con 1:
1(0 + 1)∗ 1
7 Contiene al menos tres 1’s:
(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗
Luis M. [email protected]—Short title@—20 de febrero de 2019@
40/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Equivalencia de ER

Dos expresiones regulares r1 y r2 se dicen


equivalentes, y se escribe r 1 = r 2, si describen el
mismo lenguaje, es decir, si L(r1 ) = L(r2 )

Luis M. [email protected]—Short title@—20 de febrero de 2019@


41/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la unión (+):

• Asociatividad: (α + β) + γ = α + (β + γ)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


42/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la unión (+):

• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α

Luis M. [email protected]—Short title@—20 de febrero de 2019@


43/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la unión (+):

• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α

Luis M. [email protected]—Short title@—20 de febrero de 2019@


44/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la unión (+):

• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α
• Idempotencia: α + α = α

Luis M. [email protected]—Short title@—20 de febrero de 2019@


45/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la unión (+):

• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α
• Idempotencia: α + α = α
• Si L(α) ⊆ L(β) entonces α + β = β

Luis M. [email protected]—Short title@—20 de febrero de 2019@


46/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la concatenación (·):

• Asociatividad: (αβ)γ = α(βγ)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


47/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la concatenación (·):

• Asociatividad: (αβ)γ = α(βγ)


• Distributividad respecto a +:
α(β + γ) = αβ + αγ

Luis M. [email protected]—Short title@—20 de febrero de 2019@


48/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la concatenación (·):

• Asociatividad: (αβ)γ = α(βγ)


• Distributividad respecto a +:
α(β + γ) = αβ + αγ
• Elemento neutro (λ) : αλ = α

Luis M. [email protected]—Short title@—20 de febrero de 2019@


49/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la concatenación (·):

• Asociatividad: (αβ)γ = α(βγ)


• Distributividad respecto a +:
α(β + γ) = αβ + αγ
• Elemento neutro (λ) : αλ = α
• Elemento nulo (∅): α · ∅ = ∅ · α = ∅

Luis M. [email protected]—Short title@—20 de febrero de 2019@


50/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la concatenación (·):

• Asociatividad: (αβ)γ = α(βγ)


• Distributividad respecto a +:
α(β + γ) = αβ + αγ
• Elemento neutro (λ) : αλ = α
• Elemento nulo (∅): α · ∅ = ∅ · α = ∅
• No es conmutativa: αβ 6= βα

Luis M. [email protected]—Short title@—20 de febrero de 2019@


51/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ

Luis M. [email protected]—Short title@—20 de febrero de 2019@


52/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ

Luis M. [email protected]—Short title@—20 de febrero de 2019@


53/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


54/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


55/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• α∗ = λ + αα∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


56/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


57/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):

• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• (α∗ + β ∗ )∗ = (α∗ β ∗ )∗ = (α + β)∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


58/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Álgebra de expresiones regulares

Propiedades de la cerradura (estrella de Kleene (∗)):


• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• (α∗ + β ∗ )∗ = (α∗ β ∗ )∗ = (α + β)∗
A
veces se usa la notación α+ como abreviación de
αα∗
Luis M. [email protected]—Short title@—20 de febrero de 2019@
59/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER

• Más de una expresión regular para un mismo


lenguaje
• Es posible manipular algebráicamente una ER
para obtener una expresión más simple que
represente el mismo lenguaje
• Si dos expresiones representan el mismo
lenguaje decimos que son equivalentes

Luis M. [email protected]—Short title@—20 de febrero de 2019@


60/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER

Simplificar la expresión aa(b ∗ + a) + a(ab ∗ + aa)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


61/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER

Simplificar la expresión aa(b ∗ + a) + a(ab ∗ + aa)

aa(b ∗ +a) + a(ab ∗ +aa) = aa(b ∗ +a) + aa(b ∗ +a)


(distributividad de ·)

aa(b ∗ +a) + aa(b ∗ +a)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


62/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER

Simplificar la expresión aa(b ∗ + a) + a(ab ∗ + aa)

aa(b ∗ +a) + a(ab ∗ +aa) = aa(b ∗ +a) + aa(b ∗ +a)


(distributividad de ·)

aa(b ∗ +a) + aa(b ∗ +a) = aa(b ∗ +a) (α + α = α)

Luis M. [email protected]—Short title@—20 de febrero de 2019@


63/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


64/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


65/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +

Luis M. [email protected]—Short title@—20 de febrero de 2019@


66/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


67/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.
= b + (λ + aa∗ )ab ∗ + aa∗ b α = αλ y dist.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


68/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.
= b + (λ + aa∗ )ab ∗ + aa∗ b α = αλ y dist.
= b + a∗ ab ∗ + aa∗ b α∗ = λ + αα∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


69/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.
= b + (λ + aa∗ )ab ∗ + aa∗ b α = αλ y dist.
= b + a∗ ab ∗ + aa∗ b α∗ = λ + αα∗
= b + aa∗ b ∗ + aa∗ b α∗ α = αα∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


70/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.
= b + (λ + aa∗ )ab ∗ + aa∗ b α = αλ y dist.
= b + a∗ ab ∗ + aa∗ b α∗ = λ + αα∗
= b + aa∗ b ∗ + aa∗ b α∗ α = αα∗
= b + aa∗ (b ∗ + b) · distribuye a +

Luis M. [email protected]—Short title@—20 de febrero de 2019@


71/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗

a∗ (b + ab ∗ ) = (λ + aa∗ )(b + ab ∗ ) α∗ = λ + αα∗


= b + ab ∗ + aa∗ b + aa∗ ab ∗ · distribuye a +
= b + (ab ∗ + aa∗ ab ∗ ) + aa∗ b conmut. y asoc.
= b + (λ + aa∗ )ab ∗ + aa∗ b α = αλ y dist.
= b + a∗ ab ∗ + aa∗ b α∗ = λ + αα∗
= b + aa∗ b ∗ + aa∗ b α∗ α = αα∗
= b + aa∗ (b ∗ + b) · distribuye a +
= b + aa∗ b ∗ α∗ = α∗ + α

Luis M. [email protected]—Short title@—20 de febrero de 2019@


72/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares extendidas

Existen varias extensiones de las ER. Estas


extensiones tienen mayor poder expresivo y son
ampliamente usadas en contextos prácticos.

Luis M. [email protected]—Short title@—20 de febrero de 2019@


73/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares extendidas

• Operador | en lugar de + para la unión


• El sı́mbolo . significa cualquier caracter excepto
nueva lı́nea.
• La notación [a1 a2 · · · ak ] es una abreviación de
la ER a1 + a2 + · · · + ak
• Rangos: [0 − 9], [A − Za − z0 − 9]
• Clases de caracteres: [[: digit :]] = [0 − 9],
[[: alpha :]] = [A − Za − z]

Luis M. [email protected]—Short title@—20 de febrero de 2019@


74/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares extendidas


• Operador + significa una o más repeticiones.
Por tanto, R+ = RR ∗
• Operador ? significa cero o una repetición. Por
tanto, R? = (λ + R)
• La notación R{n} significa n repeticiones de R.
Ej., (ab){3}
• La notación R{n, m} significa entre n y m
repeticiones de R.
Ej., (ab){2, 4}
• La notación R{n, } significa más de n
repeticiones de R.
Ej., (ab){2}
Luis M. [email protected]—Short title@—20 de febrero de 2019@
75/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Expresiones regulares extendidas

• () Agrupar y capturar
• $1, $2 Capturar subexpresiones después del
match

Luis M. [email protected]—Short title@—20 de febrero de 2019@


76/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Aplicaciones de expresiones
regulares
• Búsqueda y sustitución en editores de texto (vi,
emacs, etc.)
• Caza de patrones (pattern matching) y
procesamiento de textos y minerı́a de datos
(grep, sed, awk, perl, etc.)
• Compiladores (fase de análisis léxico):
fragmentación del programa en elementos
léxicos (palabras reservadas, identificadores,
tipos de datos).
Luis M. [email protected]—Short title@—20 de febrero de 2019@
77/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Aplicación en diseño de
Compiladores
Las expresiones regulares son una herramienta muy
útil en la construcción de compiladores. Objetos
elementales, llamados tokens, tales como nombres
de variables o constantes pueden describirse usando
ER.
Por ejemplo una ER para constantes numéricas:
−?([0 − 9]+ |[0 − 9]+ .[0 − 9]∗ |[0 − 9]∗ .[0 − 9]+ )

O para identificadores (nombres de variables):


[a − zA − Z ][0 − 9a − zA − Z ]∗
Luis M. [email protected]—Short title@—20 de febrero de 2019@
78/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

ER para búsqueda de texto

Búsqueda de patrones en texto. Ejemplo, buscar


nombres de calles en un texto.

(Calle|Av .)( [0 − 9]+)? [A − Z ][a − z] ∗ ( [A −


Z ][a − z]∗)∗

Luis M. [email protected]—Short title@—20 de febrero de 2019@


79/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s

Luis M. [email protected]—Short title@—20 de febrero de 2019@


80/80

También podría gustarte