¿Existe una relación directa entre la complejidad de un algoritmo (como el mejor / peor caso de clasificación rápida) y la clase de autómatas que pueden implementar el algoritmo.
La pregunta sobre qué clase de autómatas puede implementar un algoritmo dado , como la ordenación rápida, es difícil, porque no está claro qué contaría como una implementación de ese algoritmo. Para una ordenación rápida, las comparaciones realizadas ciertamente deberían ser las mismas, pero ¿el orden en que ocurren las comparaciones también debe ser el mismo? ¿Qué pasa con el orden de los accesos de lectura a elementos específicos de la entrada? ¿El orden de las operaciones de copiar, mover e intercambiar para elementos específicos?
Tendría que especificar una gran cantidad de oráculos para esas operaciones que le importan, pero ya se encuentra en una situación muy específica basada en el algoritmo, y bastante lejos de las clases generales de autómatas que comúnmente se estudian. La solución a este dilema es hablar sobre problemas en lugar de algoritmos, y formalizar problemas hablando sobre idiomas.
Por ejemplo, ¿hay un rango de complejidad que los autómatas de presión pueden expresar?
En realidad no, porque un autómata push down puede leer su entrada solo una vez y solo en dirección hacia adelante. Sin embargo, si divide la máquina en una parte que puede leer la entrada hacia adelante y hacia atrás como desee, y mantiene un número finito de punteros a posiciones de entrada específicas (NL), y una parte que es un autómata de empuje que recibe su entrada de la otra parte, entonces obtienes la clase de complejidad LOGCFL , que es igual a SAC 1 (una clase de circuito).
Si no se separan las dos partes y acaba de añadir una pila de NL, a continuación, se obtiene la clase autómatas AuxPDA , que es igual a la clase de complejidad P . Pero si decide limitar el tiempo de ejecución de esos autómatas (con pila y almacenamiento auxiliar logarítmico) al tiempo polinómico, entonces obtiene NAuxPDA P , que nuevamente es igual a LOGCFL. (Y si insiste en un tiempo de ejecución polinomial determinista, deseche la pila, pero permita el almacenamiento auxiliar pollogarítmico, entonces obtendrá SC ).
Por otro lado, si mantiene la restricción de que el autómata puede leer su entrada solo una vez y solo en dirección hacia adelante, y además requiere que pueda usar su pila solo de una manera muy determinista directamente basada en la entrada (es decir, el símbolo de entrada determina si ese autómata empuja algo en la pila, saca algo de la pila o lo deja intacto), luego termina con un autómata visiblemente pushdown, que reconoce exactamente los idiomas de palabras anidadas , que también se pueden reconocer en el espacio logarítmico determinista .