发明名称 分布式无线传感器网络覆盖空洞识别方法
摘要 本发明提供了一种分布式无线传感器网络覆盖空洞识别方法,在边界节点集中以一个点为起始点在其1跳或2跳邻居节点中检索符合绝对角要求的后继,若搜索不到符合要求的后继则改变方向继续检索,在此过程中若后继为2跳邻居则插入最近公共1跳邻居,重复以上过程直到边界节点集为空,得到无线传感器网络的覆盖空洞。本发明解决了目前无线传感器网络中覆盖空洞识别精度低,能耗要求高的技术难题,将覆盖空洞的识别问题转化为环绕其的边界节点识别和聚类问题,有效降低了算法复杂度,减少了运行时间和覆盖空洞识别过程中节点间的通信与能量消耗,提高了识别精度。
申请公布号 CN105072631A 申请公布日期 2015.11.18
申请号 CN201510423338.2 申请日期 2015.07.17
申请人 中北大学 发明人 赵利辉;刘文怡;雷海卫;王红亮;苏淑靖;熊继军;沈三明;张斌;董和磊
分类号 H04W24/02(2009.01)I;H04W52/02(2009.01)I 主分类号 H04W24/02(2009.01)I
代理机构 武汉华旭知识产权事务所 42214 代理人 刘荣;周宗贵
主权项 一种分布式无线传感器网络覆盖空洞识别方法,其特征在于包括以下步骤:(1)以节点的位置信息建立无线传感器网络的全局坐标系,设无线传感器网络的节点集为S,边界节点集为BN<sub>s</sub>,<img file="FDA0000762002110000016.GIF" wi="203" he="62" />对于一个节点v,用visit(v)表示节点v的访问标识,其值为0表示节点v未访问,其值为1表示节点v已访问;将边界节点集BN<sub>s</sub>中各节点的访问标识置为0,初始化一个空集作为最外层边界节点集BN<sub>Cycle</sub>;在无线传感器网络的已知的边界节点集BN<sub>s</sub>中选择坐标最小的节点v<sub>st</sub>,将其置为当前节点v<sub>cu</sub>,将当前节点加入最外层边界节点集BN<sub>Cycle</sub>,置v<sub>cu</sub>的访问标识为1;(2)从当前节点v<sub>cu</sub>的访问标识为0的1跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000011.GIF" wi="188" he="131" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>1</sub>,将v<sub>1</sub>作为当前节点v<sub>cu</sub>的后继,以该后继作为当前节点v<sub>cu</sub>,将当前节点v<sub>cu</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(3);如果不存在,则从当前节点v<sub>cu</sub>的访问标识为0的1跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000012.GIF" wi="128" he="114" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>1</sub>,将v<sub>1</sub>作为当前节点v<sub>cu</sub>的后继,以该后继作为当前节点v<sub>cu</sub>,将当前节点v<sub>cu</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(3);如果不存在,则从当前节点v<sub>cu</sub>的访问标识为0的2跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000013.GIF" wi="182" he="130" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>1</sub>,将v<sub>1</sub>作为当前节点v<sub>cu</sub>的后继,在S中寻找当前节点v<sub>cu</sub>和后继v<sub>1</sub>的最近公共1跳邻居v<sub>2</sub>,将v<sub>2</sub>置为v<sub>1</sub>的前驱,将v<sub>2</sub>置为v<sub>cu</sub>的后继,以v<sub>1</sub>作为当前节点v<sub>cu</sub>,将v<sub>cu</sub>和v<sub>2</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(3);如果不存在,则从当前节点v<sub>cu</sub>的访问标识为0的2跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000014.GIF" wi="128" he="117" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>1</sub>,将v<sub>1</sub>作为当前节点v<sub>cu</sub>的后继,在S中寻找当前节点v<sub>cu</sub>和后继v<sub>1</sub>的最近公共1跳邻居v<sub>2</sub>,将v<sub>2</sub>置为v<sub>1</sub>的前驱,将v<sub>2</sub>置为v<sub>cu</sub>的后继,以v<sub>1</sub>作为当前节点v<sub>cu</sub>,将v<sub>cu</sub>和v<sub>2</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(3);如果当前节点的访问标识为0的2跳邻居节点的绝对角均不属于<img file="FDA0000762002110000015.GIF" wi="353" he="81" />则进入步骤(4);(3)在当前节点v<sub>cu</sub>的访问标识为0的1跳邻居节点和2跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000021.GIF" wi="182" he="132" />或<img file="FDA0000762002110000022.GIF" wi="124" he="117" />的邻居节点,如果存在则返回步骤(2),否则将当前节点置为一个拐点然后执行步骤(4);(4)从当前节点的访问标识为0的1跳邻居节点中搜寻是否存在绝对角属于[0,π]的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>3</sub>,将v<sub>3</sub>作为当前节点v<sub>cu</sub>的后继,以该后继作为当前节点v<sub>cu</sub>,将当前节点v<sub>cu</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(5);如果不存在,从当前节点的访问标识为0的2跳邻居节点中搜寻是否存在绝对角属于[0,π]的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>3</sub>,将v<sub>3</sub>作为当前节点v<sub>cu</sub>的后继,在S中寻找当前节点v<sub>cu</sub>和后继v<sub>3</sub>的最近公共1跳邻居v<sub>4</sub>,将v<sub>4</sub>置为v<sub>3</sub>的前驱,将v<sub>4</sub>置为v<sub>cu</sub>的后继,以v<sub>3</sub>作为当前节点v<sub>cu</sub>,将v<sub>cu</sub>和v<sub>4</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(5);如果不存在,进入步骤(6);(5)在当前节点v<sub>cu</sub>的访问标识为0的1跳邻居节点和2跳邻居节点中搜寻是否存在绝对角属于[0,π]的邻居节点,如果存在则返回步骤(4),否则将当前节点置为一个拐点然后执行步骤(6);(6)检查v<sub>st</sub>是否存在于当前节点的1跳或2跳邻居节点中,如果是则跳转至步骤(10);否则,从当前节点的访问标识为0的1跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000023.GIF" wi="148" he="82" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>5</sub>,将v<sub>5</sub>作为当前节点v<sub>cu</sub>的后继,以该后继作为当前节点v<sub>cu</sub>,将当前节点v<sub>cu</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(7);如果不存在,从当前节点的访问标识为0的2跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000024.GIF" wi="144" he="82" />的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>5</sub>,将v<sub>5</sub>作为当前节点v<sub>cu</sub>的后继,在S中寻找当前节点v<sub>cu</sub>和后继v<sub>5</sub>的最近公共1跳邻居v<sub>6</sub>,将v<sub>6</sub>置为v<sub>5</sub>的前驱,将v<sub>6</sub>置为v<sub>cu</sub>的后继,以v<sub>5</sub>作为当前节点v<sub>cu</sub>,将v<sub>cu</sub>和v<sub>6</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(7);如果不存在,进入步骤(8);(7)检查v<sub>st</sub>是否存在于当前节点的1跳或2跳邻居节点中,如果是则跳转至步骤(10);否则,从当前节点v<sub>cu</sub>的访问标识为0的1跳邻居节点和2跳邻居节点中搜寻是否存在绝对角属于<img file="FDA0000762002110000031.GIF" wi="146" he="82" />的邻居节点,如果存在则返回步骤(6),否则将当前节点置为一个拐点然后执行步骤(8);(8)检查v<sub>st</sub>是否存在于当前节点的1跳或2跳邻居节点中,如果是则跳转至步骤(10);否则,从当前节点的访问标识为0的1跳邻居节点中搜寻是否存在绝对角属于[π,2π]的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>7</sub>,将v<sub>7</sub>作为当前节点v<sub>cu</sub>的后继,以该后继作为当前节点v<sub>cu</sub>,将当前节点v<sub>cu</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(9);如果不存在,从当前节点的访问标识为0的2跳邻居节点中搜寻是否存在绝对角属于[π,2π]的邻居节点,如果存在则从这些邻居节点中选取绝对角最小的节点v<sub>7</sub>,将v<sub>7</sub>作为当前节点v<sub>cu</sub>的后继,在S中寻找当前节点v<sub>cu</sub>和后继v<sub>7</sub>的最近公共1跳邻居v<sub>8</sub>,将v<sub>8</sub>置为v<sub>7</sub>的前驱,将v<sub>8</sub>置为v<sub>cu</sub>的后继,以v<sub>7</sub>作为当前节点v<sub>cu</sub>,将v<sub>cu</sub>和v<sub>8</sub>加入最外层边界节点集BN<sub>Cycle</sub>,将v<sub>cu</sub>的访问标识置为1,进入步骤(9);(9)如果当前节点的1跳邻居节点和2跳邻居节点包含节点v<sub>st</sub>,进入步骤(10),否则返回步骤(8);(10)将最外层边界节点集BN<sub>Cycle</sub>作为无线传感器网络的最外层边界输出,求取最外层边界节点集BN<sub>Cycle</sub>和边界节点集BN<sub>s</sub>的交集bounds=BN<sub>Cycle</sub>∩BNs,将bounds从边界节点集BN<sub>s</sub>中移除得到剩余边界节点集BN<sub>Remain</sub>=BNs/bounds,将最外层边界节点集BN<sub>Cycle</sub>重置为空集;(11)在BN<sub>Remain</sub>集合中选取访问标识为0且坐标最小的节点作为当前节点v<sub>cu</sub>,重复步骤(2)到步骤(10),直到剩余边界节点集BN<sub>Remain</sub>为空或者边界节点集BN<sub>S</sub>为空,完成覆盖空洞识别。
地址 030051 山西省太原市学院路3号