- Se define la variable/estructura de datos donde se guardará la solución.
- Se crea el nodo raíz.
- Se define la cola de prioridad que será la estructura de nodos vivos (nodos que aún no se han podado).
- Se define una lista donde se guardarán las compleciones directas de un nodo (la llamaré "hijos").
- Se inicializa la cota.
- Se crean las compleciones del nodo raíz y se guardan en la cola de prioridad directamente.
mientras no es vacía la cola de prioridad -->
nodoPrimero = primer nodo de la cola de prioridad
si nodoPrimero es una solución -->
si nodoPrimero tiene mejor estimación que la solución que ya tenemos -->
asignamos en la variable solución la solución que acabamos de encontrar en nodoPrimero
la variable cota tendrá el valor de la solución que acabamos de encontrar en nodoPrimero
sino
guardamos en "hijos" las compleciones generadas a partir de nodoPrimero
// COMENTARIO: Ahora recorremos la lista "hijos" y por cada compleción que almacena, miramos si cumple la cota
no. Si una compleción cumple la cota, se almacena en la cola de prioridad y luego se elimina de "hijos", que
no cumple la cota, NO se almacena en la cola de prioridad y directamente se elimina de "hijos".
mientras no es vacío "hijos" hacer:
si estimarBeneficio( complecionAlmacenadaEnHijos ) <= (O >=, según necesitemos) cota -->
colaPrioridad.add(complecionAlmacenadaEnHijos)
hijos.remove( complecionAlmacenadaEnHijos )
finMientras
finSino
colaDePrioridad.remove( nodoPrimero )
finMientras