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 2 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) è larco 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 Paralleli e Distribuiti a.a. 2008/09 3 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 lindice dellarco cui appartiene: w'(e) = a b d c e Si noti che tra e viene scelto a b d c e Nel seguito i costi verranno sempre disambiguati considerando gli archi indicizzati in base al loro ordine lessicografico.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 4 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 dellarco (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.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 5 Stelle ed alberi radicati Albero Radicato Stella Radicata
Algoritmi Paralleli e Distribuiti a.a. 2008/09 6 Pseudoforesta Si definisce pseudoforesta un grafo orientato in cui ogni vertice ha grado uscente minore od uguale ad uno. In altre parole, pseudoforesta è un insieme di alberi (e stelle) orientati radicati, ciascuno contenente un ciclo. Una pseudoforesta può essere vista come una funzione d:V V. v V, (v,d(v)) è lunico arco uscente da v in G vd(v)
Algoritmi Paralleli e Distribuiti a.a. 2008/09 7 Proprietà 2 La funzione m:V V definisce una pseudoforesta t.c. ogni albero orientato ha un ciclo contenente esattamente due archi. Non ci sono cappi perché m(u) u u V. Se per assurdo ci fosse un ciclo di 3 (o più archi) tra i nodi u, v=m(u) e x=m(v) con u=m(x) allora considerando i costi di tali archi w 1, w 2 e w 3 si avrebbe w 1 < w 3 < w 2 < w 1. Il che è assurdo. v ux w1w1 w2w2 w3w3
Algoritmi Paralleli e Distribuiti a.a. 2008/09 8 Strategie per MST Prim: si parte da T = un singolo vertice e si costruisce incrementalmente il MST aggiungendo larco 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 fino ad ottenere un grafo connesso.
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). Lalbero ricoprente generato è: Algoritmi Paralleli e Distribuiti a.a. 2008/09 9 d cb a f e g d cb 1 a f e g
Esempio 2 Kruskal genera il medesimo MST analizzando gli archi nel seguente ordine (quelli che inducono cicli vengono scartati): Algoritmi Paralleli e Distribuiti a.a. 2008/09 10 d cb 1 a f e g ew(e)induce un ciclo? (a,g)1no (b,d)1no (b,f)1no (c,d)1no (d,f)1si (e,g)1no (a,b)2no (a,c)2si (f,g)2si (e,f)3si (b,g)4si
Esempio 3 Sollin inizialmente considera i seguenti archi: ed ottiene: In seguito considera gli archi tra le due componenti connesse: Algoritmi Paralleli e Distribuiti a.a. 2008/09 11 d cb 1 a f e g vm(v)costo ag1 bd1 cd1 db1 eg1 fb1 ga1 Vm(V)costoarco originale C1C1 C2C2 2(a,b) C2C2 C1C1 2 d cb 1 a f e g
Algoritmi Paralleli e Distribuiti a.a.2007/08 12 Strategia per il concorrente 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. Lidea 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 concorrente (sia parallelo che distribuito). Si noti però che se i costi non fossero distinti con Sollin si potrebbero introdurre cicli di lunghezza 3: um(u) ab bc ca b ac b ac
Algoritmi Paralleli e Distribuiti a.a.2007/08 13 MST nel concorrente Input: G grafo non orientato connesso pesato, con pesi distinti Output: lunico MST Idea: partendo da frammenti costituiti da singoli nodi, ad ogni passo ogni frammento cerca di unirsi con un altro frammento attraverso lo spigolo di costo minimo ad esso incidente. Si ripete finché la foresta non si riduce ad un albero.
Algoritmi Paralleli e Distribuiti a.a.2007/08 14 Come fare Identificare ladiacente di costo minimo Rappresentare e identificare opportunamente i frammenti Fondere i frammenti avendo presente le limitazioni sul costo (tempo, processori, complessità dei messaggi) che si vuole ottenere