1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-26 20:04:19 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Algoritmi di leader election/leader election su anello di dimensione conosciuta all-the-way.md

72 lines
2.2 KiB
Markdown
Raw Normal View History

[[algoritmo]] di [[leader election]] che risolve il problema di terminazione della [[leader election su anello all-the-way]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]] aggiuntive
- **[[restrizione di topologia|Topologia]]**
- [[anello]] di ***dimensione nota***
2023-12-19 01:19:27 +00:00
## [[comportamento]]
2023-11-08 18:28:09 +00:00
> [!Summary]
> Ogni [[entità]] invia il suo [[identificatore]] alla successiva, e gli inoltra gli identificatori ricevuti dalla precedente, tenendo traccia dell'identificatore minimo ricevuto, ***fino a quando non ne conosce tanti quante le [[entità]] del [[sistema distribuito]]***.
Si può effettuare il conteggio in due modi:
- con un [[contatore]] su ogni [[entità]], che conta il numero di [[messaggio|messaggi]] transitati
- con un [[contatore]] su ogni [[messaggio]], che conta il numero di [[entità]] transitate
## [[algoritmo corretto|Correttezza]]
> [!Success]
> L'algoritmo termina quando tutte le [[entità]] hanno visto tanti [[messaggio|messaggi]] quante le [[entità]] del [[sistema distribuito]].
## [[costo computazionale distribuito|Costo computazionale]]
2023-12-19 01:19:27 +00:00
### [[comunicazione]]
Ogni [[entità]] invia tanti [[messaggio|messaggi]] quanti le [[entità]] del sistema distribuito, ovvero:
$$
Entity \cdot Entity
$$
In [[notazione asintotica]], è:
$$
\Large O \left( Entity^2 \right)
$$
2023-12-19 01:19:27 +00:00
### [[9 - Algoritmi distribuiti/1 - Problemi algoritmici/spazio]]
Nel caso peggiore, ciascun messaggio contiene tanti [[bit]] quanti quelli dell'identificatore più grande, ovvero, in [[notazione asintotica]]:
$$
\Large O \left( Entity^2 \cdot \log( \max(Identifier) ) \right)
$$
2023-12-19 01:19:27 +00:00
### [[9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo]]
Nel caso peggiore, solo una [[entità]] è [[iniziatori multipli|iniziatrice]], e in tal caso, dovrà svegliare le altre con il proprio messaggio.
Il messaggio dovrà prima arrivare alla sua precedente, richiedendo:
$$
\color{LightCoral} Entities -1
$$
Poi, il messaggio della precedente dovrà fare un giro completo:
$$
\color{SkyBlue} Entities
$$
Per un totale di:
$$
{\color{LightCoral} Entities -1}
+
{\color{SkyBlue} Entities}
$$
Ovvero:
$$
2 \cdot Entities - 1
$$
Che in [[notazione asintotica]] è:
$$
\Large O(Entities)
$$