Contenido
PalancaAlgoritmo ingenuo
Tomemos por ejemplo un problema de mochila. El algoritmo ingenuo consistiría en tomar primero los objetos de menor tamaño hasta que no se puedan poner más objetos nuevos en la bolsa.
para I de 1 Para no si w [i] + w_conso ≤ W entonces x [i]: = 1 w_conso: = w_conso + w [i] de lo contrario x [i]: = 0 terminara si final para
Algoritmo codicioso (método intuitivo)
Intuitivamente, podemos decirnos que para maximizar la utilidad en el problema de la mochila, basta con poner el elemento de mayor utilidad (con un tamaño compatible con el tamaño restante en la bolsa) hasta que no tenga más espacio en la bolsa.
Para esto consideraremos X y w los vectores de la elección del objeto y de su peso ordenados en orden decreciente de eficiencia (eficiencia = utilidad / peso). Entonces el algoritmo funciona como el método ingenuo.
Fuerza bruta o enumeración
Por lo general, el árbol de soluciones se representa como su nombre indica como un árbol. Tomemos el ejemplo del problema de la mochila con cuatro objetos con los siguientes parámetros y un tamaño de bolsa de 30:
objeto | 1 | 2 | 3 | 4 |
u_i | 7 | 3 | 4 | 3 |
Wisconsin | 13 | 8 | 12 | 10 |
El árbol se construye por iteración: en cada iteración, las nuevas hojas representan si tomar o no el siguiente objeto. Obtenemos el siguiente árbol binario:
Las tapas en rojo superan el tamaño máximo de bolsa, la tapa en violeta es la solución óptima. Como puede ver, el número de hojas es igual a 2(n-1) para el objeto no. Por tanto, el número de nodos generados hasta el objeto n es 2no -1.