1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-23 02:44:17 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Leader election/leader election su anello as-far-as-it-can.md

103 lines
2.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[[algoritmo]] di [[leader election]] su [[anello]].
## [[Comportamento]]
> [!Summary]
>
> Ogni [[entità]] riceve identificatori dalla precedente, tenendo traccia dell'identificatore minimo ricevuto, e inoltra alla successiva qualsiasi cambiamento al proprio minimo.
## [[algoritmo corretto|Correttezza]]
Quando il futuro [[leader]] avrà ricevuto dalla precedente il suo stesso identificatore, l'algoritmo avrà terminato.
> [!Note]
>
> La [[terminazione locale|terminazione è locale solo per il leader]], le altre entità hanno bisogno di un [[broadcast problem|broadcast]].
## [[costo computazionale distribuito|Costo computazionale]]
==Includere la terminazione nel costo computazionale?==
### [[Comunicazione]]
#### Caso peggiore
Il caso peggiore è quello in cui le [[entità]] sono [[iniziatori multipli|tutte iniziatrici]] e in ordine crescente di [[identificatore]].
Assumendo un [[ritardo di comunicazione unitario]], avremo che:
1. il massimo sarà propagato per $1$ messaggio
2. il secondo massimo sarà propagato per $2$ messaggi
3. $\dots$
4. il minimo sarà propagato per $Entities$ messaggi
Totalizzando:
$$
\sum_{Identifier=1}^{Entities} Identifier
$$
Ovvero:
$$
\frac
{Entities \cdot (Entities + 1)}
{2}
$$
[[notazione asintotica|Asintoticamente]]:
$$
\Large O \left( Entities^2 \right)
$$
#### Caso migliore
Il caso peggiore è quello in cui ==le [[entità]] sono [[iniziatori multipli|tutte iniziatrici]]== e in ordine decrescente di [[identificatore]].
==Assumendo un [[ritardo di comunicazione unitario]]==, avremo che:
1. il minimo sarà propagato per $Entities$ messaggi
2. tutti gli altri per $1$ messaggio
Totalizzando:
$$
Entities
+
\sum_{Identifier=2}^{Entities} 1
$$
Ovvero:
$$
Entities + (Entities - 1)
$$
[[notazione asintotica|Asintoticamente]]:
$$
\Large \Omega \left( Entities \right)
$$
### [[Tempo]]
#### Caso peggiore
Il caso peggiore è quello in cui l'[[entità]] [[iniziatore singolo|iniziatrice è unica]] e alla massima distanza possibile dal futuro [[leader]].
Essa dovrà svegliare il leader, richiedendo:
$$
\color{LightCoral} Entities-1
$$
E poi l'identificatore del leader dovrà viaggiare per tutto l'anello, richiedendo:
$$
\color{SkyBlue} Entities
$$
Per un totale di:
$$
{\color{LightCoral} Entities-1}
+
{\color{SkyBlue} Entities}
$$
Cioè:
$$
2 \cdot Entities - 1
$$
[[notazione asintotica|Asintoticamente]]:
$$
\Large O( Entities )
$$