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/7 - Guasti/algoritmo senza nome di consenso sincrono deterministico.md

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?==