Decimos que NFA es constantemente ambiguo si existe tal que cualquier palabra sea aceptada por o (exactamente) caminos.
Si el autómata es constantemente ambiguo para , entonces se llama FA inequívoca (UFA).k = 1 M
Deje que sea un lenguaje regular.
¿Puede un autómata para L constantemente ambiguo ser más pequeño que el UFA más pequeño que acepta L ? ¿Cuánto más pequeño podría ser?
¿Puede un autómata finito ambiguo ser exponencialmente más pequeño que el CFA más pequeño para el mismo idioma?
Se sabe que hay autómatas finitamente ambiguos (existe , de modo que cada palabra es aceptada por hasta k rutas) que son exponencialmente más pequeños que el UFA más pequeño para el mismo idioma, pero no he visto algo sobre la ambigüedad constante.
Además, aquí hay una pregunta relacionada que publiqué aquí hace unos meses.
EDITAR:
La respuesta de Domotorp muestra que es polinomialmente reducible a U F A , pero no aborda la cuestión de si podemos obtener esa reducción de espacio polinomial por C F A s.
Entonces, la nueva pregunta es: ¿Cuánto más pequeño (linealmente / cuadráticamente / etc.) se puede comparar un con el mínimo U F A ? por el mismo idioma?
Respuestas:
Afirmo que si para algún idioma hay un CFA con estados y 0 o cs 0 c aceptan rutas para cada palabra, entonces hay un UFA con estados. La idea básica es que los estados de la UFA son las tuplas c (ordenadas) de los estados del CFA y acepta si y solo si todos los estados c aceptan. Por supuesto, también tenemos que asegurarnos de que se trata de cálculos diferentes y que no contamos todos los c ! permutaciones, por lo que para estos necesitamos algunos C s adicionalesCssc c! Cs bits de almacenamiento.
Una descripción un poco más detallada de la idea básica: si es un estado de la UFA, entonces tiene una transición de la misma (leyendo alguna letra a ) al estado ( s ′ 1 , ... , s ′ c ) si y solo si el CFA tiene una transición (leyendo la letra a ) de s i a s ′ i para cada i . Un estado ( s 1 , ... , s c(s1,…,sc) a (s′1,…,s′c) a si s′i i (s1,…,sc) está aceptando si y solo si está aceptando para cada i . Por supuesto, el estado inicial de la UFA essi i donde s 0 es el estado inicial de la CFA.(s0,…,s0) s0
El problema con lo anterior es que las corridas simuladas del CFA podrían ser las mismas. Entonces, agregamos información adicional, codificada, por ejemplo, en un gráfico en c vértices que tiene un borde entre el vértice i y el vértice j si durante la ejecución hasta ahora al menos una vez que tuvimos ese c i ≠ c j .c c i j ci≠cj
Ahora todavía tenemos un problema, que hemos contado todo veces debido a las posibles permutaciones. Podemos remediar esto exigiendo que si los estados i -ésimo y j -ésimo hayan sido los mismos hasta ahora y en el siguiente paso serían diferentes, entonces en el siguiente paso el estado i -ésimo debería tener un índice más grande.c! i j i
fuente