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