Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. - Se define la variable/estructura de datos donde se guardará la solución.
  2. - Se crea el nodo raíz.
  3. - Se define la cola de prioridad que será la estructura de nodos vivos (nodos que aún no se han podado).
  4. - Se define una lista donde se guardarán las compleciones directas de un nodo (la llamaré "hijos").
  5. - Se inicializa la cota.
  6. - Se crean las compleciones del nodo raíz y se guardan en la cola de prioridad directamente.
  7.  
  8.  
  9. mientras no es vacía la cola de prioridad -->
  10. nodoPrimero = primer nodo de la cola de prioridad
  11. si nodoPrimero es una solución -->
  12. si nodoPrimero tiene mejor estimación que la solución que ya tenemos -->
  13. asignamos en la variable solución la solución que acabamos de encontrar en nodoPrimero
  14. la variable cota tendrá el valor de la solución que acabamos de encontrar en nodoPrimero
  15. sino
  16. guardamos en "hijos" las compleciones generadas a partir de nodoPrimero
  17. // COMENTARIO: Ahora recorremos la lista "hijos" y por cada compleción que almacena, miramos si cumple la cota
  18. no. Si una compleción cumple la cota, se almacena en la cola de prioridad y luego se elimina de "hijos", que
  19. no cumple la cota, NO se almacena en la cola de prioridad y directamente se elimina de "hijos".
  20.  
  21. mientras no es vacío "hijos" hacer:
  22. si estimarBeneficio( complecionAlmacenadaEnHijos ) <= (O >=, según necesitemos) cota -->
  23. colaPrioridad.add(complecionAlmacenadaEnHijos)
  24. hijos.remove( complecionAlmacenadaEnHijos )
  25. finMientras
  26. finSino
  27.  
  28. colaDePrioridad.remove( nodoPrimero )
  29.  
  30. finMientras