Considere um autômato finito não determinístico e uma função . Adicionalmente, definimos .
Agora vamos analisar a seguinte declaração:
Se , então .
É fácil mostrar que, para , é verdade; portanto, se os autômatos produzem todas as palavras com comprimento até , então produz .
Mas ainda é válido se é um polinômio?
Respostas:
Para que a declaração seja válida, f deve crescer exponencialmente, mesmo com o alfabeto unário.
[Editar: a análise foi ligeiramente aprimorada na revisão 2.]
Aqui está um esboço de prova. Suponha que a declaração mantenha e permita que f seja uma função tal que todo NFA com no máximo n estados que aceite todas as strings com comprimento no máximo f ( n ) aceite todas as strings. Vamos provar que para cada C > 0 e n suficientemente grande , temos f ( n )> 2 C ⋅√ n .
O teorema do número primo implica que para cada c <lg e e para k suficientemente grande , há pelo menos c ⋅2 k / k primos no intervalo [2 k , 2 k +1 ]. Tomamos c = 1. Para tal k , deixe N k = ⌈2 k / k ⌉ e defina um NFA M k da seguinte maneira. Seja p 1 ,…, p N k números primos distintos no intervalo [2 k , 2 k +1] O NFA M k tem S k = 1 + p 1 +… + p N k estados. Além do estado inicial, os estados são particionados em N k ciclos, onde o i- ésimo ciclo possui comprimento p i . Em cada ciclo, todos os estados, exceto um, são aceitos. O estado inicial possui N k arestas de saída, cada uma das quais passa para o estado imediatamente após o estado rejeitado em cada ciclo. Finalmente, o estado inicial também é aceito.
Seja P k o produto p 1 … p N k . É fácil ver que M k aceita todas as cadeias de comprimento menores que P k, mas rejeita a cadeia de comprimento P k . Portanto, f ( S k ) ≥ P k .
Observe que S k ≤ 1 + N k ⋅2 k +1 = o (2 2 k ) e que P k ≥ (2 k ) N k ≥ 2 2 k . O resto é padrão.
fonte
EDITAR EM 10/12/06:
ok, essa é praticamente a melhor construção que posso obter, veja se alguém tem ideias melhores.
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
Para cada , vamos construir uma linguagem de reconhecimento de NFA , em que é a seguinte sequência (considere por exemplo):n Σ∗−{sn} sn n=3
A idéia é que podemos construir um NFA consiste em cinco partes;
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−1 n−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:
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/75 2n
fonte