ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12
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 11 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
ASD a.a.2010/2011- Lezione 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) ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 11 Esempio (4x4) ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 11 Esempio (4x4) ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 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
ASD a.a.2010/2011- Lezione 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
ASD a.a.2010/2011- Lezione 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
ASD a.a.2010/2011- Lezione 11 IL PROBLEMA DEI SOTTOINSIEMI PESATI Dato un insieme S = (s 1,…s n ) 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
ASD a.a.2010/2011- Lezione 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 (x 1 x 2 … x i …x f ), 1≤f≤n, soddisfacenti alcuni vincoli predefiniti. Ogni x i appartiene ad un insieme finito linearmente ordinato X i. 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
ASD a.a.2010/2011- Lezione 11 Dalla t-pla j-esima alla j+1-esima A partire dalla t-pla j-esima w = (x 1 x 2 … x j ), si genera la t-pla (j+1)-esima v = (x 1 x 2 … x j+1 ) con x j+1 primo elemento in X j+1 non ancora considerato. Si ha: 1.v è una soluzione finale del problema: la soluzione viene memorizzata (termina se una soluzione è sufficiente) 2.v è una soluzione parziale del problema: l’algoritmo passa dalla t-pla j+1- esima alla t-pla j+2-esima 3.v non è né soluzione finale né soluzione parziale: - se vi sono ancora elementi da scegliere in X j+1, si prende il primo disponibile come nuovo x j+1 e si torna al passo 1; - se non vi sono più elementi da scegliere in X j+1,,si torna alla t-pla j-esima, si sostituisce x j con il primo elemento elegibile in X j 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 x j-1, se possibile.. ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 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.Analizzare le simmetrie (8 regine) 2.Preassegnare il valore di alcune componenti della soluzione finale (circuito hamiltoniano) 3.Organizzare i dati in modo opportuno prima di iniziare a costruire l’albero (sottoinsiemi pesati). ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 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
ASD a.a.2010/2011- Lezione 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. Costo ≥ 10 Lavoro 1Lavoro 2Lavoro 3Lavoro a 6437 b 5818 c 7694 d ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 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 = (x 1,…, x i, …,x n ), dove ad ogni x i è assegnato un peso w i ed un valore v i. E’ opportuno: Ordinare le x i in ordine decrescente rispetto al rapporto valore/peso. Costruire un albero delle decisioni binario dove il figlio sx indica nodo x i presente mentre il figlio dx indica nodo x i 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) (v i+1 / w i+1 ) ASD a.a.2010/2011- Lezione 12
ASD a.a.2010/2011- Lezione 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
ASD a.a.2010/2011- Lezione 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