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.4 KiB

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

Funzionamento

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.

Comportamento

LEADER

All'impulso spontaneo, invia il suo messaggio:

spontaneously! {
	send!(*, Message {...});
	state!(DONE);
}

Se lo riceve indietro, non fa niente:

on_receive! {
	_ => {},
}

SLEEPING

Se riceve il messaggio, lo inoltra a tutti i suoi vicini, poi passa allo stato DONE:

on_receive! {
	_ => {
		send!(!sender, msg);
		state!(DONE);
	},
}

DONE

Non fa niente:

on_receive! {
	_ => {},
}

algoritmo corretto

Vedi flooding v2.

costo computazionale distribuito

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)

Spazio

Un multiplo del costo di comunicazione, sempre notazione asintotica a: \Large O(Channels)

Tempo

Vedi flooding v2.