1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-22 10:44:17 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/2 - Broadcast/flooding v2.md

1.8 KiB

algoritmo di broadcast problem che risolve l'incorrettezza del flooding v1.

Comportamento

[!Summary] Il leader invia il suo messaggio iniziale a tutti i vicini, e, se è la prima volta che lo ricevono, loro lo inoltrano a loro volta ai loro vicini.

Il leader è inizializzato allo stato LEADER, mentre tutti gli altri sono inizializzati allo stato SLEEPING.

LEADER

All'impulso spontaneo, invia il suo messaggio a tutti i vicini, poi passa allo stato DONE.

SLEEPING

Se riceve il messaggio del LEADER, lo inoltra a tutti i vicini, poi passa allo stato DONE.

DONE

Ignora qualsiasi cosa riceva.

algoritmo corretto

[!Success]

Per via dell'ipotesi di grafo connesso, tutte le entità eventualmente riceveranno e inoltreranno il messaggio del leader, diventando DONE.

costo computazionale distribuito

Costo notazione O-grande
comunicazione O(Channels)
tempo O(Channels)

Comunicazione

Attraverso ogni canale di comunicazione passeranno al massimo due messaggio:

  • 0, se l'algoritmo termina prima che il canale di comunicazione sia esplorato
  • 1, se l'entità di destinazione non è ancora stata scoperta
  • 2, se entrambe le entità connesse sono scoperte contemporaneamente

Dunque, i messaggio trasferiti saranno: 2 \cdot Channels

Che, in notazione asintotica, è: \Large O(Channels)

Tempo

Il grafo potrebbe essere un cammino, che richiederebbe che ogni arco venisse attraversato, quindi sicuramente: \Large O(Channels)

Note

Coincide con il lower bound del broadcast problem.