La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13.

Presentazioni simili


Presentazione sul tema: "Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13."— Transcript della presentazione:

1 Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13

2 Individuazione del minimo albero ricoprente in un contesto distribuito Si provede in modo analogo al caso parallelo, ovvero si prende come base l’algoritmo di Sollin. Si procede formando frammenti (frammento = meganodo) e collegandoli fra loro individuando, per ogni frammento, l’arco uscente di costo minimo. La correttezza di questa strategia dipende dalle 2 proprietà fondamentali, già precedentemente enunciate: 1)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). 2)Se tutti gli archi di un grafo G hanno pesi differenti, allora esiste un unico albero di copertura di G di costo minimo.

3 Cosa si deve fare nel distribuito Ad ogni frammento si associa un livello di appartenenza e un identificativo: inizialmente i frammenti sono a livello 0 e sono costituiti da un solo nodo il cui identificativo coincide con quello del frammento e lo spigolo “portante” è lo spigolo di costo minimo incidente nel nodo; a livello k, l’identificativo di un frammento è dato da uno dei due nodi estremi dello spigolo portante della parte di MST propria del frammento; il livello si incrementa di 1, ogni volta che si esegue una unione per combinazione. Come si uniscono i frammenti: per combinazione di frammenti allo stesso livello k con lo stesso spigolo di costo minimo che diviene spigolo portante. In tal caso si crea un nuovo frammento di livello k+1; per assorbimento di un frammento di livello minore con uno di livello maggiore; in questo caso il livello non viene incrementato.

4 Cosa si deve evitare nel distribuito Che i frammenti non coordinino le loro azioni: ogni nodo deve riconoscere a quale frammento appartiene e questa informazione la deve ricevere in modo coordinato con gli altri nodi dello stesso frammento; fra tutti gli spigoli uscenti dal frammento, va trovato lo spigolo di costo minimo relativo al frammento stesso; Che l’unione dei frammenti non implichi un numero di messaggi da trasmettere troppo elevato: evitare l’unione di frammenti grandi con vertici isolati: questo potrebbe portare a trasmettere un numero quadratico di messaggi.

5 Ordinamento fra frammenti Consideriamo un ordinamento fra i frammenti determinato da livello di appartenenza e dal costo del minimo arco uscente. Chiamiamo f l un frammento a livello l  0 ed e l il suo spigolo uscente di costo minimo c(e l ). f l < f l’ se l < l’ se, l = l’, c(e l ) < c(e l’ ). f l ≈ f l’ se, l = l’, e l = e l’.

6 Unione di frammenti Si ha: combinazione di frammenti quando f l ≈ f l’. Si crea un nuovo frammento di livello l+1 il cui spigolo portante è lo spigolo che ha unito i due frammenti a livello l (l = l’, e l = e l’ ). assorbimento di f l in f l’ se f l < f l’. Il frammento di livello minore è assorbito da quello di livello maggiore che si trasforma in nuovo frammento mantenendo stesso livello e stesso spigolo portante (l < l’ oppure l = l’e c(e l ) < c(e l’ )); nessuna operazione quando f l > f l’,ovvero f l’ risponderà alla richiesta di f l mettendolo in attesa. La richiesta di f l verrà servita non appena si verificheranno le condizioni per una combinazione o un assorbimento.

7 Schema dell’algoritmo Si uniscono i frammenti. Il minimo arco uscente dai frammenti che si combinano diventa l’arco portante della componente risultante. Quindi al termine di una combinazione, 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.

8 Esempio m l fg eh i c d a b 1 2 3 4 5 6 7 8 9 10 11 12 1314 1516 17 18 a b 1 b a 2 c d 2 d c 3 e f 3 f e 4 g e 5 h g 6 i g 7 l g 9 m f Identificazione dell’arco uscente di peso minimo Inizialmente ogni nodo è un frammento di livello 0 a b c d e f Combinazione e f Assorbimento gm liv 1 1

9 Identificazione dell’arco uscente di peso minimo 14 Esempio Identificazione dell’arco uscente di peso minimo a b c d e f gm 16 c 14 e 5 h Combinazione (niente) Assorbimento e f gm hil e f gm i l ha b c d 16 c e 14 d 4 combinazioni successive Assorbimento (niente) e f g m i l h cd liv 1 liv 2 5 h g 6 i g 7 l g

10 Esempio Identificazione dell’arco uscente di peso minimo a b 16 c Assorbimento e f g m i l h cd 16 a ba e f g m i l h cd liv 2 liv 1

11 Spigolo di costo minimo del frammento Quando due frammenti si combinano (o quando uno viene assorbito in un altro) bisogna che tutti i nodi del nuovo frammento aggiornino le loro variabili e che l’intero frammento identifichi il proprio arco uscente di costo minimo. Tutto avviene tramite una operazione di broadcast con eco così suddivisa: si propagano le nuove informazioni a tutti i nodi; ciascun nodo v individua l’arco (v,u) di costo minimo tra quelli ad esso adiacenti uscenti dal frammento; tramite l’eco si trasmettono al nodo identificatore del frammento i minimi parziali; il nodo identificatore individua il minimo assoluto (x,y). Tale valore sarà poi ritrasmesso a tutti i nodi del frammento; in questo modo, il nodo x potrà mandare una richiesta di connessione al frammento ad esso adiacente.

12 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. Un nodo u, che riceve un rifiuto, procede verificando il successivo arco non classificato di costo minimo. In caso contrario, si controlla il livello: Se il livello del frammento di u è minore o uguale a quello di v, v accetta la richiesta di u. Se 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.

13 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 f l minimo secondo la nostra relazione di ordine. Qualunque frammento f l’ avrà livello almeno pari a l, pertanto tutte le richieste di informazione sugli archi provenienti da f l verranno servite immediatamente. Quindi f l individuerà il suo minimo arco uscente e ed effettuerà un richiesta di aggregazione. Poiché f l è minimo, all’altro estremo di e potrà trovarsi o un frammento f l ’ ≈ f l (quindi combinazione di f l ’ e f l ), o un frammento di livello maggiore che assorbirà f l. Ogni altra ipotesi porterebbe ad una contraddizione nella definizione della 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.

14 Le variabili Per ogni nodo p: Fram(p) nome del frammento a cui p appartiene. Liv(p) valore del livello del frammento a cui p appartiene. Per ogni arco (p, q): Stato p (q) accettato se è stato inserito nel MST. Per ogni frammento f: w(f) minimo fra i costi degli archi uscenti da f (è sufficiente ad identificare univocamente l’arco perché assumiamo costi distinti).

15 15 Algoritmo per il MST distribuito begin// inizialmente init = V P i  init :inizializza tutte le variabili trova l’arco (i,y) di costo minimo poni stato i (y) = accettato send ad y richiesta di connessione repeat P i :receive messaggio M dal mittente q if M è una richiesta di connessione then if liv(q) > liv(i) then non fare nulla else if liv(q) < liv(i) then assorbi fram(q) in fram(i) send a q richiesta di ridefinizione R{liv(i), fram(i)} else if q = y e liv(q) = liv(i) e w(fram(i))=w(fram(q)) then combina fram(q) con fram(i) send a q richiesta di ridefinizione R{liv(i)+1, min(q,i)} else if M è una richiesta di ridefinizione then aggiorna tutte le variabili relative a i con i valori ricevuti da R send R a tutti gli appartenenti al vecchio frammento di i trova lo arco (x,y) di costo minimo uscente dal nuovo frammento if i = x then poni stato i (y) = accettato // solo il nodo x contatta y send ad y richiesta di connessione until rimane un solo frammento end

16 Complessità temporale Lemma: Il livello di un frammento non eccede mai O(log n) Dim: Per l > 0, un frammento di livello l si forma soltanto quando due frammenti di livello l-1 si fondono, quindi un frammento di livello l contiene almeno 2 l nodi, ne consegue l’asserto, dato che n  2 l, per ogni l. Come conseguenza del Lemma e del fatto che le operazioni ad ogni livello richiedono tempo O(n) si ha: Teorema: l’algoritmo per la determinazione del MST in un sistema distribuito richiede complessità temporale O(n log n)

17 Complessità di comunicazione Teorema: l’algoritmo per la determinazione del MST in un sistema distribuito richiede complessità di comunicazione O(n log n + m). Dim: ad ogni livello O(n) messaggi in totale sono inviati lungo gli spigoli dell’albero. Ci sono inoltre O(m) messaggi addizionali in fase di inizializzazione, necessari affinchè ogni nodo possa conoscere quali sono gli identificativi dei propri vicini e scegliere lo spigolo di costo minimo.


Scaricare ppt "Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13."

Presentazioni simili


Annunci Google