1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-26 20:04:19 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/algoritmo senza nome di consenso sincrono deterministico.md

60 lines
1.4 KiB
Markdown

[[algoritmo]] di [[consenso sincrono deterministico]].
## [[Comportamento]]
> [!Summary]
> Ogni [[entità]] tiene traccia delle scelte e dei [[guasti di esecuzione di crash|crash]] che conosce.
>
> Ad ogni [[tick]], manda questi dati a tutte le altre, e aggiorna i propri con i dati che riceve.
## [[algoritmo corretto|Correttezza]]
> [!Success]
> Dopo tante iterazioni quante i [[guasto|guasti]] possibili più una, l'algoritmo termina.
## [[costo computazionale distribuito|Costo computazionale]]
| 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?==