No he podido encontrar un gráfico que represente o un texto que responda a la siguiente pregunta: ¿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. Por ejemplo, ¿hay un rango de complejidad que los autómatas de presión pueden expresar? Si la respuesta es sí a dicha pregunta, ¿hay algún recurso que describa la relación? ¡Gracias!
8
Respuestas:
¡Sí, hay relaciones en muchos casos!
Por ejemplo, se sabe que cualquier lenguaje que sea aceptado por las máquinas de contador delimitadas por inversión está enP (ver aquí )
Del mismo modo, sabemos que todos los idiomas regulares están enP , ya que existe un algoritmo de tiempo polinómico para determinar si un NFA acepta una palabra determinada.
Hay demasiados para enumerar aquí, pero en general, los modelos de cómputo más limitados se encuentran en clases de complejidad más fáciles.
fuente
Aquí hay algunos resultados conocidos:
La clase de lenguajes aceptados por los PDA deterministas sin borrado esDSPACE(nlogn) , y la clase de lenguajes aceptados por PDA no deterministas no borradores es NSPACE(n2) . Vea la página de Wikipedia sobre PDA .
Los autómatas de dos pilas son equivalentes en potencia a las máquinas de Turing, pero restringir los autómatas da como resultado modelos más débiles. Ver un informe técnico de San Pietro.
fuente
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.
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 .
fuente