2023-11-11 18:41:34 +00:00
[[algoritmo]] di [[fully synchronous leader election]].
## [[restrizioni al modello dei sistemi distribuiti|Restrizioni]] aggiuntive
- **[[restrizione di topologia|Topologia]]**
- [[anello]] di dimensione nota
2023-12-19 01:19:27 +00:00
- **[[9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo|Tempo]]**
2023-11-11 18:41:34 +00:00
- [[risveglio ignorato]]
2023-12-19 01:19:27 +00:00
## [[comportamento]]
2023-11-11 18:41:34 +00:00
> [!Summary]
2023-12-19 01:19:27 +00:00
> Ogni [[entità]] aspetta un tempo proporzionale al valore del suo [[identificatore]] e al tempo necessario per un [[messaggio]] di attraversare tutto l'anello, inviando il suo [[identificatore]] alla successiva al termine dell'attesa.
2023-11-11 18:41:34 +00:00
>
> Quando una [[entità]] in attesa riceve l'identificatore di un'altra, la accetta come [[leader]] e termina.
2023-12-19 01:19:27 +00:00
$$
\Large \mathrm{sleep}(Entities \cdot Identifier)
$$
2023-11-11 18:41:34 +00:00
## [[algoritmo corretto|Correttezza]]
> [!Success]
> Prima o poi, un'[[entità]] terminerà la sua attesa, e farà circolare il suo [[messaggio]] di terminazione da tutte le altre.
## [[costo computazionale distribuito|Costo computazionale]]
| Costo | [[notazione O-grande]] |
|-|-|
| [[comunicazione]] | $O(Entities)$ |
2023-12-19 01:19:27 +00:00
| [[9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo]] | Dipende. |
2023-11-11 18:41:34 +00:00
2023-12-19 01:19:27 +00:00
### [[comunicazione]]
2023-11-11 18:41:34 +00:00
Vengono inviati solamente:
$$
Entities
$$
Quindi, il costo computazionale è di:
$$
\Large O(Entities)
$$
2023-12-19 01:19:27 +00:00
### [[9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo]]
2023-11-11 18:41:34 +00:00
L'[[identificatore]] minore deve terminare l'attesa per poter notificare della terminazione:
$$
2023-12-19 01:19:27 +00:00
\color{LightCoral} \mathrm{sleep}(\min (Identifier))
2023-11-11 18:41:34 +00:00
$$
Poi, deve trascorrere sufficiente tempo per il [[broadcast problem|broadcast]] di terminazione:
$$
\color{SkyBlue} Entities
$$
Per un totale di:
$$
{
2023-12-19 01:19:27 +00:00
\color{LightCoral} \mathrm{sleep}(\min (Identifier))
2023-11-11 18:41:34 +00:00
}
+
{
\color{SkyBlue} Entities
}
$$
La [[notazione asintotica]] risultante dipende dalla scelta effetuata di $\mathrm{delay}(Identifier)$.