¿Cuáles son algunos problemas donde sabemos que tenemos un algoritmo óptimo?


15

¿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?


11
Una máquina de turing es un modelo complicado para los límites inferiores. Cambiar la definición puede cambiar el polinomio en el tiempo de ejecución, por lo que debe ser un poco más específico.
Suresh Venkat

¿Cómo define no trivial?
funkstar

1
Como dice Suresh, el tipo de TM que utilizas tiene una influencia. Supongo que para el lenguaje de los palíndromos (palabras que puedes leer al revés), tenemos una TM óptima de 1 cinta que toma pasos para decidir el idioma. Y para TM de 2 cintas, es decidible en tiempo lineal, por lo tanto, también es bastante óptimo. O(norte2)
Bruno

Respuestas:


18

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.


10
Del mismo modo, cualquier algoritmo cuyo tiempo de ejecución sea del mismo orden que el tamaño de salida es óptimo.
Raphael

99
Creo que esta respuesta y el comentario que sigue son el estado del arte completo.
Jeff el

99
Bueno, esto fue decepcionante
sture

1
Para el registro, el comentario de Jɛ ff E parece referirse a la respuesta de Shir a continuación.
András Salamon

1
Me refería a la respuesta de Max, no a la de Shir, y al comentario de Raphael sobre la respuesta de Max.
Jeffε

8

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,...,XnorteyoXyo=norteyonorte/ /2yoO(norte)consultas a la cadena. Esto también se ha demostrado óptimo.


2
De hecho, la complejidad de la consulta es la base subyacente de la respuesta de Max. Para la mayoría de los problemas, cualquier algoritmo "tiene que leer la entrada completa" o al menos una fracción constante de la entrada.
Jeff el

6
  • Si está dispuesto a cambiar su modelo, hay bastantes límites inferiores en las estructuras de datos. Consulte Límites inferiores para estructuras de datos para ver punteros a buenas referencias para límites inferiores en estructuras de datos.
  • Desde el límite para clasificar en el modelo de comparación que algunas personas han mencionado aquí, puede obtener un límite similar para el problema del casco convexo considerando el caso en el que la entrada se compone de puntos a lo largo del gráfico de un función creciente en el primer cuadrante del plano.Ω(nortelosolnorte)

2
+1 por mencionar estructuras de datos. Pero no creo que sea posible obtener un límite inferior útil para los cascos convexos a través de los límites inferiores de comparación para la clasificación. La razón es que el modelo de comparación no es lo suficientemente potente como para calcular los cascos convexos. En cambio, lo que funciona es usar un modelo más poderoso, como árboles de decisión algebraicos en los que se puedan calcular los cascos, y luego adaptar el límite inferior para clasificar a este modelo más poderoso.
David Eppstein el

Tiene sentido, gracias por la aclaración!
Abel Molina

3
  1. 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(norteIniciar sesiónnorte)norte!

  2. 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 ).PAGnortePAG

  3. 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.


2
Si el ítem 2 responde o no a la pregunta depende de lo que el autor de la pregunta entienda por "óptimo", aunque dudo que el autor de la pregunta pregunte en ese sentido (de lo contrario, hay muchos, muchos resultados de aproximación ajustados que ni siquiera requieren UGC). Además, no creo que ni el ítem 1 ni el 3 respondan la pregunta.
Tsuyoshi Ito

@ TsuyoshiIto, es difícil adivinar qué quiso decir exactamente el autor de la pregunta, que es lo que me hizo probar respuestas en varias direcciones con la esperanza de encontrar algo útil para él / ella. ¿Qué te hace decir que (1) no es una respuesta válida, por cierto?
Shir

2
El autor de la pregunta solicita específicamente un algoritmo óptimo para la máquina de Turing .
Tsuyoshi Ito

66
¿La "clasificación por comparación" es realmente un "problema"? ¿O es un problema y una restricción en el modelo de computación?
Jeffε

3

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=METRO,X,tMETROXtMETRO(X)tO(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).METROO(tIniciar sesiónt)Ω(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(El |θEl |)


3

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={0 02kEl |k0 0}Ω(norteIniciar sesiónnorte)


3

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:UN[1],...,UN[norte]

  • Agregue a A [ i ] , dados i y ΔΔUN[yo]yoΔ
  • Calcule la suma del prefijo , dado ij=1yoUN[yo]yo

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(Iniciar sesiónnorte)UN[yo]norteΩ(norteIniciar sesiónnorte)

{1,...norte}

  • yojyoj
  • yoyo

O(α(norte))αnorteΩ(norteα(norte))


1

Muchos algoritmos de transmisión tienen límites superiores que coinciden con sus límites inferiores.


0

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.

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.


-1

Muchos algoritmos de tiempo sublineales tienen límites superiores que coinciden con sus límites inferiores.


3
Marcado como un duplicado.
Jeffε

El algoritmo de tiempo sublineal y el algoritmo de transmisión son áreas diferentes.
Bin Fu

1
Eso es cierto, pero debes combinar las respuestas en una sola.
Suresh Venkat

Algunos ejemplos de algoritmos óptimos de tiempo sublineal pueden ser
Bin Fu

1
Tampoco está claro por qué esto no es un duplicado de la respuesta de complejidad de la consulta.
Artem Kaznatcheev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.