Deje que sean dos lenguajes regulares dados por NFA M 1 , M 2 como entrada.
Supongamos que nos gustaría verificar si . Esto puede hacerse claramente mediante un algoritmo cuadrático que computa el autómata del producto de M 1 , M 2 , pero me preguntaba si se sabe algo más eficiente.
¿Existe un algoritmo para decidir si L 1 ∩ L 2 ≠ ∅ ? ¿Cuál es el algoritmo más rápido conocido?
Respuestas:
Respuesta simple : si existe un algoritmo más eficiente que se ejecuta en el tiempo durante algún δ < 2 , entonces la hipótesis del tiempo exponencial fuerte sería refutada.O(nδ) δ<2
Vamos a demostrar un teorema más fuerte y luego la respuesta simple seguirá.
Teorema : si podemos resolver el problema de no vacío de intersección para dos DFA en tiempo , entonces cualquier problema que no se pueda resolver determinísticamente utilizando solo n bits de memoria se puede resolver determinísticamente en p o l y ( n ) ⋅ 2 ( δ n / 2 ) tiempo.O(nδ) poly(n)⋅2(δn/2)
Justificación : Supongamos que podemos resolver el vacío de intersección para dos DFA en el tiempo . Deje una máquina Turing no determinista M con una cinta de entrada de solo lectura y una cinta de trabajo binario de lectura / escritura. Deje una cadena de entrada x de longitud n. Suponga que M no accede a más de n bits de memoria en la cinta de trabajo binaria.O(nδ)
Un cálculo de M en la entrada x puede representarse mediante una lista finita de configuraciones. Cada configuración consta de un estado, una posición en la cinta de entrada, una posición en la cinta de trabajo y hasta n bits de memoria que representan la cinta de trabajo.
Ahora, considere que la cinta de trabajo se dividió por la mitad. En otras palabras, tenemos una sección izquierda de celdas y una sección derecha denn2 n2 n2 n2
Puede encontrar esto útil: https://rjlipton.wordpress.com/2009/08/17/on-the-intersection-of-finite-automata/
Comentarios, correcciones, sugerencias y preguntas son bienvenidas. :)
fuente