EDITAR EM 10/12/06:
ok, essa é praticamente a melhor construção que posso obter, veja se alguém tem ideias melhores.
Teorema. Para cada Existe um NFA sobre os alfabetos com modo que a cadeia mais curta que não esteja em tenha comprimento .n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
Isso nos dará .f(n)=Ω(2n/5)
A construção é praticamente igual à de Shallit , exceto que construímos um NFA diretamente em vez de representar o idioma por uma expressão regular primeiro. Deixei
Σ={[00],[01],[10],[11],♯} .
Para cada , vamos construir uma linguagem de reconhecimento de NFA , em que é a seguinte sequência (considere por exemplo):nΣ∗−{sn}snn=3
s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯ .
A idéia é que podemos construir um NFA consiste em cinco partes;
- um iniciador , que garante que a string comece com ;♯[00][00][01]♯
- um terminador , que garante que a string termine com ;♯[11][11][01]♯
- um contador , que mantém o número de símbolos entre dois 's como ;♯n
- um add one-verificador , que garante que apenas os símbolos com a forma aparece; finalmente,♯xx+1♯
- um verificador consistente , que garante que apenas símbolos com o formato possam aparecer simultaneamente.♯xy♯yz♯
Observe que queremos aceitar vez de ; assim, quando descobrirmos que a sequência de entrada está desobedecendo a um dos comportamentos acima, aceitamos a sequência imediatamente. Caso contrário, apósetapas, o NFA estará no único estado possível de rejeição. E se a sequência for maior que, a NFA também aceita. Portanto, qualquer NFA que atenda às cinco condições acima rejeitará apenas .Σ∗−{sn}{sn}|sn||sn|sn
Pode ser fácil verificar a figura a seguir diretamente, em vez de uma prova rigorosa:
Começamos no estado superior esquerdo. A primeira parte é o iniciador e o contador, depois o verificador consistente, o terminador e, finalmente, o verificador de adição um. Todo o arco sem nós de terminal aponta para o estado inferior direito, que é um aceitador de todos os tempos. Algumas das arestas não são rotuladas devido à falta de espaços, mas podem ser recuperadas facilmente. Uma linha tracejada representa uma sequência de estados com arestas.n−1n−2
Podemos (dolorosamente) verificar se o NFA rejeita apenas , pois segue todas as cinco regras acima. Portanto, um NFA do estado com foi construído, o que satisfaz o requisito do teorema.sn(5n+12)|Σ|=5
Se houver qualquer dúvida / problema com a construção, deixe um comentário e tentarei explicar / corrigir.
Essa questão foi estudada por Jeffrey O. Shallit et al. E, de fato, o valor ótimo de ainda está aberto para . (Quanto à linguagem unária, veja os comentários na resposta de Tsuyoshi )f(n)|Σ|>1
Nas páginas 46-51 de sua palestra sobre universalidade , ele forneceu uma construção que:
Teorema. Para para alguns grandes o suficiente, existe um NFA sobre alfabetos binários, de modo que a menor seqüência que não esteja em tenha comprimento para .n≥NNnML(M)Ω(2cn)c=1/75
Portanto, o valor ótimo para está entre e . Não tenho certeza se o resultado de Shallit foi aprimorado nos últimos anos.f(n)2n/752n