Backtracking/ Branch and Bound Lezione n°12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione 12 Le Tecniche BT e BB BT e BB sono evoluzioni della tecnica di ricerca esaustiva della soluzione. Costruiscono la ipotetica soluzione una componente alla volta e, ad ogni passo, valutano la componente parziale costruita. Se si riconosce che non esiste alcuna possibile espansione della soluzione parziale che possa portare ad una soluzione accettabile si interrompe la ricerca esaustiva. Con questo approccio si possono praticamente affrontare diversi problemi combinatorici di grandi dimensione. Va sottolineato che, comunque, nel caso peggiore, si raggiungono, come nella ricerca esaustiva, complessità esponenziali. ASD a.a.2010/2011- Lezione 12 BT vs BB BB: applicabie solo a problemi di ottimizzazione perché controlla la soluzione parziale rispetto alla funzione obiettivo. BT: non ha alcuna particolare limitazione, ma tipicamente non è adoperata per problemi di ottimizzazione. BT: genera l’ albero delle decisoni tramite visita in profondità. BB: genera l’ albero delle decisoni tramite scelta della migliore opportunità. Albero delle decisioni: albero che ad ogni nodo rappresenta tutte le possibili scelte effettuabili in quell’istante ASD a.a.2010/2011- Lezione 12 11 Il problema delle 8 regine Come disporre otto regine su una scacchiera (8×8) in modo tale che nessuna possa mangiarne un’altra? REGOLE: la regina si può muovere in orizzontale, in verticale e in diagonale di un qualunque numero di caselle, di conseguenza ogni regina deve avere la propria riga, la propria colonna e le proprie diagonali libere. Le dodici soluzioni base del problema delle 8 regine da cui, per riflessione e rotazione, si ottengono tutte le 92 soluzioni (1874, Gleisher e Gunther) 15863724 16837425 17468253 17582463 24683175 25713864 25741863 26174835 26831475 27368514 27581463 28613574 ASD a.a.2010/2011- Lezione 12 11 Esempio (4x4) ASD a.a.2010/2011- Lezione 12 11 Esempio (4x4) ASD a.a.2010/2011- Lezione 12 11 CIRCUITO HAMILTONIANO Circuito (cammino) hamiltoniano è un circuito (cammino) che passa per tutti i nodi del grafo esattamente una volta. Nel 1859 il matematico irlandese W.R. Hamilton mise in circolazione un rompicapo di legno a forma di dodecaedro regolare. Ad ognuno dei 20 nodi del dodecaedro era associato il nome di una città e il problema consisteva nel cercare un itinerario lungo gli archi del solido che visitasse una e una sola volta le varie città. Il percorso selezionato veniva memorizzato con uno spago che si arrotolava intorno a dei chiodi fissati ai nodi. ASD a.a.2010/2011- Lezione 12 11 CIRCUITO EULERIANO Circuito (cammino) euleriano è un circuito (cammino) che passa per tutti gli archi del grafo esattamente una volta. (Eulero1736) Nella città di Konisberg esiste un’isola A chiamata Kneiphof attorno a cui fluiscono due rami del fiume Pregel. Vi sono sette ponti a, b, c, d, e, f, g che attraversano i due rami. La questione è se una persona possa scegliere una passeggiata che la porti ad attraversare ognuno dei ponti una volta ma non più di una volta, tornando alla fine al punto di partenza. ASD a.a.2010/2011- Lezione 12 11 CIRCUITO EULERIANO vs CIRCUITO HAMILTONIANO Esiste una proprietà strutturale del grafo che garantisce l’esistenza di un ciclo euleriano: Ogni grafo connesso che abbia tutti i nodi di grado pari ha un ciclo euleriano. Poiché è facile calcolare i gradi di un grafo, ne consegue che è facile determinare se un grafo ha un ciclo euleriano. Non si conosce, e non si sa se esista, una proprietà strutturale che garantisca l’esistenza di un ciclo hamiltoniano. ASD a.a.2010/2011- Lezione 12 11 IL PROBLEMA DEI SOTTOINSIEMI PESATI Dato un insieme S = (s1,…sn) di n interi positivi, trovare un sottoinsieme di S la somma dei cui elementi sia uguale ad un dato numero positivo d. E’ conveniente ordinare l’insieme degli elementi in ordine crescente. L’albero è binario. ASD a.a.2010/2011- Lezione 12 11 Il metodo in generale Un algoritmo di backtracking è un metodo di analisi esaustiva, ma controllata, applicabile ad una classe di problemi di ricerca le cui soluzioni sono vettori (x1 x2 … xi …xf), 1≤f≤n, soddisfacenti alcuni vincoli predefiniti. Ogni xi appartiene ad un insieme finito linearmente ordinato Xi. Un algoritmo di backtracking genera, esplicitamente o implicitamente un albero i cui nodi rappresentano t-ple parzialmente costruite durante i vari passi dell’algoritmo.La radice contiene la t-pla vuota. ASD a.a.2010/2011- Lezione 12 11 Dalla t-pla j-esima alla j+1-esima A partire dalla t-pla j-esima w = (x1 x2 … xj) , si genera la t-pla (j+1)-esima v = (x1 x2 … xj+1) con xj+1 primo elemento in Xj+1 non ancora considerato. Si ha: 1. v è una soluzione finale del problema: la soluzione viene memorizzata (termina se una soluzione è sufficiente) 2. 3. . v è una soluzione parziale del problema: l’algoritmo passa dalla t-pla j+1esima alla t-pla j+2-esima v non è né soluzione finale né soluzione parziale: - se vi sono ancora elementi da scegliere in Xj+1, si prende il primo disponibile come nuovo xj+1 e si torna al passo 1; - se non vi sono più elementi da scegliere in Xj+1, ,si torna alla t-pla j-esima, si sostituisce xj con il primo elemento elegibile in Xj e si torna al passo 1. Se ancora non vi sono più elementi da scegliere, si torna alla t-pla (j-1)-esima e si sostituisce xj-1, se possibile. ASD a.a.2010/2011- Lezione 12 11 ….per cercare di migliorare Il BT è un metodo di ricerca esaustiva “limitata”. Per cercare di diminuire il tempo di ricerca si possono aggiungere considerazioni ulteriori specifiche rispetto al singolo problema considerato. 1. 2. 3. Analizzare le simmetrie (8 regine) Preassegnare il valore di alcune componenti della soluzione finale (circuito hamiltoniano) Organizzare i dati in modo opportuno prima di iniziare a costruire l’albero (sottoinsiemi pesati) . ASD a.a.2010/2011- Lezione 12 11 Il metodo BB Un algoritmo BB rafforza l’idea del BT di tagliare un ramo dell’albero delle decisioni non appena si vede che non può portare ad una soluzione. Infatti, poiché il BB è applicato solo a problemi di ottimizzazione, dove si deve arrivare ad una soluzione che minimizzi (o massimizzi) una certa funzione obiettivo, ad ogni nodo i si deve calcolare un limite relativo a qualunque soluzione generabile dal nodo stesso. Il ramo verrà potato quando • Il limite calcolato nel nodo i non migliora il miglior limite già trovato nell’analisi dei nodi precedenti. • Il nodo non rappresenta una soluzione ammissibile per il problema. ASD a.a.2010/2011- Lezione 12 11 Il problema dell’assegnamento Si vogliono assegnare n persone ad n lavori in modo da pagare il minor costo totale possibile per l’intero lavoro. Lavoro 1 Lavoro 2 Lavoro 3 Lavoro 4 9 2 7 8 Costo ≥ 10 a b 6 4 3 7 c 5 8 1 8 d 7 6 9 4 ASD a.a.2010/2011- Lezione 12 11 Il problema della bisaccia Il problema della bisaccia consiste nel trovare la soluzione economicamente più vantaggiosa per riempire una bisaccia di capacità W con un sottoinsieme di oggetti scelti fra un insieme X = (x1,…, xi, …,xn), dove ad ogni xi è assegnato un peso wi ed un valore vi . E’ opportuno: • Ordinare le xi in ordine decrescente rispetto al rapporto valore/peso. • Costruire un albero delle decisioni binario dove il figlio sx indica nodo xi presente mentre il figlio dx indica nodo xi assente. In ogni nodo saranno memorizzate le somme dei pesi e dei valori relativi ai nodi scelti nel cammino dalla radice al nodo stesso. • Per scegliere la migliore opportunità, in ogni nodo si calcola un upper bound, ub, che misura una “previsione” di risultato a partire dal nodo considerato ub = v + (W - w) (vi+1 / wi+1) ASD a.a.2010/2011- Lezione 12 11 Il problema del commesso viaggiatore 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, ovvero, dato un grafo completo pesato, trovare il ciclo hamiltoniano di minor costo. E’ opportuno: • Calcolare un lower bound, lb, per la lunghezza di ogni cammino. • Partire da un nodo fissato. • Dato che il grafo è non orientato, fissare l’ordine fra due adiacenti del nodo radice. ASD a.a.2010/2011- Lezione 12 11 Come trovare una buona limitazione? Trovare una buona limitazione per risolvere il BB tramite la scelta della migliore opportunità NON è un problema di facile soluzione. Si richiede di cercare una funzione: • FACILE da calcolare, altrimenti peggioreremmo la complessità dell’algoritmo; • NON SEMPLICISTICA, altrimenti fallisce lo scopo di tagliare rami dell’albero. Trovare il punto di incontro fra queste due richieste comporta un grosso lavoro di sperimentazione su numerose istanze del problema. ASD a.a.2010/2011- Lezione 12 11