mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-25 11:34:18 +00:00
71 lines
2.2 KiB
Markdown
71 lines
2.2 KiB
Markdown
[[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***
|
|
|
|
## [[comportamento]]
|
|
|
|
> [!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]]
|
|
|
|
### [[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)
|
|
$$
|
|
|
|
### [[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)
|
|
$$
|
|
|
|
### [[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)
|
|
$$
|