Dizemos que NFA é constantemente ambíguo se existir k ∈ N, de modo que qualquer palavra w ∈ Σ ∗ seja aceita por 0 ou (exatamente) k caminhos.
Se o autômato é constantemente ambíguo para k = 1 , então M é chamado FA não ambígua (UFA).
Seja uma linguagem regular.
Pode algum autômato constantemente ambíguo para L ser menor que o menor UFA que aceita L ? Quão menor poderia ser?
O autômato finitamente ambíguo pode ser exponencialmente menor que o menor CFA para o mesmo idioma?
Sabe-se que existem autômatos finitamente ambíguos (existe , de modo que todas as palavras são aceitas por até k caminhos) que são exponencialmente menores que o menor UFA para o mesmo idioma, mas não vejo algo sobre ambiguidade constante.
Além disso, aqui está uma pergunta relacionada que eu publiquei aqui há alguns meses atrás.
EDITAR:
A resposta de Domotorp mostra que é polinomialmente redutível a U F A , mas não aborda a questão de saber se podemos obter essa redução de espaço polinomial por C F A s.
Assim, a nova pergunta se torna: quanto menor (linear / quadraticamente / etc.) Uma ser comparada à mínima U F A ? para o mesmo idioma?
Respostas:
Afirmo que, para alguma linguagem, existe um CFA com estados e 0 ou cs 0 c aceitando caminhos para cada palavra, existe um UFA com estados. A idéia básica é que os estados do UFA são as tuplas c (ordenadas) dos estados do CFA e ele aceita se e somente se todos os estados c aceitarem. É claro que também precisamos garantir que esses cálculos sejam realmente diferentes e que não contemos todos os c ! permutações, portanto, para estes precisamos algum extra C s bits de armazenamento.Cssc c! Cs
Uma descrição um pouco mais detalhada da idéia básica: Se é um estado da UFA, ele passa a fazer uma transição (lendo uma letra a ) para o estado ( s ′ 1 , … , s ′ c ) se e somente se o CFA tiver uma transição (leitura da letra a ) de s i para s ′ i para cada i . Um estado ( s 1 , … , s c )(s1,…,sc) a (s′1,…,s′c) a si s′i i (s1,…,sc) é aceitar se e somente se está a aceitar para cada i . Obviamente, o estado inicial do UFA é ( s 0 , … , s 0 ) onde s 0 é o estado inicial do CFA.si i (s0,…,s0) s0
O problema com o exposto acima é que as execuções simuladas do CFA podem ser as mesmas. Então, adicionamos algumas informações extras, codificadas, digamos, em um gráfico em cc c vértices que tem uma aresta entre vértice e vértice j se durante a corrida até agora pelo menos uma vez tivemos que c i ≠ c j .i j ci≠cj
Agora ainda temos um problema, que contamos tudo vezes devido às possíveis permutações. Podemos remediar isso exigindo que, se os i -ésimo e j- ésimo estado fossem os mesmos até agora e no próximo passo eles diferissem, na próxima etapa o i -ésimo estado deverá ter um índice maior.c ! Eu j Eu
fonte