1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-28 21:04:19 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Algoritmi affidabili/TellZero Byz.md

1.7 KiB

algoritmo di consenso sincrono deterministico bizantino, variante di TellAll Crash.

restrizioni al modello dei sistemi distribuiti aggiuntive

comportamento

[!Summary] Ogni entità tiene traccia delle scelte e dei guasti di esecuzione di crash che conosce.

Si sfrutta la verità assoluta fornita dal clock per impedire alle entità guasto di fornire informazioni false.

Ad ogni tick, se ha false come valore, lo manda a tutte le altre, assieme al suo valore di clock attuale, e aggiorna i propri con i dati che riceve.

Se al tick successivo riceve notifica di un false, notifica tutti i suoi vicini a sua volta; se al tick consecutivo riceve notifica da sufficienti vicini che confermano il false, deciderà per false.

algoritmo corretto

[!Success] Il protocollo termina dopo un numero finito di iterazioni.

La dimostrazione della validità del risultato è omessa perchè troppo lunga.

costo computazionale distribuito

Costo notazione O-grande
comunicazione O(Entities^3)
9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo O(Fallible)

9 - Algoritmi distribuiti/1 - Problemi algoritmici/tempo

Sono richiesti due tick per ogni iterazione dell'algoritmo, ma le cui fasi si possono sovrapporre:

  1. notifica di false
  2. conferma di false

Se TellAll Crash richiedeva Fallible + 1, questo algoritmo richiede: Fallible +2

Quindi: \Large O(Fallible)