¿Cuáles son algunos problemas no triviales donde sabemos que el algoritmo actual que tenemos es el asintóticamente óptimo? (Para máquinas de turing)
¿Y cómo se prueba esto?
¿Cuáles son algunos problemas no triviales donde sabemos que el algoritmo actual que tenemos es el asintóticamente óptimo? (Para máquinas de turing)
¿Y cómo se prueba esto?
Respuestas:
Cualquier algoritmo que tome tiempo lineal y tenga que leer toda su entrada debe ser asintóticamente óptimo. De manera similar, como comenta Raphael, cualquier algoritmo cuyo tiempo de ejecución sea del mismo orden que el tamaño de salida es óptimo.
fuente
Si la medida de complejidad que está considerando es la complejidad de la consulta, es decir, la cantidad de veces que la máquina tiene que mirar la entrada para resolver un problema en particular, entonces hay muchos problemas para los cuales tenemos algoritmos óptimos. La razón de esto es que los límites inferiores para la complejidad de la consulta son más fáciles de lograr que los límites inferiores para la complejidad de tiempo o espacio, gracias a algunas técnicas populares que incluyen el método adversario .
Sin embargo, la desventaja es que esta medida de complejidad se usa casi de manera excusiva en el procesamiento de información cuántica, ya que proporciona una manera fácil de demostrar una brecha entre la potencia computacional cuántica y clásica. El algoritmo cuántico más notorio en este marco es el algoritmo de Grover . Dada una cadena binaria para la cual existe una sola tal que , se requiere que encuentre . Clásicamente (sin una computadora cuántica), el algoritmo más trivial es óptimo: necesita consultar esta cadena veces en promedio para encontrar . Grover proporcionó un algoritmo cuántico que lo hace enX1, ... , xnorte yo Xyo= n yo n / 2 yo O ( n--√) consultas a la cadena. Esto también se ha demostrado óptimo.
fuente
fuente
La ordenación por comparación usando comparaciones (ordenar por fusión, por nombrar una) es óptima, la prueba implica simplemente calcular la altura de un árbol con n ! hojas.O ( n logn ) n !
Asumiendo la conjetura de los juegos únicos, Khot, Kindler, Mossel y O'donnell demostraron que es NP completo para aproximar Max-Cut mejor que el algoritmo de Goemans y Williamson. Entonces, en ese sentido, G&W es óptimo (suponiendo también que ).PAG≠ NPAG
Se puede demostrar que algunos algoritmos distribuidos son óptimos con respecto a algunas condiciones (por ejemplo, la proporción de procesadores adversos), pero dado que usted mencionó las máquinas Turing, supongo que ese no es el tipo de ejemplos que está buscando.
fuente
Supongamos que se le da entrada y se le pide que decida si la máquina RAM M termina en la entrada x después de t pasos. Según el teorema de la jerarquía de tiempo, el algoritmo óptimo para decidir esto es simular la ejecución de M ( x ) para t pasos, lo que se puede hacer en el tiempo O ( t ) .w = ⟨ M, X , t ⟩ METRO X t METRO( x ) t O ( t )
(Nota: para las máquinas de Turing, simular la ejecución de toma pasos O ( t log t ) ; solo conocemos un límite inferior de Ω ( t ) . Por lo tanto, esto no es del todo óptimo para las máquinas de Turing específicamente).METRO O ( t logt ) Ω ( t )
Hay algunos otros problemas que contienen la versión del problema de detención como un sub-caso. Por ejemplo, decidir si una oración es una consecuencia del WS1S lleva tiempo 2 ↑ ↑ O ( | θ | ) y esto es óptimo.θ 2 ↑ ↑ O ( | θ | )
fuente
No estoy seguro de lo que quieres decir con "no trivial", pero ¿qué tal esto? . Este lenguaje no es regular, por lo tanto, cualquier TM que decida que debe ejecutarse en Ω ( n log n ) . El algoritmo simple (cruzando cada 0) es óptimo.L = { 02kEl | k≥0} Ω ( n logn )
fuente
Si permite problemas de estructura de datos dinámicos, conocemos algunos algoritmos óptimos de tiempo súper lineal. Esto se encuentra en el modelo de sonda celular, que es tan fuerte como la palabra RAM, es decir, este no es un modelo restringido como los árboles de decisión algebraicos.
Un ejemplo es mantener sumas de prefijo bajo actualizaciones dinámicas. Comenzamos con una matriz de números , y el objetivo es mantener una estructura de datos que permita las siguientes operaciones:A [ 1 ] , … , A [ n ]
Puede admitir fácilmente ambas operaciones en tiempo con una estructura de datos basada en un árbol binario aumentado con A [ i ] en las hojas. Patrascu y Demaine mostraron que esto es óptimo: para cualquier estructura de datos hay una secuencia de n adiciones y consultas de suma de prefijos que deben tomar un tiempo total de Ω ( n log n ) .O ( logn ) A [ i ] norte Ω ( n logn )
fuente
Muchos algoritmos de transmisión tienen límites superiores que coinciden con sus límites inferiores.
fuente
hay dos algoritmos de búsqueda algo similares que [según tengo entendido] son óptimos en función de restricciones particulares en el orden / distribución de entrada. sin embargo, las presentaciones de los algoritmos no suelen enfatizar esta optimización.
Búsqueda en la sección dorada para encontrar el máximo o mínimo (extremo) de una función unimodal. asume que la entrada es una función unimodal. lo encuentra en tiempo logarítmico en promedio. Como recuerdo, puede haber una prueba de optimismo en el libro Estructura e interpretación de programas de computadora de abelson & sussman.
La búsqueda binaria encuentra un punto en el tiempo logarítmico en promedio en una lista ordenada, pero requiere que se ingrese la información.
Estoy citando wikipedia arriba pero no tiene las pruebas de que son óptimas, tal vez la audiencia pueda encontrar otras referencias que prueben la óptima.
fuente
Muchos algoritmos de tiempo sublineales tienen límites superiores que coinciden con sus límites inferiores.
fuente