NPDA por aceptar el lenguaje L = {am bn cp dq | m+n=p+q; m,n,p,q>=1}

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^m b^n c^p d^q| m + n = p + q : m, n, p, q>=1}, es decir,

L = {abcd, abbcdd, abbccd, abbbccdd, ......}

En cada string, el número total de ‘a’ y ‘b’ es igual al número total de ‘c’ y ‘d’.

Explicación –
Aquí, necesitamos mantener el orden de ‘a’, ‘b’, ‘c’ y ‘d’. Por lo tanto, necesitamos una pila junto con el diagrama de estado. La pila mantiene el recuento de ‘a’, ‘b’, ‘c’ y ‘d’. Tomaremos 2 alfabetos de pila:

\Gamma = { 1, z } 

Donde,
\Gamma= 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’, ‘b’, ‘c’ y ‘d’ aparecerán en el orden correcto. Cuando aparezcan ‘a’ y ‘b’, empujaremos ‘1’ a la pila. Después de eso, cuando aparezcan ‘c’ y ‘d’, saque ‘1’ 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 –

\delta(q0, a, z) \vdash (q0, 1z)
\delta(q0, a, 1) \vdash (q0, 11)
\delta(q0, b, 1) \vdash (q1, 11)
\delta(q1, b, 1) \vdash (q1, 11)
\delta(q1, c, 1) \vdash (q2, \epsilon)
\delta(q2, c, 1) \vdash (q2, \epsilon)
\delta(q2, d, 1) \vdash (q3, \epsilon)
\delta(q3, d, 1) \vdash (q3, \epsilon)
\delta(q3, \epsilon, z) \vdash (qf, z)     
        

Donde, q0 = Estado inicial
qf = Estado final
\epsilon= indica operación emergente

Entonces, este es nuestro PDA no determinista requerido para aceptar el lenguaje L = { a^m b^n c^p d^q| metro + norte = pag + q ; m, n, p, q>=1}.

Publicación traducida automáticamente

Artículo escrito por SUDIPTADANDAPAT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *