Não consegui encontrar um gráfico representando ou respondendo à seguinte pergunta: Existe uma relação direta entre a complexidade de um algoritmo (como o melhor / pior caso de classificação rápida) e a classe de autômatos que podem implementar o algoritmo. Por exemplo, existe uma variedade de complexidade que os autômatos podem expressar? Se a resposta for afirmativa à pergunta, existe um recurso que represente o relacionamento? Obrigado!
8
Respostas:
Sim, existem relacionamentos em muitos casos!
Por exemplo, sabe-se que qualquer idioma aceito por máquinas de balcão com limite de reversão está emP (veja aqui ).
Da mesma forma, sabemos que todos os idiomas regulares estão emP , já que existe um algoritmo de tempo polinomial para determinar se um NFA aceita uma determinada palavra.
Há muitos para enumerar aqui, mas, em geral, modelos de computação mais limitados estão em classes de complexidade mais fáceis.
fonte
Aqui estão alguns resultados conhecidos:
A classe de idiomas aceitos pelos PDAs determinantes não-auditivos éDSPACE(nlogn) , e a classe de idiomas aceitos por PDAs não deterministas e não determinantes é NSPACE(n2) . Veja a página da Wikipedia em PDAs .
Autômatos de duas pilhas são equivalentes em potência às máquinas de Turing, mas restringir os autômatos resulta em modelos mais fracos. Veja um relatório técnico da San Pietro.
fonte
A questão de qual classe de autômatos pode implementar um determinado algoritmo, como a classificação rápida, é complicada, porque não está claro o que seria considerado uma implementação desse algoritmo. Para uma classificação rápida, as comparações realizadas certamente devem ser as mesmas, mas a ordem na qual as comparações ocorrem também deve ser a mesma? E a ordem dos acessos de leitura a elementos específicos da entrada? A ordem de copiar, mover e trocar operações por elementos específicos?
Você precisaria especificar vários oráculos para as operações que são importantes para você, mas então você já está em uma situação muito específica baseada no algoritmo e muito longe das classes gerais de estudos de autômatos comumente. A maneira de contornar esse dilema é falar sobre problemas, em vez de algoritmos, e formalizar problemas falando sobre linguagens.
Na verdade, não, porque um autômato push-down pode ler sua entrada apenas uma vez e somente na direção direta. No entanto, se você dividir a máquina em uma peça com permissão para ler a entrada para frente e para trás como desejar, e manter um número finito de ponteiros para posições de entrada específicas (NL) e uma peça que é um autômato push-down que recebe sua entrada da outra parte, você obtém a classe de complexidade LOGCFL , que é igual ao SAC 1 (uma classe de circuito).
Se você não separar as duas partes e apenas adicionar uma pilha para NL, então você obtém a classe de autômatos AuxPDA , que é igual à classe de complexidade P . Porém, se você decidir limitar o tempo de execução desse autômato (com pilha e armazenamento auxiliar logarítmico) ao tempo polinomial, obterá o NAuxPDA P , que é novamente igual ao LOGCFL. (E se você insistir no tempo de execução polinomial determinístico, descarte a pilha, mas permita o armazenamento auxiliar polilogarítmico, obterá SC .)
Por outro lado, se você mantiver a restrição de que os autômatos podem ler sua entrada apenas uma vez e somente na direção direta e exigir adicionalmente que ele possa usar sua pilha apenas de uma maneira muito determinística diretamente com base na entrada (ou seja, o símbolo de entrada determina se esse autômato empurra algo na pilha, retira algo da pilha ou deixa a pilha intocada), então você acaba com um autômato de empilhamento visível, que reconhece exatamente as linguagens de palavras aninhadas , que também podem ser reconhecidas no espaço logarítmico determinístico .
fonte