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, solo tenemos que poner el elemento de mayor utilidad (con un tamaño compatible con el tamaño restante en la bolsa) hasta que no quede más espacio en la bolsa.
Para esto consideraremos X y w los vectores de elección del objeto y su peso ordenados por orden decreciente de eficacia (eficiencia = utilidad / peso). Entonces el algoritmo funciona como el método ingenuo.
Fuerza bruta o enumeración
En general, el árbol de soluciones se representa como sugiere el nombre en forma de árbol. Considere 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. El número de nodos generados hasta el objeto n es por lo tanto 2no -1.
