1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-27 20:34:18 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/5 - Algoritmi di leader election/leader election su anello as-far-as-it-can.md

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:

  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: \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:

  1. il minimo sarà propagato per Entities messaggi
  2. 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 )