6.equivalencias Entre ER, GR
6.equivalencias Entre ER, GR
Luis M. Estrada
luism@[Link]
fi-unam
Agenda
• Equivalencia entre GR y AF
• Equivalencia entre AF y ER
Semestre 2019-I
fi-unam
Equivalencia con AF
Teorema: Si B es un lenguaje aceptado por una
autómata finito M, entonces existe una gramática
regular G tal que B = L(G).
Sea M = (Q, Σ, δ q0 , F ) un AFD. Podemos
construir una gramática G = (Q, Σ, R, q0 ) que
genere a B mediante el siguiente método:
• Por cada transición de un estado q a p leyendo
un sı́mbolo a agregamos al conjunto de reglas la
producción p → ap
• Para cada estado final q agregamos la
producción q → λ
Luis M. Estrada[3ex]luism@[Link][3ex] — Lenguajes Formales y Autómatas@—Semestre 2019-I@
5/69
fi-unam
Ejemplo AFD ⇒ GR
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
q0 → aq0
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
q0 → aq0
q0 → bq1
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
q0 → aq0
q0 → bq1
q1 → aq0
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
q0 → aq0
q0 → bq1
q1 → aq0
q1 → bq2
q2 → aq2
q2 → bq2
Luis M. Estrada[3ex]luism@[Link][3ex] — Lenguajes Formales y Autómatas@—Semestre 2019-I@
10/69
fi-unam
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
q0 → aq0
q0 → bq1
q1 → aq0
q1 → bq2
q2 → aq2
q2 → bq2
q2 → λ
Luis M. Estrada[3ex]luism@[Link][3ex] — Lenguajes Formales y Autómatas@—Semestre 2019-I@
11/69
fi-unam
Ejemplo AFD ⇒ GR
a, b
a
a
q1 q2
q0 b
b
Simplificando...
q0 → aq0 | bq1
q1 → aq0 | bq2
q2 → aq2 | bq2 | λ
Luis M. Estrada[3ex]luism@[Link][3ex] — Lenguajes Formales y Autómatas@—Semestre 2019-I@
12/69
fi-unam
a
A → aA | bB
Solución: A
B → aA | bC | b
C → aC | bC | a | b
Solución:
a
A → aA | bB A B
B → aA | bC | b b
C → aC | bC | a | b
Solución:
a
a
A → aA | bB A B
B → aA | bC | b b
C → aC | bC | a | b
Solución:
a
a
A → aA | bB A B C
b
B → aA | bC | b b
C → aC | bC | a | b
Solución:
a
a
A B C
b
b
b
A → aA | bB qf
B → aA | bC | b
C → aC | bC | a | b
Solución:
a a
a
A B C
b
b
b
A → aA | bB qf
B → aA | bC | b
C → aC | bC | a | b
Solución:
a, b
a
a
A B C
b
b
b
A → aA | bB qf
B → aA | bC | b
C → aC | bC | a | b
Solución:
a, b
a
a
A B C
b
b a
b
A → aA | bB qf
B → aA | bC | b
C → aC | bC | a | b
Solución:
a, b
a
a
A B C
b
b a, b
b
A → aA | bB qf
B → aA | bC | b
C → aC | bC | a | b
Idea de la demostración
Demostración ⇒
ER a AF (construcción bottom-up)
Procedemos por casos, si E es alguna de las expresiones regulares
básicas ∅, a, λ, los autómatas que acepta L(E ) son:
• a
• λ
• ∅
ER a AF (construcción bottom-up)
ER a AF (construcción bottom-up)
ER a AF (construcción bottom-up)
• Si E es de la forma R + S entonces el siguiente autómata
reconoce L(E )
ER a AF (construcción
bottom-up)n
• Si E es de la forma R ∗ entonces el siguiente autómata
reconoce L(E )
Ejemplo
Ejemplo
a
λ
λ
b
Ejemplo
Construir un autómata que acepte la expresión regular (a + b)∗ b
λ
a
λ
λ
b
Ejemplo
Construir un autómata que acepte la expresión regular (a + b)∗ b
λ
a
λ
b
λ
b
Ejemplo
Construir un autómata que acepte la expresión regular (a + b)∗ b
λ
a
λ λ
λ b
λ λ
b
ER a AF (top-down)
R
i j
ER a AF (top-down
Dependiendo de la forma de R aplicamos iterativamente alguna de
las siguientes sustituciones hasta que todos los arcos del autómata
estén etiquetados por ER atómicas.
Reemplazar Por
R1 · R2 R1 R2
i j i j k
R1
R1 + R2
i j i R2 j
R
R∗ λ λ
i j i j k
Luis M. Estrada[3ex]luism@[Link][3ex] — Lenguajes Formales y Autómatas@—Semestre 2019-I@
36/69
fi-unam
Ejemplo de conversión ER a AF
(top-down)
(a + ba)∗ bb
0 1
Ejemplo de conversión ER a AF
(top-down)
(a + ba)∗ bb
0 2 1
Ejemplo de conversión ER a AF
(top-down)
a + ba
λ λ bb
0 3 2 1
Ejemplo de conversión ER a AF
(top-down)
λ λ bb
0 3 2 1
ba
Ejemplo de conversión ER a AF
(top-down)
Construir un autómata finito que acepte el lenguaje de la siguiente
expresión regular: (a + ba)∗ bb
λ λ bb
0 3 2 1
a b
4
Ejemplo de conversión ER a AF
(top-down)
Construir un autómata finito que acepte el lenguaje de la siguiente
expresión regular: (a + ba)∗ bb
λ λ b b
0 3 2 1 5
a b
4
Idea de la demostración
Demostración ⇐
Lema de Arden
Ejemplo
b
q0 a q1
q0 = bq1 + aq2 + λ
q1 = aq0
a b a
q2 = bq0
q3 = bq1 + aq1 + aq3 + bq3
q2 q3 a, b
b
Ejemplo
b
q0 a q1
Sistema de ecuaciones:
q0 = aq1 + bq2 + λ
a b a
q1 = q0 a
q2 = q0 b
q3 = q1 b + q1 a + q3 a + q3 b
q2 q3 a, b
b
Ejemplo
b
q0 a q1
Sistema de ecuaciones:
q0 = aq1 + bq2 + λ
a b a
q1 = aq3 + bq0 + ∅
q2 = bq0
q3 = bq1 + aq1 + aq3 + bq3
q2 q3 a, b
b
Ejemplo
b
q0 a q1
Sistema de ecuaciones:
q0 = aq1 + bq2 + λ
a b a
q1 = aq3 + bq0 + ∅
q2 = aq0 + bq3 + ∅
q3 = bq1 + aq1 + aq3 + bq3
q2 q3 a, b
b
Ejemplo
b
q0 a q1
Sistema de ecuaciones:
q0 = aq1 + bq2 + λ
a b a
q1 = aq3 + bq0 + ∅
q2 = aq0 + bq3 + ∅
q3 = aq3 + bq3 + ∅
q2 q3 a, b
b
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Sustituyendo q1 y q2 en (1):
(1)...
q0 = aq1 + bq2 + λ = a(bq0 + ∅) + b(aq0 + ∅) + λ
(2)... q1 = a∅ + bq0 + ∅ = bq0 + ∅
(3)... q2 = aq0 + b∅ + ∅ = aq0 + ∅
(4)... q3 = ∅
Ejemplo
Sustituyendo q1 y q2 en (1):
Ejemplo
Sustituyendo q1 y q2 en (1):
Ejemplo
Factorizando q0 en (1):
Ejemplo
Ejemplo
Simplificando (1):
Ejemplo
Ejemplo 2
a b a, b Sistema de ecuaciones:
Ejemplo 2
a b a, b Sistema de ecuaciones:
Ejemplo 2
a b a, b Sistema de ecuaciones:
Sustituyendo q2 en (2):
Ejemplo 2
a b a, b Sistema de ecuaciones:
Sustituyendo q2 en (2):
Por Arden q1 = b∗ (∅ + λ) = b∗
Ejemplo 2
a b a, b Sistema de ecuaciones:
Sustituyendo q1 en (1):
Ejemplo 2
a b a, b Sistema de ecuaciones:
Sustituyendo q1 en (1):
Conclusión