主权项 |
一种分布式无线传感器网络覆盖空洞识别方法,其特征在于包括以下步骤:(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>为空,完成覆盖空洞识别。 |