Considere un autómata finito no determinista y una función f (n) . Además definimos \ Sigma ^ {\ leq k} = \ bigcup_ {i \ leq k} \ Sigma ^ i .
Ahora analicemos la siguiente declaración:
Si , entonces .
Es fácil mostrar que para es cierto, por lo tanto, si el autómata produce cada palabra con una longitud de hasta , entonces produce .
¿Pero aún se mantiene si es un polinomio?
Si no, ¿cómo podría ser una construcción de un NFA para un polinomio dado , st ?
Respuestas:
Para que la declaración se mantenga, f debe crecer exponencialmente, incluso con el alfabeto unario.
[Editar: El análisis se mejora ligeramente en la revisión 2.]
Aquí hay un boceto de prueba. Suponga que la declaración se cumple y deja que f sea una función tal que cada NFA con como máximo n estados que acepte todas las cadenas con longitud como máximo f ( n ) acepte todas las cadenas en absoluto. Demostraremos que por cada C > 0 y n suficientemente grande , tenemos f ( n )> 2 C ⋅√ n .
El teorema del número primo implica que para cada c <lg e y para k suficientemente grande , hay al menos c ⋅2 k / k primos en el rango [2 k , 2 k +1 ]. Tomamos c = 1. Para tal k , deje N k = ⌈2 k / k ⌉ y defina un NFA M k de la siguiente manera. Sea p 1 ,…, p N k primos distintos en el rango [2 k , 2 k +1] El NFA M k tiene S k = 1 + p 1 +… + p N k estados. Además del estado inicial, los estados se dividen en N k ciclos donde el i ésimo ciclo tiene una longitud p i . En cada ciclo, todos menos un estado son estados aceptados. El estado inicial tiene N k bordes salientes, cada uno de los cuales va al estado inmediatamente después del estado rechazado en cada ciclo. Finalmente, también se acepta el estado inicial.
Sea P k el producto p 1 ... p N k . Es fácil ver que M k acepta todas las cadenas de longitud menor que P k pero rechaza la cadena de longitud P k . Por lo tanto, f ( S k ) ≥ P k .
Tenga en cuenta que S k ≤ 1 + N k ⋅2 k +1 = o (2 2 k ) y que P k ≥ (2 k ) N k ≥ 2 2 k . El resto es estándar.
fuente
EDITAR AL 10/12/06:
ok, esta es la mejor construcción que puedo obtener, mira si alguien tiene mejores ideas.
Esto nos dará .f(n)=Ω(2n/5)
La construcción es más o menos la misma que la de Shallit , excepto que primero construimos un NFA directamente en lugar de representar el lenguaje mediante una expresión regular. Dejar
Para cada , vamos a construir un lenguaje de reconocimiento NFA , donde es la siguiente secuencia (tome por ejemplo):n Σ∗−{sn} sn n=3
La idea es que podemos construir un NFA consta de cinco partes;
Tenga en cuenta que queremos aceptar lugar de , por lo que una vez que descubramos que la secuencia de entrada está desobedeciendo uno de los comportamientos anteriores, aceptamos la secuencia de inmediato. De lo contrario, después depasos, el NFA estará en el único estado de rechazo posible. Y si la secuencia es más larga que, la NFA también acepta. Por lo tanto, cualquier NFA satisface las cinco condiciones anteriores solo rechazará .Σ∗−{sn} {sn} |sn| |sn| sn
Puede ser fácil verificar la siguiente figura directamente en lugar de una prueba rigurosa:
Comenzamos en el estado superior izquierdo. La primera parte es el iniciador y el contador, luego el verificador consistente, el terminador, finalmente el verificador de agregar uno. Todo el arco sin nodos terminales apunta al estado inferior derecho, que es un aceptador de todos los tiempos. Algunos de los bordes no están etiquetados debido a la falta de espacios, pero se pueden recuperar fácilmente. Una línea de trazos representa una secuencia de estados con aristas.n−1 n−2
Podemos (dolorosamente) verificar que la NFA rechaza solamente, ya que sigue las cinco reglas anteriores. Por lo tanto, se ha construido un NFA de estado con , que satisface el requisito del teorema.sn (5n+12) |Σ|=5
Si hay alguna falta de claridad / problema con la construcción, deje un comentario e intentaré explicarlo / solucionarlo.
Esta pregunta ha sido estudiada por Jeffrey O. Shallit et al., Y de hecho el valor óptimo de todavía está abierto para . (En cuanto al lenguaje unario, vea los comentarios en la respuesta de Tsuyoshi )f(n) |Σ|>1
En la página 46-51 de su charla sobre universalidad , proporcionó una construcción tal que:
Por lo tanto, el valor óptimo para está entre y . No estoy seguro de si el resultado de Shallit ha mejorado en los últimos años.f(n) 2n/75 2n
fuente