EDIT AU 10/12/06:
ok, c'est à peu près la meilleure construction que je puisse obtenir, voir si quelqu'un a de meilleures idées.
Théorème. Pour chaque Il existe un NFA sur les alphabets avec sorte que la chaîne la plus courte qui n'est pas dans soit de longueur .n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
Cela nous donnera .f(n)=Ω(2n/5)
La construction est à peu près la même que celle de Shallit , sauf que nous construisons un NFA directement au lieu de représenter d'abord le langage par une expression régulière. Laisser
Σ={[00],[01],[10],[11],♯} .
Pour chaque , nous allons construire un langage de reconnaissance NFA , où est la séquence suivante (prenez par exemple):nΣ∗−{sn}snn=3
s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯ .
L'idée est que nous pouvons construire un NFA se compose de cinq parties;
- un démarreur , qui garantit que la chaîne commence par ;♯[00][00][01]♯
- un terminateur , qui garantit que la chaîne se termine par ;♯[11][11][01]♯
- un compteur , qui maintient le nombre de symboles entre deux comme ;♯n
- un vérificateur d'add-one , qui garantit que seuls les symboles de la forme apparaissent; enfin,♯xx+1♯
- un vérificateur cohérent , qui garantit que seuls les symboles de la forme peuvent apparaître simultanément.♯xy♯yz♯
Notez que nous voulons accepter au lieu de , donc une fois que nous découvrons que la séquence d'entrée désobéit à l'un des comportements ci-dessus, nous acceptons la séquence immédiatement. Sinon aprèsétapes, la NFA sera dans le seul état de rejet possible. Et si la séquence est plus longue que, la NFA accepte également. Ainsi, tout NFA remplit les cinq conditions ci-dessus ne rejettera que .Σ∗−{sn}{sn}|sn||sn|sn
Il peut être facile de vérifier directement la figure suivante au lieu d'une preuve rigoureuse:
Nous commençons à l'état supérieur gauche. La première partie est le démarreur et le compteur, puis le vérificateur cohérent, le terminateur, enfin le vérificateur add-one. Tout l'arc sans noeuds terminaux pointe vers l'état en bas à droite, qui est un accepteur de tous les temps. Certains bords ne sont pas étiquetés par manque d'espace, mais ils peuvent être récupérés facilement. Une ligne en pointillés représente une séquence de états avec arêtes.n−1n−2
Nous pouvons (douloureusement) vérifier que le NFA rejette uniquement, car il suit les cinq règles ci-dessus. Ainsi, un NFA -état avec a été construit, ce qui satisfait l'exigence du théorème.sn(5n+12)|Σ|=5
S'il y a un manque de clarté / problème avec la construction, veuillez laisser un commentaire et je vais essayer de l'expliquer / le corriger.
Cette question a été étudiée par Jeffrey O. Shallit et al., Et en effet la valeur optimale de est toujours ouverte pour . (Quant à la langue unaire, voir les commentaires dans la réponse de Tsuyoshi )f(n)|Σ|>1
À la page 46-51 de son exposé sur l'universalité , il a fourni une construction telle que:
Théorème. Pour pour certains assez grands, il existe un NFA sur les alphabets binaires de telle sorte que la chaîne la plus courte qui n'est pas dans soit de longueur pour .n≥NNnML(M)Ω(2cn)c=1/75
Ainsi, la valeur optimale pour se situe entre et . Je ne sais pas si le résultat de Shallit s'est amélioré ces dernières années.f(n)2n/752n