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.
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.
Por exemplo, existe uma variedade de complexidade que os autômatos podem expressar?
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 .