2011-01-06 54 views
2

我是整个分布式系统领域的新手。我需要帮助来了解如何在此环境中形成群集,并决定哪个是CH(群集标题)。我想用生成树来选择能量最高的节点作为CH。当选择CH时,其他节点应将其信息发送给CH,CH将其发送到基站(红色节点)。如何在此环境中形成群集并选择群集标头?

问题是我不知道该算法应该如何。下面是一些算法,我试图做

聚类算法

  • 每隔一小时,节点启动生成树找到包含大部分能量的节点
  • 如果它收到一个“搜索”的一个节点的消息:

    - 如果来自发送方的能量低于其自身,则比较每个节点剩余的能量。用自己的ID回复 。如果来自发件人的能量比自己高。回复与发送者ID,并把它传递给其他的邻居

  • 当一个节点接收到它自己的ID,这使其自我簇头
  • 当其他节点知道簇首已经选择开始将信息发送到簇首

环境:

假设这是路由器网络

的数目是各节点的能量功率

红色节点是基站。

alt text

+0

如果你不告诉我们你尝试过的算法有什么问题,很难知道你想要什么帮助。 – 2011-01-06 08:14:38

回答

0

你的算法是近乎完美,唯一缺少的是关于网络的直径的信息。

网络的直径是网络中两个最远的节点的距离。

现在,让我们表示您的算法,例程A和网络直径(G)。在继续进一步讨论之前,让我们同意证明从(连接的)网络的任意节点开始的简单洪泛算法需要直达(G)轮到达网络的每个节点是微不足道的。首先,我们必须假设具有最多能量的节点是唯一的(即,不存在具有相同能量量的其他节点)。

如果每个节点事先知道网络的直径,那么这个问题很容易解决,我们只需要调用例程A进行diam(G)轮,然后,只有一个节点将有一个与他自己的ID相同的消息并且该节点将其变量前导改为true然后用“Leader is election,it is me”消息来洪泛网络。

-1
Cluster Form 
{ 
In each cluster 
If(Energy==…..) 
{ 
Energy= ……..; 
Send (CH_ID,CLUSTER_ID_CH) 
} 
If(Node_ CLUSTER _ID_CH== CLUSTER_ID_CH) 
    { 
send Join_Message(NODE_ID,CH_ID) 
//when receving Join_Messag 
CH send (TDMA) 
} 
}** 


for more information send me to [email protected]