¿Cómo demuestro que si un PDA acepta alguna cadena

8

¿Cómo demuestro que el problema de decidir si un PDA acepta alguna cadena de la forma es indecidible?{w!ww{0,1}}

He tratado de reducir este problema a otro indecidible, como si dos gramáticas libres de contexto aceptan el mismo lenguaje. Sin embargo, no estoy seguro de cómo usarlo como una subrutina.

David Faux
fuente

Respuestas:

12

Aquí está mi enfoque: mostraré que si puede decidir su problema, entonces puede decidir el problema de correspondencia de Post (PCP), que se sabe que no es decidible.

Recuerde, PCP es un problema de decisión que pregunta si en un conjunto de 2-tuplas P={(x1,y1),,(xn,yn)} puede construir una secuencia (incluida la repetición) de manera que la concatenada xisy los concatenados yis de esta secuencia forman la misma palabra. Tenga en cuenta que el alfabeto debe tener al menos 2 caracteres.

Entonces deja Pser una instancia del PCP. Considere la siguiente gramática libre de contexto, donde hemos introducido un nuevo símbolo de terminalti Para el i-th elemento en P. La gramática tiene las siguientes reglas:

SX!YXx1Xt1x2Xt2xnXtnXx1Xt1x2Xt2xnXtnεYy1Yt1y2Yt2ynYtnε
(La variable X solo está ahí para descartar S!)

Por supuesto, dada cualquier gramática, podemos encontrar un PDA correspondiente que acepte el mismo lenguaje que la gramática. Por lo tanto, construya el PDA correspondiente y luego use el algoritmo hipotético de su problema para determinar si este PDA acepta alguna palabra del formulariou!v (es decir, si se puede derivar alguna palabra de la forma u!vde esta gramática). Mostraré cómo usar esta información para resolver la instancia de PCPP.

Supongamos ahora que u!vEs una palabra en esta gramática. La palabrau tiene dos partes, el sufijo, que consiste en el titerminales, y el resto llamado prefijo. Lo mismo es cierto dev. Tenemosu=vsi y solo si sus prefijos y sufijos coinciden. Los sufijos coinciden solo si hemos usado la misma secuencia de tuplas deP para construir las palabras u y v. Los prefijos deu y v coincidir si la concatenación de la xis y yis (basado en la secuencia de tuplas invertida dada por el tis) es lo mismo. Por lo tantou=v si y solo si hay una solución para la instancia PCP P.

Del mismo modo, si hay una solución para la instancia de PCP P, a partir de la solución, es fácil construir una palabra de la forma u!v eso es derivable de esta gramática.

Se deduce que la instancia de PCP P tiene una solución si y solo si esta gramática contiene una palabra de la forma u!v. Si hubiera un algoritmo para decidir su problema, podríamos usarlo para resolver PCP. Pero, por supuesto, se sabe que PCP es indecidible, por lo que su problema también es indecidible.

A.Schulz
fuente
1
¡Agradable! Bueno, definitivamente más directo que mi propia solución. +1
Hendrik ene
1
Me resulta difícil seguir el flujo de esta respuesta. ¿Por qué discuten sobre la existencia de PDA / gramática en el tercer párrafo? Si leo correctamente, desea asignar instancias de PCP a gramáticas, reduciendo así la pregunta de si PCP es decidible. Para ello, también debe mostrar el reverso del último párrafo, es decir, que si no u!ues aceptado, el PCP no tiene solución. (Buen truco con elti, por cierto.)
Raphael
@Raphael, edité la respuesta para abordar tu comentario. Buenos puntos - gracias!
DW
5

El enfoque podría ser el siguiente. Intente crear un lenguaje libre de contexto (= PDA) que codifique los pasos de cálculo de una TM, de modo que el cálculo completo sea exitoso si hay una palabra de la forma que usted describe.

Primero debe codificar configuraciones separadas: contenido de la cinta + estado + cabezal de posición (lo habrá visto para la equivalencia gramatical). Un lenguaje sin contexto puede codificar un solo pasoCC de un cómputo siempre que use una imagen espejo C#m(C), dónde m(C)denota la imagen especular (inversión) de $$ C $. (Soy descuidado aquí: puede que tenga que distinguir la configuración y su descripción).

Ahora considere el lenguaje de pasos separados, concatenados con el lenguaje de configuraciones duplicadas: C0#C1#m(C2)#C3#m(C4)#C2n1#m(C2n)#Cf! C1#m(C1)#C2#m(C2)#Cn+1#m(Cn+1) con por cada k, C2k1(C2k). Esto es libre de contexto, además de códigoC0 como inicial y Cf como configuraciones finales.

Ahora la primera parte garantiza que tengamos pasos consecutivos, la segunda parte que las configuraciones sucesivas son iguales. Si ambas partes coinciden, tenemos un cálculo. Lo cual no podemos decidir.

Esa es la idea. Puedo tener algunos índices incorrectos, y toda la secuencia tiene que estar codificada en binario, pero eso se puede resolver.

Hendrik Jan
fuente
Esta bien, lo tengo. Sin embargo, la parte "Ahora considere el lenguaje de pasos separados, concatenados con el lenguaje de configuraciones duplicadas ..." podría beneficiarse de más explicaciones. Por ejemplo, podría usar los índices correctos. De todos modos, es una buena idea.
A.Schulz