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

56 lines
1.5 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.
> [!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 computazionale]]
| 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)
$$