Tengo algunas observaciones que son demasiado largas para comentarios. Aquí hay un resumen.
Cualquier algoritmo para resolver su problema exactamente puede usarse para resolver programas lineales exactamente (es decir, "programación lineal fuerte", que se usa en la solución de Sariel, y actualmente no tiene un algoritmo de tiempo polinómico).
El seguimiento natural es si las soluciones aproximadas (es decir, "programación lineal débil") pueden proporcionar una solución. Si bien la respuesta es sí, parece que la condición de detención para este procedimiento requiere cantidades que, que yo sepa, no se pueden calcular en tiempo polinómico. (es decir, el algoritmo encuentra algo bueno, pero certificar esto es difícil). Mi sugerencia principal aquí es hacer una definición significativa de una " solución óptima de " para su problema, en cuyo caso este enfoque es manejable. (Esta estrategia efectivamente arroja pequeñas caras del poliedro).ϵ
En general, mientras pensaba en su declaración actual de su problema, seguí encontrándome con consideraciones de eficiencia. Pero hay una intuición razonable en esto: los objetos que arrojamos (vértices, caras, etc.) son discretos y exponencialmente abundantes.
(1.) Supongamos que tenemos un algoritmo que resuelve exactamente su problema. Observe que cualquier punto expuesto de cualquier cara que contenga el punto medio proporcionado será una solución exacta al programa lineal original. Entonces proceda de la siguiente manera. Agregue una nueva restricción lineal que diga que el valor objetivo original debe ser igual al valor óptimo (que ahora sabemos), y establezca un nuevo objetivo que diga para maximizar la primera coordenada de la solución. Repita este procedimiento una vez para cada dimensión, cada vez que agregue una restricción y elija una nueva coordenada para maximizar. Este proceso reducirá la dimensión de la solución cada vez; necesariamente, cuando el proceso se completa, tenemos un conjunto afín de 0 dimensiones, lo que significa un solo punto. Así condO(d)iteraciones de su algoritmo de resolución de punto medio (y solo aumentando la descripción del problema en una cantidad de polinomios en cada vez), se resuelve una programación lineal fuerte. Esto muestra que si bien la solución de Sariel requiere una programación lineal sólida, una solución exacta a su pregunta no puede evitarla. ( Editar : tenga en cuenta que mi prueba supone un poliedro compacto (un politopo) como entrada; de lo contrario, tiene que trabajar un poco más para encontrar vértices).d
(2.) Aquí hay un esquema iterativo, que utiliza un solucionador convexo completo en cada iteración, cuyas soluciones convergerán en una noción leve de solución de punto medio. Elija una secuencia positiva pero decreciente de parámetros de penalización ; Es razonable que estos disminuyan geométricamente, es decir, . Ahora, para cada , minimice aproximadamente la función convexaλ i = 2 - i i{λi}∞i=1↓0λi=2−ii
⟨c,x⟩−λi∑j=1mln(⟨aj,x⟩−b),
donde es su objetivo original, y extiende sobre las restricciones originales , ahora colocadas en el objetivo a través de barreras logarítmicas (nota, esto es estándar). Ahora, si pensamos en la cara minimizadora (de la dimensión más grande) de su poliedro, tenga en cuenta que para y tolerancia suficientemente pequeñas para su caja negra opcional convexa, su óptimo aproximado estará cerca de esta cara, sin embargo, las barreras empujarán lo más lejos posible de las otras restricciones. Dicho de otra manera, comoj m λ i tau λ i⟨c,x⟩jmλiτλidisminuye, el objetivo lineal original eventualmente dominará algunas barreras delicadas que lo mantenían alejado de la cara apropiada, pero no afectará las barreras que lo mantienen fuera de otros límites, en particular los de la cara objetivo.
En un mundo perfecto, nos sentaríamos y determinaríamos analíticamente un valor perfecto , o al menos un tiempo de parada para que no tenga que resolver, bueno, infinitos problemas. Desafortunadamente, esto parece difícil. Una idea es, por ejemplo, determinar el ancho más pequeño de cualquier cara que tenga una dimensión mayor que 0; Este es un problema de minimización bien definido con óptimo positivo, porque hay muchas caras (y el ancho se calcula en relación con cada una). Con esto, podemos establecer suficientemente pequeño como para que la influencia de las barreras sea pequeña en el centro de cada cara. Desafortunadamente, podría haber exponencialmente muchas caras, por lo que calcular esta cantidad no tiene sentido.λλλ
Todas las condiciones de detención que pude encontrar tuvieron este tipo de dificultades computacionales. (Además, muchos podrían usarse nuevamente para convertir esto en un solucionador de programación lineal fuerte).
Por esta razón, mi recomendación es construir una noción de `` -close punto medio óptimo '', y resolverlo eligiendo y su tolerancia convexa de caja negra apropiadamente. Creo que esta es una opción razonable porque puede que realmente no te interesen las caras que tienen un ancho máximo como máximo .λ τ ϵϵλτϵ
(Algunos comentarios finales.) Parece que la noción de "punto medio" es crucial; El comentario de Sasho señala que el centroide (¿centro de masa?) Es un problema extremadamente difícil, mientras que encontrar, digamos, la bola inscrita más grande es fácil. Las barreras logarítmicas que he sugerido anteriormente en general no serán consistentes con ninguna de estas nociones de punto medio. Por otro lado, para las barreras y la pelota, puede derivar un límite inferior en la distancia desde su centroide hasta el límite relativo de la cara; tal vez esto te sea más útil?
Por último, según su descripción, ¿creo que quiso decir que la "cara objetivo" tenía la mayor dimensión posible? Esto está bien definido, sin embargo, también hay caras de solución para todas las dimensiones más pequeñas posibles. De todos modos, tanto el enfoque de Sariel como el enfoque de barrera anterior funcionarán con la cara de la dimensión más grande.