Requisito previo: autómatas pushdown , aceptación de autómatas pushdown por estado final
Problema – Diseñar un PDA no determinista para aceptar el lenguaje L = { | m,n ≥ 1}, es decir,
L = {abcc, aabccc, abbbcccc, aaabbccccc, ......}
En cada una de las strings, la suma total del número de ‘a’ y ‘b’ es igual al número de c. Y todas las c vienen después de ‘a’ y ‘b’.
Explicación – Aquí, necesitamos mantener el orden de a, b y c. Es decir, todas las a vienen primero y luego todas las b vienen después de todas las c. Por lo tanto, necesitamos una pila junto con el diagrama de estado. La pila mantiene el recuento de a, b y c. Tomaremos 2 alfabetos de pila:
= { a, z }
Donde, = conjunto de todo el alfabeto de pila z = símbolo de inicio de pila
Enfoque utilizado en la construcción de PDA: como queremos diseñar un NPDA, cada vez que ‘a’ viene antes que ‘b’ y ‘b’ viene antes que ‘c’. Cuando aparezca ‘a’, empújelo en la pila y si vuelve a aparecer ‘a’, también empújelo. Después de eso, cuando aparezca ‘b’, inserte ‘a’ en la pila y, si vuelve a aparecer ‘b’, también empújelo. Y luego, cuando aparezca la ‘c’, saque una ‘a’ de la pila cada vez. Entonces, al final, si la pila se vacía, podemos decir que la PDA acepta la string.
Funciones de transición de pila –
(q0, a, z) (q0, az)(q0, a, a) (q0, aa)(q0, b, a) (q1, aa)(q1, b, a) (q1, aa) (q1, c, a) (q2, )(q2, c, a) (q2, )(q2, , z) (qf, z)
Donde, q0 = Estado inicial qf = Estado final = indica operación pop
Publicación traducida automáticamente
Artículo escrito por SUDIPTADANDAPAT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA