Algoritmi Avanzati a.a. 2010/11

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Advertisements

Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a. 2011/12 Lezione del 02/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi Albero Ricoprente Lezione n°9.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi ELEZIONE DEL LEADER Lezione n°8.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti 2 Lezione n°10.
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13.
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. 2010/11 Lezione del 18/04/2011 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. EMANUELE FUSCO.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Inserzione e Cancellazione
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°19 Prof.ssa Rossella Petreschi
Analisi di sequenze di operazioni Union-Find
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
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°17 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Complessità ammortizzata degli algoritmi Union Find
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
K4 è planare? E K3,3 e K5 sono planari? Sì!
per rappresentare grafi
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Schema generale, visita in ampiezza e profondità.
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a. 2010/11
Alberi di ricerca Lezione n°4
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Transcript della presentazione:

Algoritmi Avanzati a.a. 2010/11 Lezione del 7/5/2012 Prof.ssa ROSSELLA PETRESCHI a cura del Dott. EMANUELE FUSCO Anno Accademico 2007/2008

Alberi di copertura e broadcast Parliamo di alberi di copertura su sistemi distribuiti. Consideriamo in prima istanza l’algoritmo di Broadcast con Eco: eseguendo l’algoritmo ogni nodo identifica il proprio padre in un albero di copertura dell’intera rete. La definizione di questo albero rimane però implicita, in quanto i nodi interni non sono a conoscenza dell’insieme dei loro figli. Algoritmi Avanzati - a.a. 2011/2012

Modifiche per costruzione esplicita Perché l’albero di copertura sia utilizzabile abbiamo bisogno che ogni nodo conosca i propri figli nell’albero. Questo richiede delle modifiche all’algoritmo di broadcast con eco per far si che i nodi comunichino ai loro vicini quale è stato selezionato come padre e aggiornino correttamente l’insieme dei propri figli. Algoritmi Avanzati - a.a. 2011/2012

Algoritmi Avanzati - a.a. 2011/2012 Algoritmo modificato begin Peco: Neco= { q : q è un vicino di Peco } send M ad ogni q in Neco //M è il messaggio di cui fare broadcast figli = altri = 0 while (figli U altri < Neco) receive messaggio m da un vicino q if (m = <padre>) aggiungi q a figli else aggiungi q ad altri termina Pi≠ eco: receive messaggio M da un vicino p padre = p, Ni = { q  p : q è un vicino di Pi } send M ad ogni q in Ni conti = 0 while (figli U altri < Ni) send <padre> a p end Algoritmi Avanzati - a.a. 2011/2012

Sistemi sincroni e asincroni Analizziamo la correttezza dell’algoritmo su sistemi asincroni (questo ci garantisce la correttezza anche su sistemi sincroni). Vedremo poi come la sincronia garantisca la costruzione di un albero di copertura per visita in ampiezza, mentre questo non succede su sistemi asincroni. Algoritmi Avanzati - a.a. 2011/2012

Correttezza e complessità Il primo messaggio ricevuto da un qualunque nodo (a parte la radice) è il messaggio di broadcast M. Perché un messaggio <padre> attraversi un arco, quell’arco deve essere stato precedentemente attraversato da un messaggio M nella direzione opposta. Ogni nodo invia uno ed un solo messaggio per ogni arco uscente (M ai suoi vicini e, per i nodi non radice, un unico messaggio <parent>), quindi ogni nodo tranne la radice compare in uno ed un solo insieme figli e le relazioni padre e figli identificano (adesso esplicitamente) un albero di copertura della rete. Ogni arco è attraversato da 2 messaggi: 2 messaggi M per nodi che non sono in relazione padre figlio, un messaggio M e un messaggio <padre> per i nodi in relazione padre-figlio. Complessivamente avremo quindi 2m messaggi e tempo O(D) (O(n) su sistemi asincroni), dove m è il numero di archi e D è il diametro della rete (ed n il numero di nodi). Algoritmi Avanzati - a.a. 2011/2012

Complessità temporale (alternativa) su sistemi asincroni Vediamo cosa succede modificando la definizione di complessità temporale su sistemi asincroni. Sia dmax il massimo ritardo verificatosi, durante l’esecuzione, nella trasmissione di un messaggio (i.e., fra il tempo di invio e il tempo di effettiva ricezione da parte del destinatario. Usiamo come misura di tempo il caso pessimo, su tutte le possibili esecuzioni, del tempo impiegato dall’algoritmo diviso il valore dmax dell’esecuzione. Che complessità temporale otteniamo, per l’algoritmo broadcast con eco su sistemi asincroni, secondo questa nuova definizione di tempo? Algoritmi Avanzati - a.a. 2011/2012

Algoritmi Avanzati - a.a. 2011/2012 Visita in ampiezza Un albero di copertura costruito tramite visita in ampiezza (BFS) ha diametro pari al diametro del grafo coperto. Per dimostrare che l’albero di copertura costruito su sistemi sincroni è BFS, ci basta dimostrare, per induzione sul numero di round t, che l’albero identificato dalle relazioni padre è un albero di copertura BFS di tutti i nodi a distanza al più t-1 dalla radice (Peco). Per t = 1 abbiamo solo la radice, che invia M a tutti i suoi vicini; Assumiamo che l’ipotesi sia verificata fino a t; quindi per ipotesi induttiva, tutti e soli i nodi a distanza al più t-2 hanno già ricevuto e inoltrato il messaggio M e impostato il padre, mentre quelli a distanza t-1 hanno ricevuto il messaggio M nel round t per la prima volta, e devono pertanto inoltrare il messaggio ai loro vicini che lo riceveranno nel round t+1; Nel round t+1 pertanto ogni nodo a distanza t riceve M da almeno un vicino e per la prima volta, imposta quindi il suo campo padre e deve inoltrare M ai suoi vicini, il che conclude la dimostrazione. Algoritmi Avanzati - a.a. 2011/2012

Minimo Albero Ricoprente Sia G=(V,E) un grafo connesso non orientato e w:ER una funzione costo degli archi di G. Definiamo inoltre m:VV nel seguente modo: m(u)=v sse (u,v) è l’arco di costo minimo incidente su u. Un albero ricoprente (ST) di G=(V,E) è un albero T=(V,E') tale che E'E. Un minimo albero ricoprente (MST) di G=(V,E) è un albero ricoprente T=(V,E') di costo minimo. Il costo di un albero è la somma dei costi degli archi che lo compongono: w(T)=eT w(e). Algoritmi Avanzati - a.a. 2011/2012

Come individuarlo in maniera distribuita Come nel caso parallelo, l’algoritmo si rifà a quello di Sollin e procede formando meganodi e collegandoli fra loro individuando, per ogni meganodo l’arco uscente di costo minimo. La correttezza di questa strategia dipende da 2 proprietà fondamentali: Dato un sottoalbero T’ di un qualche albero di copertura T di costo minimo e un arco e uscente da T’ di costo minimo, allora T’ U {e} è ancora un sottoalbero di qualche albero di copertura di costo minimo (non serve l’unicità dei pesi in questo caso). Se tutti gli archi di un grafo G hanno pesi differenti, allora esiste un unico albero di copertura di G di costo minimo. La proprietà 1) ci permette di estendere in parallelo tutti i meganodi, garantendo che ogni arco selezionato appartenga ad un qualche albero di copertura di costo minimo, mentre la proprietà 2) ci garantisce di non inserire cicli (stante l’unicità di tale albero). Algoritmi Avanzati - a.a. 2011/2012

Panoramica dell’algoritmo Le fasi dell’algoritmo sono le seguenti: Vengono costruiti dei “frammenti”, etichettati dal peso dell’arco “portante”. Ogni frammento (con la coordinazione dei due nodi agli estremi dell’arco portante) individua il proprio arco uscente di costo minimo e tenta di coordinarsi con il frammento all’altro estremo di questo arco per aggregarsi in un frammento di dimensioni maggiori. L’aggregazione di frammenti avviene per combinazione, quando hanno pari livello (in questo caso il livello del frammento risultante viene incrementato di uno), o per assorbimento di un frammento di livello minore in uno di livello maggiore. Algoritmi Avanzati - a.a. 2011/2012

Combinazione, assorbimento e attesa Consideriamo un ordinamento fra i frammenti determinato da livello e peso del minimo arco uscente: F < F’ se il livello di F è minore del livello di F’ o se, a parità di livello, il minimo arco uscente da F ha peso minore del minimo arco uscente da F’. Se F ed F’ hanno pari livello e medesimo minimo arco uscente diremo che F≈F’. In caso di richiesta di aggregazione da un frammento F ad un frammento F’, avremo: 1) Combinazione se F≈F’; 2) Assorbimento di F in F’, se F<F’; 3) F’ accoderà la richiesta di F, mettendolo in attesa, se F>F’. La richiesta di F verrà servita non appena 1) o 2) si verificheranno. Algoritmi Avanzati - a.a. 2011/2012

Individuazione del minimo arco uscente Per nodi isolati, l’arco incidente di peso minimo è il minimo arco uscente. Nei frammenti con un arco portante (e almeno 2 nodi) l’individuazione del minimo arco uscente viene attivata dagli estremi dell’arco portante con un’operazione di broadcast con eco (sull’albero che costituisce il frammento), che fornisce ai nodi l’identificativo e il livello del loro frammento. Ogni nodo u identifica l’arco e di costo minimo non ancora classificato (come appartenente o non appartenente all’albero di copertura) e invia una richiesta al nodo v all’altro estremo di tale arco, per verificare che e sia esterno. Nella richiesta sono contenuti identificativo e livello del frammento di u. Algoritmi Avanzati - a.a. 2011/2012

Risposta alle richieste Il destinatario v di un messaggio di richiesta di informazioni, verifica identificativo e livello del richiedente. Se l’identificativo corrisponde a quello del frammento di v, v invia ad u un messaggio di rifiuto e l’arco viene scartato da entrambi i nodi. Altrimenti, se il livello del frammento di u è minore o uguale a quello di v, v accetta la richiesta di u. Se invece il livello del frammento di u è maggiore del livello del frammento di v, la richiesta di u viene messa in attesa, e verrà servita quando una delle condizioni precedenti sarà verificata. Algoritmi Avanzati - a.a. 2011/2012

Algoritmi Avanzati - a.a. 2011/2012 A risposta ottenuta? Un nodo u, che riceve un rifiuto, procede verificando il successivo arco non classificato di costo minimo. Alla prima accettazione, l’arco e diventa il candidato minimo arco uscente per u. A partire dalle foglie del frammento, le informazioni ottenute dai singoli nodi vengono inoltrate verso l’estremo più vicino dello spigolo portante (ogni nodo riporta il candidato migliore nel proprio sottoalbero). Il minimo arco uscente verrà quindi individuato dagli estremi dell’arco portante quando si scambieranno le informazioni ottenute dai relativi sottoalberi. Algoritmi Avanzati - a.a. 2011/2012

Algoritmi Avanzati - a.a. 2011/2012 Possiamo avere stallo? Verifichiamo che le attese per ottenere risposta a richieste di informazioni su un arco o a richieste di combinazione non possano portare allo stallo. Consideriamo un qualunque istante dell’esecuzione dell’algoritmo e consideriamo un frammento minimo secondo la nostra relazione di ordine. Sia F questo frammento. Chiaramente, qualunque frammento F’ avrà livello almeno pari a quello di F, pertanto tutte le richieste di informazione sugli archi provenienti da F verranno servite immediatamente. Quindi F individuerà il suo minimo arco uscente e ed effettuerà un richiesta di aggregazione. Poiché F è il frammento minimo, all’altro estremo di e potrà trovarsi solamente un frammento F’ ≈F, e in questo caso avremo combinazione di F ed F’, o un frammento di livello maggiore che assorbirà F. Un frammento F’ con minimo arco uscente e’ di peso minore al peso di e contraddirebbe l’ipotesi che F sia minimo secondo la nostra relazione di ordine fra i frammenti. Poiché l’istante considerato è arbitrario, in qualunque momento dell’esecuzione dopo tempo finito avremo che un frammento incrementa il suo livello e la sua dimensione, il che garantisce la terminazione. Algoritmi Avanzati - a.a. 2011/2012

L’arco uscente individuato è sempre corretto? Qualora una componente F assorba una componente F’ mentre, in F, era in corso la ricerca del minimo arco uscente, possiamo ritrovarci in 2 possibili situazioni. Sia e’ il minimo arco uscente da F’ e siano u e v gli estremi di e in F e in F’, rispettivamente. u non ha ancora inoltrato le informazioni sul candidato minimo arco uscente del suo sottoalbero a suo padre. u ha già inviato tali informazioni a suo padre. Nel caso 1) il broadcast su F può essere esteso ad F’, in modo che anche F’ partecipi alla ricerca del minimo arco uscente dalla componente estesa. Nel caso 2) però questo non è possibile. Algoritmi Avanzati - a.a. 2011/2012

Garantiamo la correttezza Vediamo in base a quali condizioni si può verificare 2). u deve aver individuato il proprio candidato minimo arco uscente (e ricevuto le informazioni relative al suo sottoalbero da ciascuno dei propri figli). Se u avesse testato l’arco e’ sarebbe stato messo in attesa, poiché il livello di F è maggiore del livello di F’. Quindi, u deve aver individuato un arco esterno e, con peso minore del peso di e’. L’arco e non può andare verso F’, in quanto questo contraddirebbe il fatto che e’ era il minimo arco uscente da F’, quindi e rimane esterno anche dopo l’assorbimento di F’ e questo garantisce che non è necessario testare gli archi uscenti da F’ per individuare il minimo arco uscente. Algoritmi Avanzati - a.a. 2011/2012

Qualche altro dettaglio In seguito ad una fusione, il minimo arco uscente dai frammenti che si fondono diventa l’arco portante della componente risultante. Al termine di una fusione, gli estremi del nuovo arco portante aggiornano la componente contestualmente alla richiesta di ricerca del nuovo minimo arco uscente, causando l’aggiornamento delle relazioni padre/figli. Ad ogni incremento di livello, le richieste lasciate in attesa devono essere nuovamente analizzate per verificare se possono essere servite. L’algoritmo termina quando un frammento non è in grado di individuare il suo arco uscente di costo minimo – tutti gli archi vengono scartati perché non esterni in quanto il frammento copre l’intero grafo G. Per altri dettagli sul funzionamento dell’algoritmo fate riferimento a [GHS]. Algoritmi Avanzati - a.a. 2011/2012

Algoritmi Avanzati - a.a. 2011/2012 Complessità Per quanto riguarda il numero di messaggi scambiati abbiamo che ogni arco può essere scartato al più una volta. Abbiamo inoltre che una componente di livello l ha almeno 2l nodi (dimostrabile facilmente per induzione sul livello l). Poiché il grafo ha n nodi, abbiamo che deve valere 2l<=n e pertanto l<= log2n. Per ogni livello, le fasi di broadcast e di comunicazione lungo gli archi che vengono scelti come candidati minimi archi uscenti richiedono O(n) messaggi, per complessivi O(n log2n) messaggi. Ogni nodo può scartare un arco al più una volta, e scartarlo costa 2 messaggi per complessivi O(m) messaggi. Quindi il costo totale dell’algoritmo è di O(n log2n + m). Per quanto riguarda il tempo di completamento (su sistemi sincroni), se tutti i nodi sono attivi all’inizio dell’esecuzione dell’algoritmo il tempo di esecuzione è pari a O(n log2n). Algoritmi Avanzati - a.a. 2011/2012