Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi Lezione del 10/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design and analysis of algorithms” Edizioni: Addison Wesley Capitolo 2 del testo Ausiello,Petreschi “L’Informatica Invisibile” Edizioni: Mondadori Sapienza
Somma di sottoinsiemi INPUT: m>0 , W =(w1w2 … wn), wi>0 (1≤i≤n) PROBLEMA: trovare tutti i sottoinsiemi di W la cui somma sia uguale ad m ESEMPIO: dati (w1w2 w3 w4 ) = (11,13,24,7) e m =31, i sottoinsiemi cercati sono (11,13,7) e (24,7) Queste due soluzioni si possono indicare come t-ple: xi = indici dei wi scelti (1,2,4) e (3,4), ovvero con t-ple di diversa dimensione; xi = 1 / 0 a seconda che wi sia stato selezionato o no (1,1,0,1) e (0,0,1,1), in questo caso le t-ple sono di dimensione fissata uguale ad n. VINCOLI ESPLICITI: xi in j/ j intero, 1≤j≤k e 1≤k≤n xi in 0,1 VINCOLI IMPLICITI: xi ≠ xj e xi ≤ xi+1 per 1≤ i <k e 1≤j≤k ∑wixi ≤ m 1≤ i <k, 1≤k≤n SPAZIO DELLE SOLUZIONI: 2n t-ple distinte 2
Ciclo Euleriano/ Ciclo Hamiltoniano CICLO EULERIANO passa per ogni arco del grafo una e una sola volta Proprietà strutturale G tutti i nodi di grado pari CICLO HAMILTONIANO passa per ogni nodo del grafo una e una sola volta Proprietà strutturale ???????? DODECAEDRO DI HAMILTON 3
Ciclo Hamiltoniano INPUT: G =(V,E) connesso, V=n PROBLEMA: trovare un (tutti) i cicli hamiltoniani di G, se esistono RAPPRESENTAZIONE: con t-ple di dimensione n (x1,x2,…xn), xi rappresenta l’i-esimo vertice visitato nel ciclo proposto VINCOLI ESPLICITI: la t-pla è una permutazione VINCOLI IMPLICITI: (xi xi+1 ) deve essere un arco Per evitare di generare più volte uno stesso ciclo, assumiamo che il primo elemento della permutazione sia sempre il vertice 1 del grafo 4
La tecnica del Branch and Bound E’ usata per problemi di ottimizzazione. Rispetto al Backtracking richiede in più per ogni nodo: di poter calcolare un limite superiore (o inferiore) rispetto al valore delle soluzioni ammissibili raggiungibili da quel nodo; di conoscere il valore della migliore soluzione calcolata fino a quel momento. Una soluzione ottima è una soluzione ammissibile che raggiunge il miglior valore per la funzione obiettivo. 5
L’albero degli stati Nell’albero degli stati classifichiamo i nodi in tre tipi a seconda che rappresentino genericamente uno stato del problema, uno stato soluzione o uno stato risposta. Uno stato soluzione è uno stato s del problema per il quale il cammino da dalla radice ad s definisce una t-pla nello spazio delle soluzioni (spazio delle soluzioni:tutti i cammini dalla radice agli altri nodi). Uno stato risposta è uno stato soluzione la cui t-pla appartiene all’insieme delle soluzioni. Una volta che si è stabilita la natura dell’albero degli stati, il problema si risolve generando sistematicamente gli stati del problema, determinando quali di questi siano stati soluzione e infine quali siano stati risposta 6
Come generare l’albero degli stati NodoE: Nodo vivo o da espandere, ovvero nodo i cui figli debbono ancora essere generati. Nodo morto: nodo che non può più essere espanso perché non ha figli da generare o perché una qualche funzione soglia lo ha ucciso. Backtracking: generazione dell’albero tramite DFS con funzione soglia. Branch and Bound: tutti i figli di un nodoE sono generati prima che un altro nodo sia considerato da espandere. La lista dei nodi da espandere può essere memorizzata tramite struttura FIFO (BFS) o tramite struttura LIFO(DS) 7
Criteri di terminazione L’espansione dell’albero su un ramo termina quando: il valore del limite in quel nodo non è migliore di quello della migliore soluzione ottenuta fino a quel momento; la soluzione rappresentata dal nodo viola i vincoli (non è ammissibile); il nodo non ha più figli verso cui espandersi. 8
Il problema dell’assegnamento INPUT: n persone, n differenti lavori. Matrice dei costi C(nxn):il costo dell’assegnamento della persona i al lavoro j è la quantità C(i,j). PROBLEMA: assegnare n persone ad n lavori (ogni persona ad esattamente un lavoro, ogni lavoro ad esattamente una persona) in modo da rendere il costo totale dell’assegnamento il minore possibile. ALTRA FORMULAZIONE: Selezionare un elemento in ogni riga della matrice in modo tale che la somma degli elementi selezionati sia la più piccola possibile e nessuna coppia di elementi selezionati sia sulla stessa colonna. LOWER BOUND: Somma dei valori minimi sulle singole righe, che in generale non è una soluzione ammissibile. TECNICA: best-first branch and bound SOLUZIONE POLINOMIALE: metodo ungherese 9
Il problema della bisaccia INPUT: n elementi ciascuno di peso wi e valore vi e una bisaccia di capacità W. PROBLEMA: trovare la migliore scelta di elementi che non superando la capacità della bisaccia, ottimizzi il guadagno della scelta stessa. CONVENIENZA: Ordinare in modo non decrescente rispetto al rapporto valore/peso v1/w1 ≥ v2/w2 ≥ v3/w3 ≥…≥vn/wn UPPER BOUND: ub = Svk + (W-Swk)(vi+1/wi+1 ), k= 1,…i, i=1,…n TECNICA: best-first branch and bound 10
Il problema del commesso viaggiatore IL NOME: data una rete di città, connesse tramite delle strade, trovare il percorso di minore lunghezza che un commesso viaggiatore deve seguire per visitare tutte le città una e una sola volta. IL MODELLO: un grafo pesato i cui nodi rappresentano le città, gli archi le strade fra le città e i pesi sugli archi la distanza fra le due città in considerazione. PROBLEMA: trovare il ciclo di minor peso (minor lunghezza) che passi per tutti i nodi una e una sola volta. CONFRONTO: la differenza con il circuito hamiltoniano è che qui il grafo è pesato LOWER BOUND 1: ub = distanza minima fra tutte le città moltiplicata per n LOWER BOUND 2: ub = Ssi /2, 1≤i≤n, dove si è la somma delle distanze dalla città i alle due città ad essa più vicine 11