Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCamilla Gentile Modificato 7 anni fa
1
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°12 Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi 1
2
La rete ad anello Si suppone che i nodi dell’anello siano identificati da valori diversi scelti in un insieme di positivi qualunque, senza alcun vincolo di ordine. L’anello si considera unidirezionale. I singoli processi non conoscono la dimensione della rete; sono però in grado di distinguere fra vicino sinistro e vicino destro. 2
3
Elezione del Leader su una rete ad anello
Algorithm LEA (Leader Election su un anello) begin Pinit=i: stato = ignoto stato finale =F send i al succ repeat Pi: receive inf if inf = halt and stato = ignoto then send halt al succ if inf = halt and stato = leader then stato finale =T if inf > i then send inf al succ if inf = i then stato = leader send halt al succ until inf = halt and stato finale =T end O(n2) messaggi in n passi Si noti che l’intero algoritmo termina quando il segnale di halt torna al leader. 3
4
Esempio di funzionamento di LEA
1 8 3 6 4 1 8 3 6 4 1 8 3 6 4 inizializzazione Passo 1 1 8 3 6 4 1 8 3 6 4 1 8 3 6 4 LEADER Passo 2 Passo 3 Passo 4 4
5
Correttezza e complessità dell’algoritmo LEA
Teorema: L’algoritmo LEA risolve il problema dell’elezione del leader su un sistema distribuito sincrono ad anello. Esso richiede complessità temporale n e complessità dei messaggi O(n2). Dimostrazione: La correttezza si basa sui seguenti due fatti: Fatto 1: Nessun processore, eccetto quello di indice massimo, raggiunge lo stato di leader. Fatto 2: Dopo n passi lo stato del processore di indice massimo è quello di leader. Dal Fatto 2 si deduce la complessità temporale che implica anche quella dei messaggi. 5
6
Un solo iniziatore Algorithm LEA (Leader Election su un anello con un solo inizializzatore init) begin Pi: stato = ignoto Pinit: send init al succ repeat Pi: receive inf if inf = halt and stato = ignoto then send halt al succ if inf = i then stato = leader send halt al succ if inf < i then inf = i send inf al succ until inf = halt and stato =leader end O(n) messaggi in O(n) passi 6
7
K-vicinato DEFINIZIONE:
Il k-vicinato di un processore p in un anello è dato dall’insieme dei processori che sono a distanza k da p nell’anello (sia da sinistra che da destra). Il k-vicinato chiuso di un processore include esattamente 2k+1processori 7
8
Algoritmo per l’elezione del Leader con l’ausilio del k-vicinato
ALGORITMO (Si procede per fasi) In ogni fase k un processore cerca di diventare leader temporaneo del suo 2k-vicinato. Solo i processori che riescono ad essere leader temporanei nella fase k diventano poi attivi nella fase k+1. Si dimostra che le fasi sono al più O(logn) Notare che l’anello ora è considerato bidirezionale 8
9
Leader temporaneo Nella fase 0 tutti i processori mandano il loro identificativo al proprio vicino di dx e al proprio vicino di sx. Diventano Leader temporanei nella fase 0 (e quindi processori attivi nella fase 1) tutti quei processori il cui identificativo è maggiore sia dell’identificativo del vicino dx che dell’identificativo del vicino sx. Alla generica fase l, ogni processore pi che è risultato Leader temporaneo alla fase l-1 manda il valore del proprio identificativo i al suo 2l-vicinato. Solo i vicini con identificativo minore di i, mandano a pi una risposta. Se pi riceve risposta da tutto il suo vicinato, pi diviene Leader alla fase l e attivo alla fase l+1 9
10
Cosa ricevo e cosa invio
Pj invia: (test,j,l,d): dove test esprime che il messaggio è per verificare se Pj può diventare leader temporaneo alla fase l dopo essersi confrontato con tutti i suoi vicini, da quelli a distanza 1 fino a quelli a distanza 2l , sia a destra che a sinistra. d inizialmente è pari ad 1 ed indica in ogni istante temporale a che distanza da j sono i vicini con cui ci si sta confrontando. (risp,k,l): quando Pj vuole comunicare che si dichiara perdente e, per quanto lo riguarda, Pk può essere leader nella fase l, e quindi attivo nella fase l+1. Pk riceve: (test,j,l,d): Pj e Pk si confrontano. Pk si attiva solo se Pk< Pj. Se la sua distanza d da Pj è minore di 2l deve far da tramite per passare l’informazione test al processore suo vicino a distanza d+1 da Pj , altrimenti deve chiedere al suo vicino a distanza d-1 da Pj di far da tramite per far sapere a Pj che, per quanto lo riguarda, può essere leader nella fase l. (risp,j,l): Pk deve distinguere se lui stesso è Pj o no. Se non è Pj deve solamente far passare l’informazione al suo vicino nel cammino fra lui e Pj. Se invece è Pj, allora deve aspettare la risposta dal vicinato nell’altra direzione. Se questa risposta arriva, si dichiara leader temporaneo alla fase l, altrimenti si deve dichiarare perdente. 10
11
Algoritmo per l’elezione del Leader con l’ausilio del k-vicinato
Algorithmo LEAK (Leader Election su un anello con k-vicinato) begin Pinit=i: stato = ignoto; send (test,i,0,1) al vicino sx e al vicino dx; repeat Pi: if receive (test,j,l,d) from sx (dx) if j = id then stato = leader; send halt to sx if j > i and d ≧ 2l then send (risp,j,l) to dx(sx) if j > i and d < 2l then send (test,j,l,d+1) to sx(dx) if receive (risp,j,l) from sx (dx) if j ≠ i then send (risp,j,l) to dx(sx) if hai già ricevuto (risp,j,l) from dx(sx) then send (test,j,l+1,1) to dx and sx if receive (halt) and stato = ignoto then send (halt) to sx until inf = halt e and stato = leader end Nota: per non appesantire la scrittura dell’algoritmo sono state dettagliate solo alcune parti dell’algoritmo. 11
12
Correttezza e complessità dell’algoritmo LEAK
Anche in questo caso la correttezza dell’algoritmo si basa sul fatto che nessun processore, eccetto quello di indice massimo, raggiunge lo stato di Leader globale. Complessità dei messaggi(Md) = numero di fasi (ovvero Td) moltiplicato per numero di messaggi trasmessi in ogni singola fase: Numero di fasi: al termine della generica fase l, il massimo numero di processori Leader temporanei(Lt) è dato da n/(2l+1) dato che, se un processore pi risulta Lt, tutti i processori nel suo 2l-vicinato debbono avere identificativo minore di i. Ne consegue che fra due Lt, pi e pj , ci debbono essere almeno 2l processori (il vicinato sx dell’uno e quello dx dell’altro). Da queste considerazioni ne consegue che il numero delle fasi sarà al più dell’ordine di logn. Messaggi trasmessi in ogni singola fase: ogni processore attivo al più trasmette 2x 2l messaggi di test , uno ad ogni processore del suo vicinato. Analogamente può ricevere al più 2x 2l messaggi di risp , uno da ogni processore del suo vicinato, quindi n/(2l+1) x 2 x 2l <=4n Pertanto il numero totale di messaggi trasmessi sarà dato da O(nlogn) 12
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.