EDITAR AL 10/12/06:
ok, esta es la mejor construcción que puedo obtener, mira si alguien tiene mejores ideas.
Teorema. Para cada Hay un estados NFA sobre alfabetos con modo que la cadena más corta que no está en es de longitud .n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
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
Σ={[00],[01],[10],[11],♯} .
Para cada , vamos a construir un lenguaje de reconocimiento NFA , donde es la siguiente secuencia (tome por ejemplo):nΣ∗−{sn}snn=3
s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯ .
La idea es que podemos construir un NFA consta de cinco partes;
- un iniciador , que asegura que la cadena comience con ;♯[00][00][01]♯
- un terminador , que garantiza que la cadena termine con ;♯[11][11][01]♯
- un contador , que mantiene el número de símbolos entre dos 's como ;♯n
- un verificador add-one , que garantiza que solo aparezcan símbolos con la forma ; finalmente,♯xx+1♯
- un verificador consistente , que garantiza que solo los símbolos con la forma puedan aparecer simultáneamente.♯xy♯yz♯
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−1n−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:
Teorema. Para para algunos suficientemente grandes, hay una NFA de estado sobre alfabetos binarios, de modo que la cadena más corta que no está en es de longitud para .n≥NNnML(M)Ω(2cn)c=1/75
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/752n