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

1.5 KiB

Algoritmo di broadcast, migliore rispetto a flooding broadcast v2.

Ogni entità manda l'informazione a tutti i suoi vicini che non gliel'hanno mandato, ma solo se non l'ha già fatto.

Stato

  • INITIATOR: quello che manda il messaggio
  • SLEEPING: quelli che non mandano il messaggio
  • DONE: quelli non hanno mandato il messaggio, ma l'hanno ricevuto e inoltrato

comportamento

INITIATOR

Se ricevo il messaggio non faccio niente.

SLEEPING

Se ricevo il messaggio lo propago ai miei vicini eccetto quello che me l'ha mandato e passo a DONE.

DONE

Se ricevo il messaggio non faccio niente.

costo computazionale distribuito

Spazio

Abbiamo massimo 2 messaggi per ogni arco di un grafo della rete di comunicazione:

  • 1 normalmente
  • 2 se i due nodi che l'arco connette si mandano messaggi a vicenda

Quindi, l'algoritmo è in O(archi), ovvero O(nodi), e in particolare: #TODO La formula formattata bene.

Tempo (unitario uniforme per messaggio)

diametro di un grafo della rete di comunicazione.

Quindi, l'algoritmo è in O(nodi).

Osservazioni

C'è terminazione locale, ma non terminazione globale: non si sa termination detection problem!

L'algoritmo è efficiente negli albero, non nei grafo completo: #TODO Al minimo richiede n - 1 messaggi, e quindi \Omega(nodi).