MODIFICA AL 10/12/06:
ok, questa è praticamente la migliore costruzione che posso ottenere, vedi se qualcuno ha idee migliori.
Teorema. Per ogni Esiste un NFA sopra gli alfabeti con tale che la stringa più corta non in è di lunghezza .( 5 n + 12 ) M Σ | Σ | = 5 L ( M ) ( 2 n - 1 ) ( n + 1 ) + 1n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
Questo ci darà .f(n)=Ω(2n/5)
La costruzione è praticamente la stessa di quella di Shallit , tranne per il fatto che costruiamo direttamente un NFA invece di rappresentare prima la lingua con un'espressione regolare. Permettere
Σ={[00],[01],[10],[11],♯} .
Per ogni , costruiremo un linguaggio di riconoscimento NFA , dove è la seguente sequenza (ad esempio ):Σ ∗ - { s n } s n n = 3nΣ∗−{sn}snn=3
s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯ .
L'idea è che possiamo costruire un NFA composto da cinque parti;
- uno starter , che assicura che la stringa inizi con ;♯[00][00][01]♯
- un terminatore , che assicura che la stringa termini con ;♯[11][11][01]♯
- un contatore , che mantiene il numero di simboli tra due 's come ;n♯n
- un controllo aggiuntivo , che garantisce che vengano visualizzati solo i simboli con la forma ; finalmente,♯xx+1♯
- un controllore coerente , che garantisce che solo i simboli con la forma possano comparire contemporaneamente.♯xy♯yz♯
Nota che vogliamo accettare invece di , quindi una volta scoperto che la sequenza di input disobbedisce a uno dei comportamenti sopra, accettiamo immediatamente la sequenza. Altrimenti dopopassi, l'NFA sarà nell'unico stato di rifiuto possibile. E se la sequenza è più lunga di, accetta anche l'NFA. Pertanto, qualsiasi NFA soddisfa le cinque condizioni precedenti rifiuterà solo .{ s nΣ∗−{sn}| s n | | s n | s n{sn}|sn||sn|sn
Può essere facile controllare direttamente la seguente figura anziché una prova rigorosa:
Iniziamo dallo stato in alto a sinistra. La prima parte è il dispositivo di avviamento e il contatore, quindi il controllore coerente, il terminatore, infine il controllore aggiuntivo. Tutto l'arco senza nodi terminali punta allo stato in basso a destra, che è un accettore di tutti i tempi. Alcuni bordi non sono etichettati a causa della mancanza di spazi, ma possono essere recuperati facilmente. Una linea tratteggiata rappresenta una sequenza di stati con bordi .n - 2n−1n−2
Possiamo (dolorosamente) verificare che l'NFA respinga solo , poiché segue tutte e cinque le regole precedenti. Quindi è stato costruito un NFA con , che soddisfa il requisito del teorema. ( 5 n + 12 ) | Σ | = 5sn(5n+12)|Σ|=5
Se ci sono problemi di non lucidità / problemi con la costruzione, lascia un commento e proverò a spiegarlo / risolverlo.
Questa domanda è stata studiata da Jeffrey O. Shallit et al., E in effetti il valore ottimale di è ancora aperto per . (Per quanto riguarda il linguaggio unario, vedi i commenti nella risposta di Tsuyoshi )| Σ | > 1f(n)|Σ|>1
Nelle pagine 46-51 del suo discorso sull'universalità , ha fornito una costruzione tale che:
Teorema. Per per qualche abbastanza grande, c'è un NFA su alfabeti binari tale che la stringa più corta non in è di lunghezza per .N n M L ( M ) Ω ( 2 c n ) c = 1 / 75n≥NNnML(M)Ω(2cn)c=1/75
Pertanto, il valore ottimale per è compreso tra e . Non sono sicuro che il risultato di Shallit sia stato migliorato negli ultimi anni.2 n / 75 2 nf(n)2n/752n