No estoy seguro de a qué te refieres con el producto cartesiano; Esto simula ambos autómatas en paralelo, lo que le dará la intersección. ¡Pero desea que identifique todas las palabras en que tienen un sufijo de R ! En un nivel intuitivo, eso es.LR
Supongamos que nuestra entrada es . Obviamente, no podemos verificar todas las continuaciones posibles (para ser miembro de R ), sino solo un número finito de ellas. El comentario de Artem es más útil aquí; que adivinar lo que el sufijo x va a ser, y ejecutar tanto autómatas en él.w ∈ Σ∗RX
Sea y A R el PDA para L y NFA para R , respectivamente. Construya un autómata A de la siguiente manera. En la entrada w ∈ sigma * , simular A L . Después de w se consume, cambiar a una intersección modificado A L , R de A L y A R , manteniendo el estado de A L . Ahora, decida para cada transición sin determinar qué símbolo es el siguiente en la entrada virtual. Aceptar wUNALUNARLRAw∈Σ∗ALwAL,RALARALwsi y sólo si ambos componentes de alcanzar un estado final de forma simultánea, es decir, si w tiene una continuación x de modo que w x ∈ L y x ∈ R .AL,Rwxwx∈Lx∈R
También puedes usar gramáticas formales. ¿Ves cómo puedes derivar en dos gramáticas en paralelo? En general, no está claro cómo adaptar para que pueda manejar los sufijos; utilizando la forma normal de Chomsky ayuda.GL
Suponga que tanto como G R se dan en forma normal de Chomsky. Modifique G L de tal manera que el extremo no derecho sea distinguible y haga que su símbolo de inicio sea el nuevo símbolo de inicio. Introducir para las versiones distinguidas de los no terminales nuevas reglas que conducen a una gramática que deriva en G L y G R en paralelo (los no terminales son pares de no terminales); Si ambas gramáticas están de acuerdo con un símbolo de terminal, elimine el no terminal compuesto. De esa manera, un sufijo en G L se elimina si y solo si se puede derivar en G L y en G R , permaneceGLGRGLGLGRGLGLGR .w∈L/R