No tuve tiempo de escribir esto antes, pero encontré una respuesta. Aquí esta lo que hice:
Deje que sea el original . Construiremos un nuevo , llámelo ( significa modificado).OPAGSD APAGSD AMETROMETRO
Para encontrar el complemento de , podemos cambiar los estados finales para que sean estados no finales y viceversa. Es el mismo procedimiento que para los autómatas finitos. Sin embargo, hay una sutileza. El principal problema es que en el PDA original, la entrada puede conducir a un estado que no es un estado final pero que puede realizar un y llegar a un estado de aceptación . Cambiar los estados como se mencionó anteriormente, haría que terminara en con la entrada que sería un estado final (haciendo que acepte aceptar la entrada) a pesar de que más tarde se moverá aOOwSϵ - m o v eS′MSwMϵ−moveS′, un estado de no aceptación. Por lo tanto, tanto como aceptarán . Algo similar sucede si era un estado final y un estado no final accesible desde través de un .OMwSS′Sϵ−move
Para superar este problema, debemos asegurarnos de que todos los movimientos sucedan antes de leer el siguiente símbolo. Es decir, entraremos en un estado de lectura solo cuando se siga una ruta de -moves y lleguemos a un estado que no tenga -move disponible. Llamamos a estos últimos estados estados de lectura , ya que necesitan un símbolo real para realizar una nueva transición.ϵϵϵ
Defina los estados de como tuplas de la forma donde ( es el conjunto de estados del original ) y .M<q,n>q∈QQPDAn∈{1,2,3,4}
Si en , deje en si .δ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,2>,α>Mq∈FO
Si en , deje en si .δ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,3>,α>Mq∉FO
Si en , deje en .δ(q,ϵ,X)=<q′,α>Oδ(<q,2>,ϵ,X)=<<q′,2>,α>M
Si está en , enδ(q,ϵ,X)undefinedOδ(<q,2>,ϵ,X)=<<q,1>,X>M
Si está en , enδ(q,ϵ,X)undefinedOδ(<q,3>,ϵ,X)=<<q,4>,X>M
En esas definiciones, dejamos que los estados de la forma y consuman -moves imitando -moves de hasta que no haya más. Luego, realice un -move a un estado de lectura. Ahora para los estados de lectura,<q,2><q,3>ϵϵOϵ
- Si en , deje en .δ(q,a,X)=<q′,α>Oδ(<q,1>,a,X)=δ(<q,4>,a,X)=<<q′,3>,α>M
Al hacer esta definición, consumimos un símbolo de la entrada y pasamos a un estado de la forma para comenzar una nueva serie de movimientos .<q,3>ϵ
Finalmente, haga que los estados de la forma acepten estados de si . También, make el estado inicial de si es el estado inicial de .<q,4>Mq∉FO<q0,3>Mq0O
Lo que hicimos es lo siguiente:
Cree 4 "pisos" de estados (el segundo elemento de la tupla en estados de determina en qué piso estamos). Planta 3 imita -moves de , posiblemente, llegar a un estado de aceptación de . Si ese es el caso, pasamos al piso 2; de lo contrario, permanecemos en el piso 3. Cuando no hay más movimientos de , definimos movimientos de para alcanzar un estado de lectura. Los pisos 1 y 4 corresponden a estados de lectura. Si estábamos en el piso 3, pasamos al piso 4. Si estábamos en el piso 2, llegamos al piso 1. Solo los estados (estados que están en el piso 4) aceptan estados deMϵOqOϵOϵM<q,4>M , siempre que no es un estado de aceptación de .qO
Por favor, avíseme si cometí un error al escribir esto. Podría haberme equivocado fácilmente. Además, mi inglés no es muy bueno, así que siéntete libre de editar y reformular mejor las cosas.