uni
Questo è un algoritmo di Complessità esponenziale usato per i Problema di Programmazione Lineare Intera (PLI) booleani (anche se si può usare per quelli interi).
Si fonda sul concetto di Albero di Enumerazione Totale.
È possibile applicarlo a qualsiasi Problema di Programmazione Lineare Intera (PLI), basta che abbia una ed una facilmente calcolabili.
Algoritmo
Parto con come valore corrente.
Tramite le regole di taglio:
Taglio un ramo e scopro se tra le soluzioni sotto quel ramo ce ne è una migliore del valore corrente, in caso contrario taglio via quel ramo e quindi nego la variabile di quel ramo.
Se invece trovo un valore migliore, lo tengo come valore corrente, taglio il ramo e fisso la variabile di quel ramo.
Tagliare: visita implicita del sottoalbero, ovvero ho tutte le informazioni che mi servono su tutte le foglie del sottoalbero.
Questo algoritmo finisce quando ho fatto una visita implicita per ogni ramo.
Regole di Taglio (Branch)
minimo (TSP)
con stadio , ramo .
devo controllare poiché più scendo e più restringo la Regione Ammissibile (aggiungo vincoli).
Calcolo , ovvero l’ottimo del Rilassato continuo di , se è maggiore del valore corrente posso tagliare.- se e allora aggiorno con
massimo (TSP)
Tenendo come riferimento il Problema dello Zaino (quindi di )
con stadio , ramo .
Calcolo , ovvero l’ottimo del Rilassato continuo di , se è minore o uguale del valore corrente posso tagliare.- se e ( ovvero componenti intere) allora aggiorno con allora scatta la regola 2 e taglio.