首页 > 编程语言 >分布式计算ECHO算法(IT部落格)

分布式计算ECHO算法(IT部落格)

时间:2023-04-03 13:03:38浏览次数:48  
标签:IntMessage setColor Color getColor 分布式计算 ECHO 算法 GREEN public


package org.ustc.scst.dc.simulation.algorithms.echo;
 
import java.awt.Color;
 
import org.ustc.scst.dc.simulation.algorithms.echo.IntMessage;
import org.ustc.scst.dc.simulation.model.Message;
import org.ustc.scst.dc.simulation.model.Node;
 
/**
 * This special type of node is performing the Echo Algorithm. Fill in your code
 * here
 *
 * @author Thomas Weise
 */
public class EchoNode extends Node {
  /** the serial version uid */
  private static final long serialVersionUID = 1L;
 
  // you may add some fields
  /**
 *
 */
private int size=0;
/**
 *
 */
private Node father;
  /**
   * The node
   *
   * @param x
   *          the x-coordinate
   * @param y
   *          the y-coordinate
   */
  public EchoNode(final int x, final int y) {
    super(x, y);
    //String s="dfsdfsd"; //$NON-NLS-1$  在这里进行属性设置
    //this.setText(s);
  }
 
  /** Reset this model base to the initial state. */
  @Override
  public synchronized void reset() {
    // add some code here
    super.reset();
  }
 
  /**
   * This method can directly be called from somewhere in order to start
   * something. Currently it does nothing, so fill it with life!!!
   */
  @Override
  public synchronized void trigger() {
    // add some code here
 this.setColor(Color.BLUE);
 
 this.broadcast(new IntMessage(0));
    super.trigger();
  }
 
  /**
   * This method is invoked whenever a message arrives at this node.
   *
   * @param msg
   *          the message just received
   */
  @Override
  public synchronized void onMessageReceived(final Message msg) {
    // add some code here
   //非叶节点  往外发送消息 如果是白色
  if(this.getColor()==Color.WHITE)
  {
   this.father=msg.getSource();
   this.setColor(Color.RED);
   this.broadcastExcept(new IntMessage(0), this.father);
  }
  //如果是叶节点 则返回绿色数据
  if(this.getNeighborCount()==1 && this.getColor()!=Color.GREEN && this.getColor()!=Color.BLUE)
  {
   this.setColor(Color.GREEN);
   this.broadcast(new IntMessage(1));
  }
  //如果是非叶节点 收到所有的反馈消息
  if(msg.getColor()==Color.GREEN)
  {
   this.size++;
  }
  //收到所有的绿色消息
  if(this.getNeighborCount()==(this.size+1) && this.getColor()!=Color.GREEN && this.getColor()!=Color.BLUE)
  {
   this.setColor(Color.GREEN);
   this.sendTo(new IntMessage(1), this.father);
  }
  //如果是头节点
  if(this.getNeighborCount()==this.size && this.getColor()==Color.BLUE)
  {
   this.setColor(Color.GREEN);
  }
   
   
    super.onMessageReceived(msg);
  }
}


其中模拟视频如连接所示:

http://v.youku.com/v_show/id_XNjc4MDE1NjE2.html



标签:IntMessage,setColor,Color,getColor,分布式计算,ECHO,算法,GREEN,public
From: https://blog.51cto.com/u_15990596/6166076

相关文章

  • 最快速度求两个数组之交集算法
    该题目来自58同城的二面,用最快速度求两个数组之交集算法。比如A={6,2,4,1},B={2,9,4,3},那么A&B={2,4}。算法一:在大多数情况,也就是一般的情况下,大家都能想出最暴力的解法,通常也就是采用遍历或者枚举的办法来解决问题。该题需要找出两个数组的交集,最简单的一个办法就是用A数......
  • 算法杂记 2023/04/02
    算法杂记2023/04/02目录算法杂记2023/04/02网易笔试第二题输入:输出:例子:6329.MakeK-SubarraySumsEqual网易笔试第二题给定一棵中序遍历的二叉树,如果当前树为空则表示为X,如果不为空则表示为(left_tree)cur_value(right_tree),其中left_tree和right_tree分别表示按此规则序......
  • 分治(Divide and Conquer)算法之归并排序
    顾名思义,分治问题由“分”(divide)和“治”(conquer)两部分组成,通过把原问题分为子问题,再将子问题进行处理合并,从而实现对原问题的求解。我们在排序章节展示的归并排序就是典型的分治问题,其中“分”即为把大数组平均分成两个小数组,通过递归实现,最终我们会得到多个长度为1的子数组;“......
  • Python 数据结构与算法详解
    一、数据结构与算法1、算法提出1.算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机按照确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立......
  • 基于matlab的GPS信号相关检测算法仿真
    1.算法描述       全球定位系统(GlobalPositioningSystem,GPS),是一种以人造地球卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间信息。GPS自问世以来,就以其高精度、全天候、全球覆盖、方便灵活吸引......
  • m基于最小生成树算法的无线传感器网络MCDS生成matlab仿真
    1.算法描述       一个有n个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有n个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。图的所有生成树中具有边上的权值之和最小的树称为图的最小生成树(Minimu......
  • m基于WOA优化的SVM乳腺癌细胞和正常细胞分类识别算法matlab仿真,对比BP网络,SVM,PSO+S
    1.算法描述       SVM是有监督的学习模型,我们需要事先对数据打上分类标签,通过求解最大分类间隔来求解二分类问题。如果要求解多分类问题,可以将多个二分类器组合起来形成一个多分类器。        WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行......
  • Shell echo命令
    Shellecho命令Shell的echo指令用于字符串的输出。命令格式:shellstring的字面量有点特殊,核心注意单引号和双引号的区别echostring您可以使用echo实现更复杂的输出格式控制。1.显示普通字符串:echo"Itisatest"这里的双引号完全可以省略,以下命令与上面实例效果一......
  • 算法3
    9.一维数组前缀和s[0]=0;s[i]=s[i-1]+a[i];//i>=1初始化//l-k区间范围的和s[k]-s[l-1];10.二维数组前缀和s[x][y]=s[x-1]s[y]+s[x][y-1]-s[x-1][y-1]+a[x][y];//初始化//(x1,y1)到(x2,y2)矩阵和s[x2][y2]-s[x1-1][y2]-s[x1][y2-1]+s[x1-1][y1-1];......
  • 算法2
    4.二分算法(浮点数)boolcheck(doublex).....//x满足某种性质voidbsearch_3(doublel,doubler){consteps=1e-6;//控制精度while(i-j<eps){intmid=(l+r)/2;if(check(mid))l=mid;r=mid;}5.高精度加法vector<int>add(vector<int>&A,vector<int>&B){intt=0;vector<......