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

47 lines
1.4 KiB
Markdown
Raw Normal View History

[[algoritmo]] di [[leader election]] su [[anello]].
> [!Summary]
> Effettua iterazioni in cui ogni [[entità]] che potrebbe diventare potenzialmente [[leader]] diffonde il proprio [[identificatore]] a tutte le altre entro una certa distanza.
## [[Comportamento]]
### `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 computazionale]]
### [[Comunicazione]]
Ad ogni iterazione, 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}
$$
Sommando tutti i `CANDIDATE`:
$$
{\color{Gold} \mathrm{floor} \left(
\frac{n}{2^{Iteration - 1} + 1}
\right)}
\cdot 2 \cdot 2 \cdot 2 ^ {Iteration}
$$
==Qui la prof fa dei calcoli. Ho troppo sonno per capirli.==