Étant donné un réseau et un noeud source sélectionné, il est très facile d'effectuer une diffusion d'information dans le réseau. Le noeud source envoie un message à tous ses voisins. Puis l'algorithme est comme suit : si un noeud non-informé reçoit le message, il devient informé et envoie le message à son tour à ses voisins.
On définit une classe BroadcastNode
qui hérite de Node
, en surchargeant trois méthodes :
onStart()
,onSelection()
. La sélection se fait à la souris (bouton du milieu ou bien Ctrl+clic gauche)onMessage()
.Le code correspondant est donné ci-dessous. Il est important de le comprendre entièrement avant de passer à la suite, car les autres algorithmes s'inspireront de celui-ci.
import io.jbotsim.core.Message;
import io.jbotsim.core.Color;
import io.jbotsim.core.Node;
public class BroadcastNode extends Node {
@Override
public void onStart() { // Initialisation par défaut
setColor(Color.green); // Non informé
}
@Override
public void onSelection() { // Noeud sélectionné
setColor(Color.red); // Informé
sendAll(new Message("Mon message"));
}
@Override
public void onMessage(Message message) {
if (getColor() == Color.green) { // Si non-informé
setColor(Color.red); // Devient informé
sendAll(new Message(message.getContent()));
}
}
}
Test : Cet algorithme peut être testé en utilisant la méthode main()
suivante.
public static void main(String[] args) {
Topology tp = new Topology();
tp.setDefaultNodeModel(BroadcastNode.class);
tp.setTimeUnit(500); // 1 ronde = 500ms
new JViewer(tp);
tp.start();
}