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 v3.md

1.7 KiB

algoritmo di broadcast problem che riduce il comunicazione rispetto al flooding v2.

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 tranne quello che gliel'ha inviato.

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 tranne quello che gliel'ha inviato, poi passa allo stato DONE.

DONE

Non fa niente.

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

Il costo computazionale è lo stesso del flooding v2, ma con un trasferimento in meno per ogni entità che non è il leader: 2 \cdot Channels - (Entities - 1)

In notazione asintotica, è sempre: \Large O(Channels)

Note

Coincide con il lower bound del broadcast problem.

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.