Por lo general, los algoritmos eficientes tienen un tiempo de ejecución polinómico y un espacio de solución exponencialmente grande. Esto significa que el problema debe ser fácil en dos sentidos: primero, el problema puede resolverse en un número polinómico de pasos y, en segundo lugar, el espacio de la solución debe estar muy estructurado porque el tiempo de ejecución es solo poliligarítmico en el número de soluciones posibles.
Sin embargo, a veces estas dos nociones divergen, y un problema es fácil solo en el primer sentido. Por ejemplo, una técnica común en algoritmos de aproximación y complejidad parametrizada es (aproximadamente) demostrar que el espacio de la solución en realidad puede restringirse a un tamaño mucho más pequeño que la definición ingenua y luego usar la fuerza bruta para encontrar la mejor respuesta en este espacio restringido . Si podemos restringirnos a priori a, digamos, n ^ 3 respuestas posibles, pero aún necesitamos verificar cada una, entonces, en cierto sentido, estos problemas siguen siendo "difíciles" en el sentido de que no hay mejor algoritmo que la fuerza bruta.
Por el contrario, si tenemos un problema con un número doblemente exponencial de posibles respuestas, pero podemos resolverlo en solo tiempo exponencial, entonces me gustaría decir que tal problema es "fácil" ("estructurado" puede ser mejor palabra) ya que el tiempo de ejecución es solo un registro del tamaño del espacio de la solución.
¿Alguien sabe de algún documento que considere algo como la dureza basada en la brecha entre un algoritmo eficiente y la fuerza bruta o dureza en relación con el tamaño del espacio de la solución?
¿Cómo trataría los problemas típicos de programación dinámica? Aquí, lo que sucede a menudo es que el espacio de soluciones óptimas está limitado polinómicamente, pero el espacio de soluciones no lo está. Por lo tanto, parece "fácil" en su sentido porque el tiempo de ejecución es logarítmico en el espacio de la solución, pero es "difícil" en su sentido porque ejecuta "fuerza bruta" sobre todas las soluciones potencialmente óptimas.
fuente
La perspectiva parece asumir algunas cosas, como la finitud de los espacios de solución.
Por ejemplo, piense en el problema de generar una teselación de Voronoi a partir de un conjunto de puntos de entrada. Aquí hay un espacio de solución de tamaño infinito ya que cada punto en los bordes del diagrama es una tupla de números reales. Sin embargo, se puede llegar a una solución en O (n log (n)) en el número de puntos de entrada (para el plano).
fuente
Relacionados están los problemas que admiten algoritmos con retraso polinómico . La primera solución, y todas las soluciones posteriores, se pueden generar en tiempo polinómico. Johnson, Yannakakis y Papdimitriou discuten este marco en el contexto de otras lagunas posibles (como el tiempo total polinómico): Sobre la generación de todos los conjuntos independientes máximos , Information Processing Letters 27 , 119–123, 1988.
fuente