mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-22 18:44:17 +00:00
61 lines
1.4 KiB
Markdown
61 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?==
|
||
|
|