Lezione n°16 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
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.
Advertisements

Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prof.ssa Rossella Petreschi Lezione del 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Prof.ssa Rossella Petreschi Lezione del 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°10 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
La funzione Path e le forme a cespuglio
Lezione n°17 Prof.ssa Rossella Petreschi
Lezione n°15 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi approssimati
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
K4 è planare? E K3,3 e K5 sono planari? Sì!
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°18 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Impariamo a conoscere le Matrici
Rappresentazione di alberi
Lezione n°6 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Introduzione agli Algoritmi e alle Strutture Dati
Analisi ammortizzata Lezione n°3
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Ottimizzazione distribuita
Algoritmi e Strutture Dati
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Corso di Fondamenti di Informatica
Transcript della presentazione:

Lezione n°16 Prof.ssa Rossella Petreschi Lezione del 28/11/2014 del Corso di Algoritmica

Forza Bruta vs Backtrack Genera tutte le t-ple m1,m2,…mk Per ogni t-pla verifica se soddisfa la funzione P (x1,x2,…xn) Salva le t-ple che rappresentano la soluzione ottima Backtrack: Costruisce i vettori soluzione una componente alla volta All’i-esimo passo, confronta il sottovettore v= (x1,x2,…xi) con la funzione parziale P (x1,x2,…xi) per vedere se c’è una possibilità che v diventi sottovettore di una soluzione ottima.Se questa possibilità non c’è interrompi la costruzione di quell’ipotesi di soluzione. Backtrack riduce il numero di test da fare per trovare le soluzioni ottime. 2

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. 3

Il metodo Quando si applica: Ricercare un insieme di soluzioni in genere la soluzione è esprimibile come t-pla (x1,x2,…xn) con xi in un insieme finito Si Ricercare una soluzione ottima soddisfacente alcuni vincoli ovvero massimizare (o minimizzare) una funzione P (x1,x2,…xn) Esempio: Problema: ordinare un vettore a di n interi Soluzione: esprimibile come t-pla (xi è l’indice in a dell’i-esimo elemento più piccolo) La funzione P è la diseguaglianza a(xi) ≤ a(xi+1), 1≤i<n L’ordinamento non è un problema che si risolve normalmente con il backtracking, ma è un tipico problema la cui soluzione è una t-pla.

Vincoli Vincoli espiciti: Sono regole che restringono xi a prendere valori in un intervallo limitato e dipendono dalla particolare istanza I del problema considerato. Lo spazio delle soluzioni per I è costituito da tutte le t-ple che soddisfano i vincoli espliciti Esempi: xi ≤ 0; li ≤ xi≤ ri ; xi in Si ={0.1} Vincoli impliciti: Sono regole che stabiliscono quali fra le t-ple nello spazio delle soluzioni di I soddisfano la funzione P; un vincolo implicito esprime il modo in cui le variabili xidebbono correlarsi. 5

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: v è una soluzione finale del problema: la soluzione viene memorizzata (termina se una soluzione è sufficiente) v è una soluzione parziale del problema: l’algoritmo passa dalla t-pla j+1-esima 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. 6

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) 1 5 8 6 3 7 2 4 1 7 5 8 2 4 6 3 2 5 7 4 1 8 6 3 2 7 3 6 8 5 1 4 1 6 8 3 7 4 2 5 2 4 6 8 3 1 7 5 2 6 1 7 4 8 3 5 2 7 5 8 1 4 6 3 1 7 4 6 8 2 5 3 2 5 7 1 3 8 6 4 2 6 8 3 1 4 7 5 2 8 6 1 3 5 7 4 7

Una soluzione 15863724 8

Caso (4x4) 9

Caso (4x4) 10

Backtrack per le 8 regine Vincoli espliciti: Si ={1,2,3,4,5,6,7,8} 1 ≤ i ≤ 8 Conseguentemente lo spazio delle soluzioni è di 88 8-ple Vincoli impliciti: Tutte le regine debbono essere in colonne differenti Conseguentemente lo spazio delle soluzioni è costituito da tutte le permutazioni delle 8-ple {1,2,3,4,5,6,7,8} e quindi è ridotto da 88 a 8! Tutte le regine debbono essere in diagonali differenti 11

Regine sulle stesse diagonali La scacchiera S è rappresentata da una matrice quadrata di dimensioni nxn. Le righe e le colonne sono numerate da 1ad n. si considerino due regine nelle posizioni (i,j) e (k,l), rispettivamente. Tutte le diagonali dall’alto a sinistra verso in basso a destra mantengono costante numero colonna - numero riga per esempio S[2,1], S[3,2], S[4,3] hanno 1 quale valore costante pari alla differenza fra numero di riga e numero di colonna. Tutte le diagonali dall’alto a destra verso in basso a sinistra mantengono costante numero colonna + numero riga per esempio S[2,4], S[3,3], S[4,2] hanno 6 quale valore costante pari alla somma fra numero di riga e numero di colonna. Quindi due regine sono sulla stessa diagonale sess j-l =i-k Dato che vale o (1) i-j = k-l o (2) i+j = k+l Dalla (1) si ha j-l = i-k e dalla (2) si ha j-l = k-i 12

Procedura n-regine Procedura N-regine(k,n) stampa tutte i possibili posizionamenti senza conflitto di n regine su una scacchiera nxn (si inizia con k=1) procedura N-regine(k,n) For i=1 to n do if PLACE(k,i) then x[k] = i; if k=n then write x[1…n]; else N-regine(k+1,n); 13

Controllo del posizionamento PLACE(k,i) ritorna vero se la k-esima regina può essere posizionata nella k-esima riga e i-esima colonna della matrice rappresentativa della scacchiera; la regina in posizione (k,i) non si trovi sulla stessa diagonale con le regine in posizione (j, x(j)); ritorna falso, altrimenti. PLACE(k,i) For j=1 to k-1 do l = x[j] if l = i or j-k=i-l then return false; return true; 14

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 15

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. 16

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 17

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) 18

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. 19