1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-28 21:04:19 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Algoritmi affidabili/TellAll Crash.md

1.5 KiB

algoritmo di consenso sincrono deterministico.

comportamento

[!Summary] Ogni entità tiene traccia delle scelte e dei guasti di esecuzione di crash che conosce.

Ad ogni tick, manda questi dati a tutte le altre, e aggiorna i propri con i dati che riceve.

algoritmo corretto

[!Success] Dopo tante iterazioni quante i guasto possibili più una, l'algoritmo termina.

Note

L'iterazione extra è necessaria per garantire il consenso nel caso in cui le entità si guastino una ad una durante la propagazione del proprio messaggio.

costo computazionale distribuito

Costo notazione O-grande
comunicazione O(Entities^2 \cdot Fallible)
9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo O(Fallible)

comunicazione

Ad ogni tick, ogni entità invia a tutte le altre un report: {\color{LightCoral} \sum_{Tick}^{Iterations}} {\color{SpringGreen} \sum_{Entity}^{Entities}} {\color{SkyBlue} (Entities - 1)} Cioè: {\color{LightCoral} (Fallible - 1)} \cdot {\color{SpringGreen} (Entities)} \cdot {\color{SkyBlue} (Entities - 1)}

In notazione asintotica: \Large O({\color{SpringGreen} Entities} ^{\color{SkyBlue} 2} \cdot {\color{LightCoral} Fallible})

9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo

Richiede il seguente numero di iterazioni da un tick ciascuna: Fallible + 1 In notazione asintotica: \Large O(Fallible)