当一些邻近网格不在与中心网格相同的组中时,搜索规则略有不同。 情况如图8所示。 在图8(a)中,中心节点在组i中,但其左上,右上和右上网格在组i + 1中; 在图8(b)中,中心节点在组i + 1中,但其左下,右下和右下网格在组i中。在这种情况下,同一组中的相邻网格具有更高的优先级。 邻居网格的搜索优先级如图8所示。
上面的规则有一个例外。 如果中心节点从不同的组连接,则其搜索规则不同。 例如,如图8(c)所示,组i中的节点+1连接中心节点,因为它不能在其自己的组中找到合适的节点。 在这种情况下,当中心节点选择其下一个节点时,它向组i + 1中的节点给予较高的优先级。这是将连接推回到原始组。 优先级如图8(c)所示。
注意,网格搜索优先级与搜索方向相关。 优先级背后的理念是在搜索方向上找到下一个节点,因为在相反方向上的网格具有最低的优先级。 当在搜索方向上没有节点时,也可以选择其他节点。 例如,如图9所示,基于节点可用性和优先级,选择节点2作为节点1的下一个节点。在这种情况下,似乎连接方向改变。 然而,节点2仍然使用网格优先级来搜索其下一个节点,并且如果存在任何搜索方向的节点,则将找到搜索方向上的节点。 我们可以看到,在一些网格中节点的不可用性在某些情况下形成了之字形连接线。
节点选择规则。 从在上一步骤中确定的候选网格中选择下一个节点。 具体来说,这个候选节点是根据以下两个规则选择的:
规则1:候选节点必须在搜索节点的通信范围内。
规则2:一个网格中的候选节点必须具有到搜索节点的最长水平距离。 规则3:所选连接节点必须具有到搜索节点的最大水平距离。
一个例子如图10所示。 候选网格是右上网格和右下网格,并且每个网格中有多个节点。 基于前两个规则,右上方网格中的协调器选择节点2并且右下方网格中的协调器选择节点3作为候选节点。 由于搜索节点和节点2之间的距离比节点3和搜索节点之间的距离长,因此选择节点2作为下一个节点。 当连接再次到达网格时,协调器将从其他节点中选择未被任何子组采用的候选节点。
组/子组确定。当连接到达可覆盖区域边界的边界节点时,成功建立子组,并且需要开始新的子组构造。 例如,如图1所示, 如图11所示,到达边界节点1并建立其子组。 要启动新的子组,节点1仅搜索其上的边界节点。 它找到节点2并且通知节点2关于新的子组构造和新的搜索方向。 节点2获知其搜索方向是从右到左,然后它使用相应的网格搜索优先级和节点选择规则来建立其子组。 当找到左侧的边界节点并且然后以相同的方式开始另一子组构造过程时,完成该过程。
每个子组由组ID和子组ID标识。组ID由其成员节点的组ID确定。其成员节点可以属于一个或多个组。如图所示。 1,子组A仅涉及组i-1,因此其组ID简称为i-1。相反,亚组B,C和D涉及多于一个组。在这种情况下,组ID由贡献最多节点数的组确定。
协议。整个自组织步骤是由起始节点发起的一个来回过程,该节点最接近该区域的位置(0,0)。连接过程首先从左向右开始,每当到达搜索方向上的边界节点时切换方向,并且当不能添加更多节点时停止。图12是说明该过程的示例。只有一小部分不能包括在任何子组中。这些节点被标记为冗余节点。初始化阶段的通信协议如算法1所示。
相关推荐: