1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-27 20:34:18 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Algoritmi di leader election/leader election su anello controlled-distance.md

2.2 KiB

algoritmo di leader election su anello.

comportamento

[!Summary] Effettua iterazioni in cui ogni entità che potrebbe diventare potenzialmente leader diffonde il proprio identificatore a tutte le altre entro una certa distanza.

CANDIDATE

All'inizio di ogni iterazione, invia e fa inoltrare il proprio identificatore ai vicini (in entrambe le direzioni) a distanza 2^{Iteration}.

Se il messaggio raggiunge la distanza massima senza incontrare un identificatore minore, viene rimandato indietro.

Se il CANDIDATE riceve indietro il suo identificatore da entrambe le direzioni, allora passa all'iterazione successiva.

Se il CANDIDATE riceve indietro il suo identificatore da entrambe le direzioni, ma in direzione scambiate, allora esso diventa il leader.

DEFEATED

Sapendo sicuramente di non essere il leader, si limita a inoltrare messaggi.

costo computazionale distribuito

Costo notazione O-grande
comunicazione O(Entities \cdot \log (Entities))
9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo ...

comunicazione

Il caso peggiore per le iterazioni sono le iterazioni intermedie (che non sono la prima o l'ultima o il broadcast di terminazione). ==Perchè?==

Ad ogni iterazione intermedia, ogni candidato invia e riceve su ogni lato: \color{Gold} 2 ^ {Iteration} Sommando andata e ritorno: {\color{Gold} 2} \cdot 2 ^ {Iteration} Sommando i due lati: {\color{Gold} 2} \cdot 2 \cdot 2^{Iteration} I CANDIDATE si dimezzano ad ogni iterazione; considerando le iterazioni indicizzazione a 1, sommandoli si ottiene che: {\color{Gold} \mathrm{floor} \left( \frac{Entities}{2^{Iteration - 1} + 1} \right)} \cdot 2 \cdot 2 \cdot 2 ^ {Iteration} Pertanto, in notazione asintotica abbiamo: O(Entities \cdot Iteration)

Il numero di iterazioni è pari al logaritmo in base 2 del numero di entità del sistema distribuito: \color{Gold} \mathrm{ceil} \left( \log (Entities) \right) Quindi, la notazione asintotica finale sarà: \large O(Entities \cdot {\color{Gold} \log (Entities)})