COMMENTI SULLA DEFINIZIONE DELL'ALGORITMO ZA (vedi capitolo 3 GUARDS) Il fatto piu' difficile da capire in quella definizione e' che l'algoritmo e' definito in modo ricorsivo sul numero dei round, ma non e' definito in termini di chiamate ricorsive (o meglio, vederlo come chiamate ricorsive non lo rende piu' facile). Altra difficolta' sta nel fatto che r non e' il numero di round, ma il numero di round meno 1. Allora, innanzitutto c'e' un trasmettitore che trasmette il suo valore. Se il mio algoritmo ZA si basa su un solo round (r=0), gli altri nodi ricevono e si accontentano. Se l'algoritmo si basa su piu' round, diciamo r+1, gli altri nodi di cui sopra non si contentano di ricevere dal trasmettitore, ma si proclamano trasmettitori facendo partire un algoritmo di ZA con r round (che e' ZA(r-1) ) indirizzato agli altri n-2 nodi (cioe' non a se stesso e non al trasmettitore precedente). Ad esempio, se r=1, quindi ci sono due round, il trasmettitore manda il suo valore. Ognuno degli altri nodi trasmette il valore a tutti gli altri n-2. I vari nodi, essendo uno ZA(0) ricevono questo(i) secondo(i) messaggio(i) e si chetano. Avendo pero' ricevuto n-1 messaggi (da tutti i nodi che non siano il trasmettitore) devono votarli per maggioranza, con le modalita' descritte nel punto 3. Quindi, il punto 2 serve a far partire un numero di round pari a r+1, il punto 3 (e qui sta forse la fonte maggiore delle incomprensioni) serve a votare tutti i messaggi ricevuti dall'ultimo round effettuato: notare che questo passo non e' riscorsivo, cioe' la votazione viene fatta una volta sola, alla fine di tutti i round. Quindi, il messaggio originale ad ogni round viene ritrasmesso, e solo quando giunge alla destinazione dell'ultimo round non viene piu' ritrasmesso e viene votato.