3.6 KiB
algoritmo di leader election su anello.
comportamento
[!Summary]
Ogni entità riceve identificatori dalla entità precedente in un anello, tenendo traccia dell'identificatore minimo ricevuto, e inoltra alla entità successiva in un anello qualsiasi cambiamento al proprio minimo.
Quando un'entità avrà ricevuto il suo stesso identificatore dalla entità precedente in un anello, essa diventerà leader, e manderà un broadcast problem di terminazione a tutte le altre.
algoritmo corretto
[!Success] È certo che l'identificatore minimo di tutto il sistema distribuito attraverserà tutte le entità in esso, fino a tornare al futuro leader.
Avendo l'anello un numero finito di nodo di un grafo al suo interno, eventualmente sarà trovato un leader, che a quel punto farà terminare l'esecuzione con il broadcast problem.
costo computazionale distribuito
Costo | notazione O-grande | notazione Ω-grande |
---|---|---|
comunicazione | O(Entities^2) |
\Omega(Entities) |
9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo | O(Entities) |
... |
comunicazione
Caso peggiore
Il caso peggiore è quello in cui le entità sono iniziatori multipli e in ordine crescente di identificatore.
Nel caso peggiore, il ritardo di comunicazione unitario, quindi avremo che:
- il massimo sarà propagato per
1
messaggio - il secondo massimo sarà propagato per
2
messaggi \dots
- il minimo sarà propagato per
Entities
messaggi
Totalizzando:
\color{LightCoral} \sum_{Identifier=1}^{Entities} Identifier
Ovvero:
\color{LightCoral}
\frac
{Entities \cdot (Entities + 1)}
{2}
In aggiunta, sarà necessaria anche un broadcast problem di terminazione, che richiederà:
\color{SkyBlue} Entities
Per un totale di:
{
\color{LightCoral}
\frac
{Entities \cdot (Entities + 1)}
{2}
}
+
{
\color{SkyBlue} Entities
}
notazione asintotica:
\Large O \left( Entities^2 \right)
Caso migliore
Il caso migliore è quello in cui le entità sono risveglio multiplo e in ordine decrescente di identificatore.
Avremo che:
- il minimo sarà propagato per
Entities
messaggi - tutti gli altri per
1
messaggio
Totalizzando:
\color{LightCoral}
Entities
+
\sum_{Identifier=2}^{Entities} 1
Ovvero:
\color{LightCoral} Entities + (Entities - 1)
In aggiunta, sarà necessaria anche un broadcast problem di terminazione, che richiederà:
\color{SkyBlue} Entities
Per un totale di:
{
\color{LightCoral} Entities + (Entities - 1)
}
+
{
\color{SkyBlue} Entities
}
Ovvero:
3 \cdot Entities - 1
notazione asintotica:
\Large \Omega \left( Entities \right)
9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo
Caso peggiore
Il caso peggiore è quello in cui l'entità iniziatore singolo 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:
\Large O( Entities )