,,
(湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,武漢 430062)
傳感器網(wǎng)絡(luò)[1]由大量的傳感器節(jié)點(diǎn)隨機(jī)部署在空間中組成的,單個(gè)節(jié)點(diǎn)主要組成模塊包括數(shù)據(jù)采集模塊、通信模塊、電源管理模塊。由于節(jié)點(diǎn)的能量、存儲(chǔ)、通信距離有限,為了減少節(jié)點(diǎn)在數(shù)據(jù)傳輸?shù)倪^(guò)程中消耗的能量[2]和節(jié)點(diǎn)無(wú)休眠的工作消耗的能量,采用了對(duì)節(jié)點(diǎn)有限時(shí)間內(nèi)自適應(yīng)采集的數(shù)據(jù)與數(shù)據(jù)壓縮的方式。該方式不僅減少了相對(duì)應(yīng)數(shù)據(jù)的傳輸量[3],而且減少了節(jié)點(diǎn)能量的消耗;此時(shí)通過(guò)傳感器網(wǎng)絡(luò)中節(jié)點(diǎn)不同時(shí)刻和不同位置采集的數(shù)據(jù)具有一定的時(shí)空相關(guān)性[4],以及傳感器節(jié)點(diǎn)對(duì)自身采集的數(shù)據(jù)可以通過(guò)硬件功能進(jìn)行處。然而無(wú)線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn)在同一片區(qū)域采集的數(shù)據(jù)具有相對(duì)變化較小的特性,對(duì)該處理的數(shù)據(jù)將進(jìn)行無(wú)損壓縮[5],并要求傳送的數(shù)據(jù)(如:溫度,濕度)精確到一定程度。本文提出了一種基于時(shí)空差分后Huffman的數(shù)據(jù)無(wú)損壓縮算法。該方案采用單個(gè)節(jié)點(diǎn)自身對(duì)數(shù)據(jù)采集和處理,處理后進(jìn)行編碼傳輸,節(jié)點(diǎn)的傳輸數(shù)據(jù)大量減少[6],同時(shí)也能將壓縮的數(shù)據(jù)進(jìn)行還原。因此減少了節(jié)點(diǎn)發(fā)送的數(shù)據(jù)量和網(wǎng)絡(luò)中的通信流量[7],并延長(zhǎng)網(wǎng)絡(luò)生命。
Steffen[8]提出了一種自適應(yīng)壓縮大型矢量的方案,該方案對(duì)節(jié)點(diǎn)自身的處理數(shù)據(jù)要求非常高,然而節(jié)點(diǎn)采用的處理方式速度較慢,加大了處理數(shù)據(jù)的時(shí)間,數(shù)據(jù)不能及時(shí)發(fā)送,也未達(dá)到節(jié)約能耗。Ikjune Yoon[9]提出了無(wú)線傳感器網(wǎng)絡(luò)能量采集的自適應(yīng)傳感和壓縮率選擇方案,通過(guò)電池的能量情況選擇不同的壓縮模式。該方案在開(kāi)始就需要比較對(duì)壓縮方案進(jìn)行選擇判斷,在節(jié)點(diǎn)能量較低的情況下采用低壓縮率方式,對(duì)節(jié)點(diǎn)的能量并沒(méi)有太多的節(jié)省。Sunyong Kim[10]提出使用能量回收的無(wú)線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)壓縮延長(zhǎng)網(wǎng)絡(luò)壽命,該方案通過(guò)簇頭對(duì)數(shù)據(jù)進(jìn)行多級(jí)壓縮,然而多級(jí)壓縮過(guò)程容易導(dǎo)致樹(shù)列后節(jié)點(diǎn)的能量消耗過(guò)快。Francesco Marcelloni[11]提出了一種無(wú)線傳感器網(wǎng)絡(luò)監(jiān)測(cè)小節(jié)點(diǎn)的高效無(wú)損壓縮算法,該方案采用的LZW編碼這種擴(kuò)展會(huì)產(chǎn)生更高的內(nèi)存占用,但不會(huì)明顯影響壓縮比,而且對(duì)應(yīng)于較長(zhǎng)代碼的差異具有非常接近0的概率。
上述文獻(xiàn)都考慮到了壓縮節(jié)點(diǎn)采集的數(shù)據(jù),然而并沒(méi)有真正在將數(shù)據(jù)量減少的情況下進(jìn)行無(wú)損壓縮數(shù)據(jù)[12],同時(shí)保證數(shù)據(jù)采集的時(shí)效性和數(shù)據(jù)的無(wú)損性。本文通過(guò)時(shí)空性使用差分器將數(shù)據(jù)差值,再將差值后的數(shù)據(jù)與閾值比較后進(jìn)行Huffman編碼,最后節(jié)點(diǎn)將無(wú)損壓縮的數(shù)據(jù)傳遞給簇頭,再傳送給服務(wù)器,服務(wù)器接收到數(shù)據(jù)后通過(guò)疊加的方式將數(shù)據(jù)還原。由于服務(wù)器是一直供電,當(dāng)對(duì)收到的數(shù)據(jù)進(jìn)行還原時(shí)并不用考慮服務(wù)器的能耗問(wèn)題,通過(guò)實(shí)驗(yàn)數(shù)據(jù)分析,采用差分Huffman編碼減小了節(jié)點(diǎn)的功耗[13],同時(shí)也提高了數(shù)據(jù)壓縮的比率和網(wǎng)絡(luò)生命周期,并保證了節(jié)點(diǎn)在能量消耗保持相對(duì)穩(wěn)定。
無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)通過(guò)傳感器采集數(shù)據(jù),并通過(guò)A/D模型將采集的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包含節(jié)點(diǎn)ID和節(jié)點(diǎn)所采集數(shù)據(jù)(圖1)。通過(guò)節(jié)點(diǎn)采集的數(shù)據(jù)具有一定的時(shí)間相關(guān)性,同一節(jié)點(diǎn)相鄰的兩個(gè)時(shí)刻采集的數(shù)據(jù)具有一定的關(guān)聯(lián),當(dāng)相鄰時(shí)刻采集的數(shù)據(jù)不變時(shí),可以減少大量的數(shù)據(jù)傳輸;同時(shí),不同的節(jié)點(diǎn)間的數(shù)據(jù)具有一定的空間相關(guān)性,當(dāng)在一定的區(qū)域中,不同節(jié)點(diǎn)采集的數(shù)據(jù)具有一定的差異時(shí),根據(jù)區(qū)域內(nèi)多個(gè)傳感器采集的數(shù)據(jù)進(jìn)行比較分析,可以將大量一致的數(shù)據(jù)在矩陣中轉(zhuǎn)換成0后,再進(jìn)行傳輸?shù)骄W(wǎng)關(guān),并可以減少簇頭在傳輸時(shí)的數(shù)據(jù)。此時(shí)可以將數(shù)據(jù)放置在三維空間表示(圖2),節(jié)點(diǎn)通過(guò)當(dāng)前時(shí)刻的數(shù)據(jù)與前一時(shí)刻的數(shù)據(jù)進(jìn)行差值,并將同一簇類(lèi)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行比較,之后采用無(wú)損壓縮將數(shù)據(jù)傳輸給服務(wù)器。由于無(wú)線傳感器網(wǎng)絡(luò)的數(shù)據(jù)傳輸消耗的能量與距離和放大系數(shù)有關(guān),傳輸數(shù)據(jù)的能量遠(yuǎn)大于處理數(shù)據(jù)所用的能量,此時(shí)傳輸數(shù)據(jù)消耗的能量[14]公式為:
ETX=mEelec+Eamp(m,d)=mEelec+mεdx
(1)
Eelec為采集1bit數(shù)據(jù)消耗的能量;Eamp為傳輸時(shí)消耗的能量,d表示節(jié)點(diǎn)與簇頭的距離,ε表示傳輸時(shí)與距離相關(guān)的放大倍數(shù);
圖2 節(jié)點(diǎn)的時(shí)空性
節(jié)點(diǎn)中的每一個(gè)傳感器采集到的數(shù)據(jù)不相互影響,通過(guò)差分器將現(xiàn)在時(shí)刻采集的數(shù)據(jù)與前一個(gè)時(shí)刻的數(shù)據(jù)進(jìn)行差分(圖3)。多個(gè)數(shù)據(jù)同時(shí)進(jìn)行并行處理并獲得一個(gè)差分值。該差分器的公式為:
yi(n)=xi(n)-xi(n-1)
(2)
而此時(shí)xi(n)為單個(gè)節(jié)點(diǎn)傳感器某時(shí)刻所采集的數(shù)據(jù)xi={xi1,xi2,xi3,,,xin},并通過(guò)單個(gè)節(jié)點(diǎn)現(xiàn)在采集的數(shù)據(jù)與前一時(shí)刻xi(n-1)的數(shù)據(jù)進(jìn)行差分,并獲得yi(n)={yi1,yi2,yi3,,,yin},yi(n)為單個(gè)節(jié)點(diǎn)所有傳感器采集的數(shù)據(jù)差分后保存的數(shù)據(jù);為了保證數(shù)據(jù)的有效性,同一簇內(nèi)將對(duì)不同的節(jié)點(diǎn)進(jìn)行比較分析,同時(shí)消除數(shù)據(jù)的冗余;這時(shí)再將所獲得的數(shù)據(jù)yn進(jìn)行編碼,同時(shí)根據(jù)yn所產(chǎn)生的數(shù)據(jù)進(jìn)行Huffman編碼,并確定該值以確定編碼長(zhǎng)度。
圖3 差分器數(shù)據(jù)模型
此時(shí)為單個(gè)節(jié)點(diǎn)的數(shù)據(jù)差分,由于多個(gè)節(jié)點(diǎn)具有多個(gè)傳感器可以采集多個(gè)數(shù)據(jù),此文將根據(jù)LEACH分層協(xié)議[15],普通的節(jié)點(diǎn)將數(shù)據(jù)傳輸給簇頭,簇頭將數(shù)據(jù)收集后傳送給網(wǎng)關(guān),最后在傳給服務(wù)器。節(jié)點(diǎn)將采集的數(shù)據(jù)轉(zhuǎn)換在矩陣中進(jìn)行存儲(chǔ),初始數(shù)據(jù)都為H0(為了方便處理數(shù)據(jù)已經(jīng)在服務(wù)器接收到數(shù)據(jù)應(yīng)為同等大小矩陣,簇內(nèi)低于規(guī)定的矩陣的列數(shù)采用零補(bǔ)充,大于列數(shù)的簇將舍棄簇內(nèi)數(shù)據(jù)差異性很大的節(jié)點(diǎn))。當(dāng)所有節(jié)點(diǎn)部署完畢后并正常工作,第i個(gè)節(jié)點(diǎn)初次開(kāi)始采集的數(shù)據(jù)xi={xi1,xi2,xi3,,,xin}并存儲(chǔ)在內(nèi)部的存儲(chǔ)器中并傳遞給簇頭,同時(shí)將一個(gè)簇內(nèi)所有節(jié)點(diǎn)采集的數(shù)據(jù)直接傳遞給簇頭,并在簇頭中以矩陣H1方式存儲(chǔ),并進(jìn)行編碼傳遞給網(wǎng)關(guān);此時(shí),每個(gè)節(jié)點(diǎn)都有了初始的采集數(shù)據(jù),而后每一次采集的數(shù)據(jù)通過(guò)與前一時(shí)刻采集的數(shù)據(jù)進(jìn)行差分(式2),單個(gè)節(jié)點(diǎn)差分后的數(shù)據(jù)為yi(n),同時(shí)簇內(nèi)有多個(gè)節(jié)點(diǎn),并將保存數(shù)據(jù)存儲(chǔ)為Hn。為了保證數(shù)據(jù)有準(zhǔn)確性和數(shù)據(jù)壓縮效率高,并在此設(shè)定一個(gè)標(biāo)準(zhǔn)的高斯分布(α=0.05)作為數(shù)據(jù)置信區(qū)間的閾值矩陣為HT(圖4),并以此判斷差分后的數(shù)據(jù)是否在閾值范圍內(nèi);當(dāng)yi(n)的差值大于閾值,則此時(shí)刻節(jié)點(diǎn)判斷差值大于閾值,節(jié)點(diǎn)將重新裝載數(shù)據(jù)xi,同時(shí)節(jié)點(diǎn)將數(shù)據(jù)傳遞給簇頭,并重新載入新的節(jié)點(diǎn)數(shù)據(jù)給H1。
圖4 數(shù)據(jù)的存儲(chǔ)
而此時(shí)的Hn是在某個(gè)時(shí)刻在一個(gè)簇內(nèi)不同的節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)并具有一定的空間性,通過(guò)于上一時(shí)刻的數(shù)據(jù)差分后,簇頭存儲(chǔ)的數(shù)據(jù)可以根據(jù)空間性,將矩陣中的數(shù)據(jù)大部分轉(zhuǎn)換成0,但并不是所有的差分后數(shù)據(jù)都是0,再次之后對(duì)簇頭的數(shù)據(jù)進(jìn)行數(shù)據(jù)壓縮,這樣將大量減少了簇頭的數(shù)據(jù)量,所以將采用時(shí)間和空間相結(jié)合對(duì)數(shù)據(jù)進(jìn)行處理。
如果基于靜態(tài)Huffman編碼則需要對(duì)字符需要兩次掃描,而動(dòng)態(tài)Huffman編碼是不需要事先構(gòu)造哈夫曼樹(shù)和輸入掃描符號(hào)流;而是一邊進(jìn)行編碼,同時(shí)開(kāi)始構(gòu)造哈夫曼樹(shù);這樣可以減少處理器消耗的能量和時(shí)間。
當(dāng)初始化編碼數(shù)時(shí),由于只能對(duì)數(shù)據(jù)流進(jìn)行一次掃描,所以不能預(yù)先知道每一個(gè)符號(hào)的出現(xiàn)次數(shù)和頻率。為了對(duì)所有符號(hào)一致對(duì)待,編碼樹(shù)的初始狀態(tài)只包含一個(gè)葉節(jié)點(diǎn),包含符號(hào) NYT(Not Yet Transmitted,尚未傳送),權(quán)重值為 0。NYT 是一個(gè)逸出碼(escape code),不同于任何一個(gè)將要傳送的符號(hào)。當(dāng)有一個(gè)尚未包含在編碼樹(shù)中的符號(hào)需要被編碼時(shí),系統(tǒng)就輸出 NYT 編碼,然后跟著符號(hào)的原始表達(dá)并重新給予新的編碼樹(shù)。
當(dāng)輸入一個(gè)字符時(shí),將會(huì)構(gòu)造一個(gè)空的新子樹(shù),子樹(shù)包含NYT符號(hào)和新符號(hào)的兩個(gè)節(jié)點(diǎn),并用新的節(jié)點(diǎn)取代舊的NYT節(jié)點(diǎn)在子樹(shù)的位置(最初的NYT權(quán)重為0),將舊的NYT取代后,新符號(hào)節(jié)點(diǎn)的葉節(jié)點(diǎn)的權(quán)重為1,同時(shí)將試圖對(duì)該父結(jié)點(diǎn)執(zhí)行權(quán)重加一的操作。同時(shí),每讀取一個(gè)字符,首先檢查字符是否已經(jīng)在編碼樹(shù)中;如果不在,則先對(duì)空葉結(jié)點(diǎn)進(jìn)行編碼,再生成一顆子樹(shù),其右分支結(jié)點(diǎn)為剛的讀入的字符,其左分支結(jié)點(diǎn)為新的空葉結(jié)點(diǎn),并用這個(gè)子樹(shù)代替原來(lái)的空葉結(jié)點(diǎn);如果在已經(jīng)編碼的樹(shù)中,則以靜態(tài)哈夫曼編碼的方式進(jìn)行編碼,如圖5所示。
圖5 動(dòng)態(tài)Huffman編碼過(guò)程
當(dāng)節(jié)點(diǎn)采集好的數(shù)據(jù)在自身的內(nèi)存中具有一定的時(shí)效性,通過(guò)該內(nèi)存存儲(chǔ)初始的數(shù)據(jù)作為一個(gè)基準(zhǔn),初始時(shí)刻的數(shù)據(jù)直接基于動(dòng)態(tài)Huffman編碼進(jìn)行傳輸,此后的數(shù)據(jù)基于前一時(shí)刻的數(shù)據(jù)先進(jìn)行差分,并存儲(chǔ)在矩陣中Hn。對(duì)差分后的數(shù)據(jù)設(shè)定一個(gè)閾值HT,當(dāng)進(jìn)行差分后的數(shù)據(jù)小于閾值,則節(jié)點(diǎn)直接將差分器差分的差值進(jìn)行編碼,如果節(jié)點(diǎn)的某一個(gè)傳感器差分的值大于閾值,則節(jié)點(diǎn)將此時(shí)的數(shù)據(jù)直接編碼進(jìn)行傳輸,并以此數(shù)據(jù)為基準(zhǔn)進(jìn)行差分,如圖6所示。
圖6 數(shù)據(jù)處理過(guò)程
為了保證數(shù)據(jù)傳輸?shù)臎](méi)有太多的冗余的數(shù)據(jù),每一次數(shù)據(jù)都要進(jìn)行差分閾值的比較,而此時(shí)采用的閾值使用高斯分布置信區(qū)間驗(yàn)證是否能正常通過(guò)Hn進(jìn)行動(dòng)態(tài)Huffman編碼。對(duì)該差分后的數(shù)據(jù)進(jìn)行高斯分布X~N(0,1)的檢驗(yàn)思想方式,假設(shè)差分后的Hn能通過(guò)置信區(qū)間,則將數(shù)據(jù)傳輸給編碼器進(jìn)行動(dòng)態(tài)Huffman編碼;反之,差分后Hn通過(guò)不了置信區(qū)間,此時(shí),節(jié)點(diǎn)將采集到的原始數(shù)據(jù)進(jìn)行動(dòng)態(tài)Huffman編碼,并將此時(shí)刻采集到的源數(shù)據(jù)壓縮后發(fā)送給簇頭,同時(shí)簇頭收到數(shù)據(jù)后,也將采用動(dòng)態(tài)Huffman編碼進(jìn)行傳輸。然而置信區(qū)間往往可以由某參數(shù)的顯著性水平為α(α=0.05)的檢驗(yàn),得到該參數(shù)的置信度為1-α的置信區(qū)間[-2,2],當(dāng)在置信區(qū)間內(nèi)是,反之。顯著性水平α的均值μ的雙側(cè)檢驗(yàn)出現(xiàn)問(wèn)題,則高斯分布標(biāo)準(zhǔn)化公式:
(3)
對(duì)數(shù)據(jù)進(jìn)行差分后減少了大量的數(shù)據(jù),在同一區(qū)域內(nèi)分析數(shù)據(jù)的可靠性之后,并通過(guò)動(dòng)態(tài)的Huffman編碼對(duì)矩陣Hn進(jìn)行數(shù)據(jù)壓縮,由于每一次的數(shù)據(jù)都是未知的,通過(guò)Huffman編碼的動(dòng)態(tài)原則,先編碼在調(diào)整編碼數(shù)進(jìn)行壓縮。動(dòng)態(tài)的Huffman編碼以默認(rèn)的概率進(jìn)行編碼,并不斷更新元素的概率,從而可以達(dá)到高概率出現(xiàn)的分配給小規(guī)模的數(shù)據(jù)流位。
動(dòng)態(tài)Huffman編碼是基于動(dòng)態(tài)變化的哈夫曼樹(shù),也就是說(shuō),對(duì)第t+1個(gè)字符編碼是根據(jù)原始數(shù)據(jù)中前t個(gè)字符得到的哈夫曼樹(shù)來(lái)進(jìn)行的。壓縮和解壓子程序具有相同的初始化樹(shù),每處理完一個(gè)字符,壓縮和解壓方使用相同的算法修改哈夫曼樹(shù),因而該方法不需要為解壓而保存樹(shù)的有關(guān)信息。壓縮和解壓一個(gè)字符所需的時(shí)間與該字符的編碼長(zhǎng)度成正比,因而該過(guò)程可以實(shí)時(shí)進(jìn)行。
通過(guò)Matlab對(duì)數(shù)據(jù)壓縮進(jìn)行處理,為了讓實(shí)驗(yàn)效果更明顯,將采用LEACH協(xié)議對(duì)節(jié)點(diǎn)采集的數(shù)據(jù)進(jìn)行壓縮,同時(shí)引入SINK中繼站盡量節(jié)省節(jié)點(diǎn)的能量。與原有不采用壓縮對(duì)比,能量消耗相對(duì)減少、數(shù)據(jù)傳輸效率和網(wǎng)絡(luò)壽命都相對(duì)提高,同時(shí)也保證了數(shù)據(jù)的準(zhǔn)確性;并主要分析了WSNs網(wǎng)絡(luò)的數(shù)據(jù)傳輸量,對(duì)比網(wǎng)絡(luò)生命周期等數(shù)據(jù);將300個(gè)節(jié)點(diǎn)隨機(jī)部署在400 m*400 m的正方形內(nèi),BS的坐標(biāo)為(0,0)。在仿真中,本節(jié)通過(guò)大量的實(shí)驗(yàn)比較同一領(lǐng)域的壓縮算法;主要分析WSNs網(wǎng)絡(luò)壽命和數(shù)據(jù)傳輸。WSNs主要參數(shù)如表1所示。
通過(guò)實(shí)驗(yàn)對(duì)比分析,當(dāng)節(jié)點(diǎn)采集數(shù)據(jù)后進(jìn)行Huffman、動(dòng)態(tài)Huffman、差分動(dòng)態(tài)Huffman三種壓縮算法,三種無(wú)損壓縮算法都對(duì)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行了壓縮,然而前兩種算法的壓縮效果并未達(dá)到理想效果,通過(guò)圖7可以看出,差分動(dòng)態(tài)Huffman算法在壓縮前對(duì)數(shù)據(jù)進(jìn)行了相對(duì)應(yīng)的融合,在減少了數(shù)據(jù)的傳輸同時(shí)反而增大了數(shù)據(jù)量傳輸,明顯可以看出Huffman編碼的壓縮效果低于差分動(dòng)態(tài)Huffman無(wú)損壓縮。
圖7 三種算法的數(shù)據(jù)傳輸
圖8呈現(xiàn)了三種算法的能量的消耗,當(dāng)節(jié)點(diǎn)與簇頭之間的距離較遠(yuǎn)時(shí),節(jié)點(diǎn)在數(shù)據(jù)采集后進(jìn)行數(shù)據(jù)壓縮消耗的能量低于數(shù)據(jù)傳輸?shù)哪芰?,?dāng)節(jié)點(diǎn)采集數(shù)據(jù)開(kāi)始時(shí),節(jié)點(diǎn)第一次的數(shù)據(jù)將直接進(jìn)行動(dòng)態(tài)Huffman編碼傳輸,此后節(jié)點(diǎn)通過(guò)前一次時(shí)刻的數(shù)據(jù)與現(xiàn)采集的數(shù)據(jù)進(jìn)行差分,并將大量的冗余數(shù)據(jù)抵消,只用將差值后的數(shù)據(jù)進(jìn)行動(dòng)態(tài)Huffman編碼,再將編碼后的數(shù)據(jù)進(jìn)行傳輸。數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量越少,則網(wǎng)絡(luò)消耗的能量就越少。此時(shí)整個(gè)系統(tǒng)中的能量消耗減少,則總體的剩余能量將相應(yīng)的減少,圖9表示為三種壓縮算法的剩余能量對(duì)比。圖10顯示,當(dāng)采用差分Huffman算法時(shí)可以大大減少節(jié)點(diǎn)的死亡率并保證了節(jié)點(diǎn)的相對(duì)穩(wěn)定性,同時(shí)也提高了數(shù)據(jù)的壓縮率,這樣將會(huì)讓整個(gè)網(wǎng)絡(luò)更好地監(jiān)控該區(qū)域的環(huán)境。
圖8 三種算法的網(wǎng)絡(luò)能量消耗對(duì)比
圖9 三種算法的網(wǎng)絡(luò)的剩余能量
圖10 三種算法節(jié)點(diǎn)的存活數(shù)
在仿真中,為了保證該方案可行性,采用了節(jié)點(diǎn)數(shù)為100/200/300/400/500個(gè)節(jié)點(diǎn)部署進(jìn)行了數(shù)據(jù)壓縮比的分析。通過(guò)壓縮算法的訓(xùn)練,當(dāng)節(jié)點(diǎn)數(shù)越多時(shí),三種算法的壓縮率都會(huì)提高,而差分Huffman算法的壓縮也隨之提高。壓縮率公式為:
(4)
表2 三種算法的壓縮率對(duì)比 %
通過(guò)表2的數(shù)據(jù)壓縮比率統(tǒng)計(jì)當(dāng)節(jié)點(diǎn)數(shù)增多時(shí),差分動(dòng)態(tài)Huffman算法的壓縮比率是不斷增大,傳輸?shù)臄?shù)據(jù)量相對(duì)是不斷減小。當(dāng)直接采用Huffman編碼時(shí)當(dāng)節(jié)點(diǎn)數(shù)增加到某一個(gè)值時(shí)節(jié)點(diǎn)的壓縮率將會(huì)保持并不在減小,而差分動(dòng)態(tài)Huffman算法確保了節(jié)點(diǎn)的數(shù)據(jù)壓縮率、數(shù)據(jù)的無(wú)損性、數(shù)據(jù)的準(zhǔn)確性、節(jié)點(diǎn)的節(jié)能性,同時(shí)保證了網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定性。
本文主要針對(duì)無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)壓縮算法進(jìn)行研究,采用差分器再對(duì)數(shù)據(jù)進(jìn)行動(dòng)態(tài)Huffman編碼。當(dāng)數(shù)據(jù)進(jìn)行減法時(shí)將大量的相同數(shù)據(jù)抵消,只用將差值編碼進(jìn)行傳輸,極大的節(jié)省了數(shù)據(jù)傳輸?shù)哪芰?,并將?shù)據(jù)傳輸?shù)臏?zhǔn)確性也得到了提高,也減少了簇內(nèi)成員的通信開(kāi)銷(xiāo),提升了網(wǎng)絡(luò)的生命周期。然而本文的不足在于沒(méi)考慮到SINK的運(yùn)行速度和路徑規(guī)劃。后期將會(huì)結(jié)合SINK與數(shù)據(jù)壓縮,并提高網(wǎng)絡(luò)生命周期。