Sé que los problemas de la mochila 2D y 3D son NPC, pero ¿hay alguna forma de resolverlos en un tiempo razonable si las instancias no son muy complicadas? ¿Funcionaría la programación dinámica?
Por mochila 2D (3D) quiero decir que tengo un cuadrado (cubo) y una lista de objetos, todos los datos están en centímetros y tienen como máximo 20 m.
Respuestas:
Knapsack puede ser resuelto por programación dinámica en pseudo-polinomio tiempo con el número de objetos y el tamaño de la mochila. Por lo tanto, siempre que su contenedor sea pequeño (numéricamente), puede resolver el problema de manera eficiente. Tenga en cuenta que puede ajustar cambiando la resolución; no es necesario medir un contenedor de envío por µm, pero los medidores probablemente sean gruesos (dependiendo de sus objetos).O(nW) n W W
La mochila también se puede aproximar arbitrariamente bien en tiempo polinómico (ver esquemas de aproximación de tiempo polinómico ).
Sin embargo, la mochila solo considera los números adecuados en otro número; No le importa la geometría. Si necesita "rompecabezas", necesita otro problema; considerando Tetris, esto es probablemente mucho más difícil que la mochila .
fuente
GREEDY siempre encontrará una solución razonable, pero no necesariamente la óptima. Simplemente coloque el objeto más grande que quepa cada vez en la mochila. Detente cuando no quepan más objetos.
fuente