1.4 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.
costo computazionale distribuito
Costo | notazione O-grande |
---|---|
comunicazione | O(Entities^2 \cdot Fallible) |
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})
Tempo
Richiede il seguente numero di iterazioni da un tick ciascuna:
Fallible + 1
In notazione asintotica:
\Large O(Fallible)
==Extra==
==C'è una dimostrazione aggiuntiva strana di cui non capisco lo scopo.==
==C'è un algoritmo di semplificazione per problemi decisionali che mi sembra triviale?==