2

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

问题是我不知道算法应该如何。这是我尝试做的一些算法

聚类算法

  • 每隔一小时,节点会启动一棵生成树来寻找能量最多的节点
  • 如果收到“搜索”消息的节点:

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

  • 当一个节点收到它自己的 ID 时,它会成为自己的集群头
  • 当其他节点知道簇头已经被选择时,开始向簇头发送信息

环境:

假设这是一个路由器网络

数字是每个节点的能量功率

红色节点是基站。

替代文字

4

2 回答 2

0

您的算法几乎是完美的,唯一缺少的是有关网络直径的信息。

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

现在,让我们表示您的算法、例程 A 和网络直径 (G)。在继续之前,让我们同意证明从(连接的)网络的任意节点开始的简单泛洪算法需要 diam(G) 轮才能到达网络的每个节点是微不足道的。

首先,我们必须假设具有最多能量的节点是唯一的(即不存在具有相同能量的其他节点)。

如果每个节点都事先知道网络的直径,那么问题就很容易解决了,我们只需调用例程 A 进行 diam(G) 轮次,之后,只有一个节点会收到与自己 ID 相同的消息,并且该节点设置his variable leader to true and then floods the network with the "Leader is elected, and it is me" message.

于 2011-04-04T19:53:00.253 回答
-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  e.ouchker@gmail.com
于 2017-01-08T21:14:49.483 回答