[[algoritmo]] di [[computazione in grafi aciclici]].
> [!Summary]
> Si distribuisce un dato a ogni [[entità]], che effettua la computazione per i dati dei suoi figli e ne invia il risultato al genitore.
>
> Processati tutti i dati, viene effettuato un [[broadcast problem|broadcast]] ***dalle due entità rimaste*** per distribuire i risultati dell'algoritmo a tutti.
Inviano un ***[[wake-up problem|wake-up]]*** a tutte le altre [[entità]], poi tutte passano ad `ACTIVE`.
### `ACTIVE`
Riceve informazioni finchè non ne ha ricevute tante quante il numero dei suoi vicini meno uno (i suoi figli).
Effettua il calcolo sulle informazioni che ha, poi ne invia il [[risultato]] al vicino rimasto, passando a `PROCESSING`.
### `PROCESSING`
Attende un ulteriore [[messaggio]], che arriverà ***solo quando i due lati del [[grafo aciclico]] si incontreranno in due [[entità]]***.
Le [[entità]] `PROCESSING` che ricevono il [[messaggio]] ***effettuano nuovamente l'elaborazione tra il loro [[risultato]] e quello ricevuto***, e poi lo mandano a tutti i loro vicini tranne il mittente, passando a `DONE`.
### `DONE`
Un'[[entità]] `DONE` conosce il [[risultato]] della computazione, e non fa nient'altro.