分布式無線傳感器網絡覆蓋空洞識別方法
【技術領域】
[0001] 本發明涉及一種分布式無線傳感器網絡覆蓋空洞識別方法,屬于無線傳感器網絡
技術領域。
【背景技術】
[0002] 無線傳感器網絡被廣泛的應用于戰斗區域監測,環境監測、危險事件/區域檢測 和健康監測應用中。無線傳感器網絡是由眾多價格低廉、功能多樣,能夠進行短距離無線通 信的傳感器節點構成的,由于無線傳感器可以滿足危險區域或人跡難以到達區域的監測因 而成為當前國內外研究的熱點。無線傳感器能夠通過機載平臺或炮射等方式進行隨機部署 是其區別于傳統網絡的最大優點之一,然而其缺點也顯而易見,無線傳感器節點在部署后 容易遭受外力破壞,節點部署后電池很難被更換使其生命周期受到節點本身所攜帶電池的 影響,同時,節點由于受外力影響和電池能量耗竭而失效容易使無線傳感器網絡產生覆蓋 空洞,因而覆蓋空洞是無線傳感器網絡研究和應用中不可回避的問題。
[0003] 覆蓋空洞的出現嚴重影響著無線傳感器網絡的服務質量,即QoS,quality of services。為提高無線傳感器網絡的QoS,目前的研究中已經提出一些針對覆蓋空洞的識別 方法,然而目前大多數的方法都要求無線傳感器網絡進行密集部署,這不僅提高了無線傳 感器網絡的部署成本,而且存在著覆蓋空洞識別方法對網絡節點度要求高,識別過程能耗 高和識別精度低的問題尤其是在網絡稀疏的狀況下。
【發明內容】
[0004] 為了解決現有技術的不足,本發明提供了一種分布式無線傳感器網絡覆蓋空洞識 別方法,在識別環繞無線傳感器網絡覆蓋空洞和網絡最外層邊界的邊界節點的基礎上,利 用DW(Directional Walk,定向游走)技術能夠將邊界節點聚類為不同的覆蓋空洞和網絡 最外層邊界。
[0005] 本發明為解決其技術問題所采用的技術方案是:提供了一種分布式無線傳感器網 絡覆蓋空洞識別方法,包括以下步驟:
[0006] (1)以節點的位置信息建立無線傳感器網絡的全局坐標系,設無線傳感器網絡的 節點集為S,邊界節點集為BNS,BAQ c 對于一個節點V,用vistiy (v)表示節點v的訪問 標識,其值為〇表示節點v未訪問,其值為1表示節點v已訪問;將邊界節點集BNS中各節 點的訪問標識置為〇,初始化一個空集作為最外層邊界節點集BNey&;在無線傳感器網絡的 已知的邊界節點集BN S*選擇坐標最小的節點v st,將其置為當前節點,將當前節點加入 最外層邊界節點集BNe_,置^的訪問標識為1 ;
[0007] (2)從當前節點的訪問標識為0的1跳鄰居節點中搜尋是否存在絕對角屬于 [¥_,2;r]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點 Vl,將Vl作為 當前節點^的后繼,以該后繼作為當前節點Vm,將當前節點vJlP入最外層邊界節點集 BNCy&,將的訪問標識置為1,進入步驟⑶;
[0008] 如果不存在,則從當前節點的訪問標識為0的1跳鄰居節點中搜尋是否存在絕 對角屬于的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點Vl,將Vl 作為當前節點的后繼,以該后繼作為當前節點v ?,將當前節點vJlP入最外層邊界節點 集BNC_,將vcu的訪問標識置為1,進入步驟⑶;
[0009] 如果不存在,則從當前節點的訪問標識為0的2跳鄰居節點中搜尋是否存在絕 對角屬于的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點Vl,將 Vl作為當前節點v ?的后繼,在S中尋找當前節點v 和后繼v i的最近公共1跳鄰居v 2,將 置為V 1的前驅,將V2置為Vcu的后繼,以V 1作為當前節點Vcu,將Vcu和V2加入最外層邊界 節點集BNCy^,將^的訪問標識置為1,進入步驟(3);
[0010] 如果不存在,則從當前節點的訪問標識為0的2跳鄰居節點中搜尋是否存在絕 對角屬于[0,f]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點Vl,將 Vl 作為當前節點的后繼,在S中尋找當前節點v 和后繼v i的最近公共1跳鄰居v 2,將v2 置為Vl的前驅,將v 2置為v ?的后繼,以v i作為當前節點v ?,將\。和v 2加入最外層邊界節 點集BNCy^,將L的訪問標識置為1,進入步驟⑶;
[0011] 如果當前節點的訪問標識為〇的2跳鄰居節點的絕對角均不屬于[譬 則進入步驟(4);
[0012] (3)在當前節點的訪問標識為0的1跳鄰居節點和2跳鄰居節點中搜尋是否 存在絕對角屬于[f,2;r]或的鄰居節點,如果存在則返回步驟(2),否則將當前節點 置為一個拐點然后執行步驟(4);
[0013] (4)從當前節點的訪問標識為0的1跳鄰居節點中搜尋是否存在絕對角屬于 [0, Ji]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點v3,將v3作為 當前節點^的后繼,以該后繼作為當前節點V。。,將當前節點vJlP入最外層邊界節點集 BN Cy(:lf3,將v。。的訪問標識置為1,進入步驟(5);
[0014] 如果不存在,從當前節點的訪問標識為0的2跳鄰居節點中搜尋是否存在絕對角 屬于[0, JT]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點v3,將^作 為當前節點V?的后繼,在S中尋找當前節點v 和后繼v 3的最近公共1跳鄰居v 4,將^置 為v;3的前驅,將V 4置為V CU的后繼,以V 3作為當前節點V CU,將Vcu和V 4加入最外層邊界節點 集,將L的訪問標識置為1,進入步驟(5);
[0015] 如果不存在,進入步驟(6);
[0016] (5)在當前節點的訪問標識為0的1跳鄰居節點和2跳鄰居節點中搜尋是否 存在絕對角屬于[0, Ji]的鄰居節點,如果存在則返回步驟(4),否則將當前節點置為一個 拐點然后執行步驟(6);
[0017](6)檢查vst是否存在于當前節點的1跳或2跳鄰居節點中,如果是則跳轉至步驟 (10);否則,從當前節點的訪問標識為0的1跳鄰居節點中搜尋是否存在絕對角屬于[fH 的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點V5,將V5作為當前節點 L的后繼,以該后繼作為當前節點,將當前節點vjra入最外層邊界節點集BNe_,將L 的訪問標識置為1,進入步驟(7);
[0018] 如果不存在,從當前節點的訪問標識為0的2跳鄰居節點中搜尋是否存在絕對角 屬于[| ;誓]I的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點v5,將\作 為當前節點的后繼,在S中尋找當前節點v 和后繼v 5的最近公共1跳鄰居v 6,將^置 為V5的前驅,將V6置為V?的后繼,以V5作為當前節點V?,將VcdtJ V6加入最外層邊界節點 集BNC_,將L的訪問標識置為1,進入步驟(7);
[0019] 如果不存在,進入步驟(8);
[0020] (7)檢查vst是否存在于當前節點的1跳或2跳鄰居節點中,如果是則跳轉至步驟 (10);否則,從當前節點的訪問標識為〇的1跳鄰居節點和2跳鄰居節點中搜尋是否存 在絕對角屬于[|,警]I的鄰居節點,如果存在則返回步驟(6),否則將當前節點置為一個拐點 然后執行步驟(8);
[0021] (8)檢查vst是否存在于當前節點的1跳或2跳鄰居節點中,如果是則跳轉至步 驟(10);否則,從當前節點的訪問標識為0的1跳鄰居節點中搜尋是否存在絕對角屬于 [,2 31 ]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點v7,將^作 為當前節點的后繼,以該后繼作為當前節點v m,將當前節點vJlP入最外層邊界節點集 BNCy(:lf3,將v。。的訪問標識置為1,進入步驟(9);
[0022] 如果不存在,從當前節點的訪問標識為0的2跳鄰居節點中搜尋是否存在絕對角 屬于[31,2 31 ]的鄰居節點,如果存在則從這些鄰居節點中選取絕對角最小的節點v7,將v7 作為當前節點的后繼,在S中尋找當前節點v 和后繼v 7的最近公共1跳鄰居v s,將vs 置為v7的前驅,將v s置為v ?的后繼,以v 7作為當前節點v ?,將\。和v s加入最外層邊界節 點集BNCy^,將L的訪問標識置為1,進入步驟(9);
[0023](9)如果當前節點的1