¿Por qué la programación lineal en P pero la programación entera son NP-hard?

35

La programación lineal (LP) está en P y la programación entera (IP) es NP-hard. Pero dado que las computadoras solo pueden manipular números con precisión finita, en la práctica una computadora usa números enteros para la programación lineal. Debido a esto, ¿no deberían LP e IP estar en la misma clase de complejidad?

Sasha el novato
fuente
77
Agregando un poco a la respuesta de jmite: hay muchos casos en los que las restricciones de integralidad hacen que el problema sea mucho más difícil. Por ejemplo, el problema de la mochila fraccional se puede resolver en tiempo polinómico, aunque el problema de la mochila entera es NP-Hard. Así que esto no es solo algo que es cierto para LP e IP.
user340082710
77
Incluso si consideramos que las computadoras realizan operaciones con números enteros, no significa que la solución devuelta sea un número entero; puede ser racional, es decir , relación de dos enteros. Y eso le da mucha más flexibilidad. Y, por supuesto, no siempre podemos convertir una solución racional en una solución viable para la IP. En general, la IP tendrá más restricciones sobre las variables que solo pedir una solución integral. Piense en un programa entero de . 0 0,1
megas
1
Si lo desea, no es tan difícil manipular números con precisión infinita, especialmente cuando son racionales. La precisión finita es simplemente una optimización para reducir tiempos de ejecución.
2
@Hurkyl "No es tan difícil manipular números con precisión infinita si lo desea, especialmente cuando son racionales". Hay un subconjunto estricto de los números reales llamados números computables, que incluye racionales + números como sqrt (2), etc ... y se define como el conjunto de números computables por una máquina de Turing. Los que no están incluidos allí, por definición, no pueden ser manipulados por una computadora.
Sasha the Noob
1
@SashatheNoob Lo que estás diciendo no está realmente en desacuerdo con lo que dijo Hurkyl. Los números computables no tienen un límite máximo predefinido de cuán precisos pueden ser (se establece arbitrariamente en cualquier valor que desee siempre que la máquina de Turing tenga suficiente memoria, por lo tanto, precisión infinita). Para decir que el subconjunto de Números Computables incluye todos los números racionales, está admitiendo que las computadoras pueden manipular números con precisión infinita. (La afirmación de Hurkyl es absolutamente cierta. El hecho de que la precisión sea limitada para ciertos tipos de datos es simplemente una optimización.)
BrainSlugs83

Respuestas:

9

No puedo comentar ya que requiere 50 repeticiones, pero hay algunas ideas falsas que se están difundiendo, especialmente el comentario de Raphael "En general, un dominio continuo significa que no hay fuerza bruta (ni heurísticas inteligentes para acelerarlo)".

Esto es absolutamente falso. El punto clave es de hecho convexidad. Salvo algunas calificaciones de restricción técnica, minimizar una función convexa (o maximizar una función cóncava) sobre un conjunto convexo es esencialmente trivial, en el sentido de convergencia de tiempo polinomial.

Hablando en términos generales, se podría decir que existe una correspondencia entre la convexidad de un problema en la optimización "matemática" y la viabilidad de los algoritmos codiciosos en la optimización "informática". Esto es en el sentido de que ambos habilitan métodos de búsqueda local. Nunca tendrá que retroceder en un algoritmo codicioso y nunca tendrá que arrepentirse de una dirección de descenso en un problema de optimización convexa. Las mejoras locales en la función objetivo SIEMPRE lo llevarán más cerca del óptimo global.

Esto no es así en el caso no convexo. Aquí, puede haber un mínimo global, pero varios mínimos locales a los que siempre se atraerá un algoritmo de descenso local, de la misma manera que lo hacen los algoritmos codiciosos cuando se aplican a problemas NP. A veces encuentran el verdadero óptimo, la mayoría de las veces no.

Benjamin Lindqvist
fuente
23

La respuesta corta: porque puedes usar números enteros para simular booleanos para SAT , pero cuando no te limitas a esto, entonces no puedes simular SAT. Obtendrá una respuesta factible, pero ya no tiene ningún significado en términos de cualquier instancia de SAT que intentara simular.

PAGSnortePAGS

jmite
fuente
21

La razón por la que la programación lineal es "eficiente" es que el espacio de solución puede estar representado por un solo poliedro convexo. Si uno está tratando de encontrar el vértice "más alto" en ese poliedro (uno puede aplicar una transformación lineal a cualquier problema de programación lineal para hacer que la "altura" se corresponda con la cantidad a maximizar), entonces desde cualquier vértice uno puede viajar a lo largo de los bordes para el punto más alto sin tener que ir "cuesta abajo". Lo que hace que la programación de enteros sea "difícil" es que no hay un espacio de solución continuo, sino que hay muchos espacios de solución disjuntos , y no hay forma de trabajar incrementalmente hacia la solución óptima.

Super gato
fuente
2
La palabra clave aquí es "convexidad"
cody
1
¿No es esta escalada el método simplex, del cual no se sabe que ninguna variante sea polinómica en el peor de los casos?
jbapple
1
Hay muchos problemas que son más fáciles de resolver en espacios discretos (que permiten búsquedas discretas) que en espacios continuos.
Raphael
@Raphael: ¿puedes dar algunos ejemplos de tales problemas? He estado pensando en esto y no puedo pensar en muchos.
cody
@cody Encontrar máximos / mínimos de funciones (unidimensionales), por ejemplo. Vea aquí un lindo ejemplo que se vuelve accesible solo después de señalar que podemos reducir el espacio de búsqueda finito a uno finito. Tenga en cuenta que los LP son algo especiales de esa manera: al señalar que solo necesitamos considerar las esquinas de un poliedro, obtenemos un espacio de búsqueda finito. En general, un dominio continuo significa que no hay fuerza bruta (ni heurísticas inteligentes para acelerarlo).
Raphael
3

Las otras respuestas son correctas, pero las encuentro un poco técnicas. Suponga que ha barrido (eliminado) una matriz y está buscando cualquier solución y la matriz se ve así:

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

Q

Albert Hendriks
fuente