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 = {a 2m b 3m | m ≥ 1}, es decir,
L = {aabbb, aaaabbbbbb, aaaaaabbbbbbbbb, aaaaaaaabbbbbbbbbbbb, ......}
En cada una de las strings, por cada 2 ‘a’ hay 3 ‘b’.
Explicación:
aquí, debemos mantener el orden de a y b. Es decir, todas las a vienen primero y luego todas las b. Por lo tanto, necesitamos una pila junto con el diagrama de estado. La pila mantiene el recuento de a y b. Aquí, tenemos 3 ‘b’s por cada 2 ‘a’s. Tomaremos 2 alfabetos de pila:
= {a, z} Where, = set of all the stack alphabet z = stack start symbol
Enfoque utilizado en la construcción de PDA:
como queremos diseñar un NPDA, cada vez que ‘a’ viene antes de ‘b’. Introduciremos tres ‘a’ en la pila durante dos dos ‘a’ consecutivos y, de nuevo, para las siguientes dos ‘a’, introduciremos tres ‘a’ en la pila. Es decir, para la primera ‘a’ no haremos nada, solo cambiará el estado y para la siguiente ‘a’ haremos la operación de empujar y de manera similar realizamos esto alternativamente, es decir,
para dos a empujamos tres ‘a’
para cuatro b empujamos seis ‘a’
Después de eso, cuando aparece ‘b’, sacamos 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) (q1, z) [ Indicates no operation only state change ] (q1, a, z) (q2, aaaz) [ Indicates push operation for alternate 'a'] (q2, a, aaaz) (q1, aaaz) [ Indicates no operation only state change ] (q1, a, aaaz) (q2, aaaa) [ Indicates push operation for alternate 'a'] (q2, b, a) (q3, ) [Indicates pop operation ] (q3, b, a) (q3, ) [Indicates pop operation ] (q3, , z) (qf, z )
Donde, q0 = Estado inicial
qf = Estado final
= indica operación emergente
Diagrama de transición correcto-
Publicación traducida automáticamente
Artículo escrito por SUDIPTADANDAPAT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA