Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi

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 Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 15/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
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.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
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,
Cammini minimi Moreno Marzolla
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13.
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.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi L’ausilio delle occorrenze Circuiti di ordinamento Lezione n°5.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
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
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
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
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.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
La gestione degli insiemi disgiunti
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 a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Paths, tree and flowers Lezione n°14
K4 è planare? E K3,3 e K5 sono planari? Sì!
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
Algoritmi Avanzati a.a. 2010/11
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Cammini di costo minimo su un grafo pesato
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a. 2010/11
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Transcript della presentazione:

Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente Lezione n°11 Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi 1

Algoritmo Ear Decomposition Input: G privo di ponti rappresentato come sequenza di archi begin T = spanning tree di G calcola TDE; radica T in qualunque nodo; calcola level(v) vT for each  e=(u,v)  T pardo Pe: calcola lca(u,v) label(e) = <level(lca(u,v)), e> for each  e  T pardo Pe: label(e) = min{ label(e') : e'T  e  ciclo indotto da e' in T } ordina gli archi rispetto a label(e) end

LCA CDE Sliv 1 2 3 4 left right c h g e f b i d a lca(a,f)=c La computazione del minimo antecedente comune (lca) di ogni nodo si basa sulle seguenti osservazioni: u è antecedente di v sse left(u) < left(v) < right(u) u e v sono confrontabili (nessuno è antecedente dell’altro) sse right(v) < left(u) oppure right(u) < left(v) se u e v sono confrontabili, lca(u,v) è il vertice di livello più basso compreso tra right(u) e left(v) Esempio: c h g e f b i d a lca(a,f)=c right(a) left(f) CDE h,e e,h h,c c,b b,c c,i i,a a,d d,a a,i i,g g,i i,c c,f f,c c,h Sliv 1 2 3 4 left right

Calcolo di label(e)  eT Dopo aver calcolato label(e)  e  T si definisca: f(v) = min{label(v,u) : (v,u)  T}  vT È possibile verificare che per ogni arco e=(v, p(v))T il valore label(e) sarà il minimo valore f(u) tra i nodi u appartenenti al sottoalbero Tv radicato in v. Il calcolo del minimo nel sottoalbero si può realizzare, tramite la tecnica del salto del puntatore, in tempo O(log n) su una PRAM CRCW (con scrittura del valore minimo) con n processori. L’assegnamento di f(v) v richiede O(1) e m processori sullo stesso modello. Il costo è quindi O((n+m) log n) su PRAM CRCW o, simulando la scrittura concorrente, O((n+m) log2 n) su PRAM CREW.

Analisi La costrizione dello ST (dando costo 1 a tutti gli archi) costa O(n2 log2 n) su PRAM CREW. Il calcolo del TDE, il radicamento dell’albero e il calcolo del livello per ogni nodo richiedono un costo O(n log n) su PRAM EREW. Il calcolo del lca con la tecnica del TDE richiede un costo pari a O(n log n) su PRAM EREW. (*) Il calcolo di label(e)  eT si è visto che costa O((n+m) log2n) su PRAM CREW. L’ordinamento richiede O(n log n) su PRAM EREW. La complessità totale dell’algoritmo è pari a quella del calcolo dello ST: O(n2 log2 n) su PRAM CREW (*) Abbiamo visto esplicitamente come calcolare il lca di una singola coppia di nodi in tempo log n con n processori su PRAM EREW. Precalcolando opportune strutture dati per trovare il minimo in ogni intervallo di un vettore (Range Minimum Query) ogni processore può calcolare il lca di una coppia di nodi in tempo costante su PRAM CREW.

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

Si noti che tra <2,e5> e <2,e7> viene scelto <2,e5> Unicità del MST Il MST è unico sse ogni arco ha un costo distinto. Tale condizione può essere forzata disambiguando eventuali costi uguali: si aggiunge al costo l’indice dell’arco cui appartiene: w'(e) = <w(e),e> a b d c e <1,e1> <6,e2> <2,e3> <5,e6> <2,e7> <5,e4> <2,e5> <3,e8> <1,e9> a b d c e <1,e1> <2,e3> <2,e5> <1,e9> Si noti che tra <2,e5> e <2,e7> viene scelto <2,e5> Nel seguito i costi verranno sempre disambiguati considerando gli archi indicizzati in base al loro ordine lessicografico.

Proprietà 1 Lemma1. Tutti gli archi (u,m(u))MST. Dimostrazione. Sia G=(V,E) un grafo, w una funzione di costo su G e T il MST di G. Assumiamo per assurdo che esista un vV tale che (v,m(v))T. Consideriamo il cammino da v a m(v) in T sia (v,x) il primo arco in tale cammino. Il costo di tale arco è sicuramente maggiore di quello dell’arco (v,m(v)), per definizione di m(v). Sia T' = T - (v,x)  (v,m(v)). T' è un albero ricoprente per G e il suo costo w(T')=w(T)-w(v,x)+(v,m(v)) è minore di quello di T, il che contrasta con il fatto che T è il MST di G, quindi v non può esistere.

Strategie per MST Prim: si parte da T = un singolo vertice e si costruisce incrementalmente il MST aggiungendo l’arco di costo minimo tra T e G-T. Kruskal: si parte da una foresta di nodi isolati e, considerando tutti gli archi in ordine di costo crescente, si aggiunge ciascun arco solo se non induce un ciclo. Sollin: si parte da una foresta di nodi isolati, si aggiungono tutti gli archi (u,m(u)) e si itera (sugli archi che uniscono le varie componenti connesse) fino ad ottenere un albero.

Esempio 1 A partire dal grafo Prim inizia con T=({a},). Poi inserisce, passo dopo passo, gli archi (a,g), (g,e), (a,b), (b,d), (b,f) e (d,c). L’albero ricoprente generato è: d c b 1 2 a f e g 3 4 d c b 1 a f e g 2

Esempio 2 Kruskal genera il medesimo MST analizzando gli archi nel seguente ordine (quelli che inducono cicli vengono scartati): e w(e) induce un ciclo? (a,g) 1 no (b,d) (b,f) (c,d) (d,f) si (e,g) (a,b) 2 (a,c) (f,g) (e,f) 3 (b,g) 4 d c b 1 a f e g 2

Esempio 3 Sollin inizialmente considera i seguenti archi: In seguito considera gli archi tra le due componenti connesse: v m(v) costo a g 1 b d c e f d c b 1 a f e g ed ottiene: d c b 1 a f e g 2 V m(V) costo arco originale C1 C2 2 (a,b)

Strategia per il parallelo Sia Prim che Kruskal sono inerentemente sequenziali in quanto la scelta fatta ad ogni passo dipende strettamente da tutto ciò che si è fatto nei passi precedenti. L’idea di Sollin invece (ad ogni iterazione) lavora su tutti i vertici senza richiedere un ordine specifico, quindi si presta meglio ad essere utilizzata in un contesto di calcolo parallelo. Si noti però che se i costi non fossero distinti con Sollin si potrebbero introdurre cicli di lunghezza ≥ 3: u m(u) a b c b a c 1 b a c

MST nel parallelo Input: G grafo non orientato connesso pesato, con pesi distinti Output: l’unico MST Idea: partendo da frammenti costituiti da singoli nodi, ad ogni passo ogni frammento cerca di unirsi con un altro frammento (formando meganodi) attraverso lo spigolo di costo minimo ad esso incidente. Si ripete finché la foresta non si riduce ad un albero.

Esempio 12 Grafo di partenza rappresentato tramite matrice W0 Passo 0: meganodi iniziali = nodi isolati Aggiungendo (u,m(u)) uV 6 6 1 3 2 1 4 3 2 5 5 11 7 1 13 2 3 4 2 3 4 2 1 1 4 8 9 10 11 13 1 2 6 8 9 7 12 4 3 5 10

Esempio Dopo il salto del puntatore rimangono 4 meganodi La matrice di adiacenza W1 del grafo ridotto è: (nella tabella sono riportati il costo minimo di un arco tra due meganodi e l’identificatore di tale arco nel grafo iniziale) 11 13 1 2 6 8 9 7 12 4 3 5 10 1 2 3 4 1 2 3 4 - 2, (1,2) 4, (4,5)  5, (7,11)

Esempio Passo 1: 4 meganodi isolati, aggiungendo (u,m(u)) u in W1 Dopo il salto del puntatore rimane 1 solo meganodo La matrice di adiacenza è vuota quindi al passo 2 l’algoritmo termina. Il MST risultante è: 1 1 2 3 2 3 4 4 12 6 1 3 3 2 2 1 5 5 11 7 1 13 2 2 3 4 2 1 1 4 8 9 10