1.一种基于压缩感知的无线传感器网络动态数据融合树方法,其特征在于,该方法包括以下步骤:
步骤1:初始化:设置节点集合Si←{},路径树集合Ti←{};
步骤2:将网络中的节点一维化Node{N(1),N(2),...,N(n)},其中N为节点标识,n为节点数目;
步骤3:根据以下公式,获得一个m*n的稀疏随机投影矩阵:
其中Φi,j为第i行j列的投影系数,参数s确定投影矩阵的稀疏度k,p为概率;当s=n/(lgn)时,O(klgn)次投影的重构精度等效于最大K系数算法,k为投影矩阵的稀疏度,n为网络的节点数;
矢量φi(1≤i≤m)中非零值所对应的节点即为参与第i次投影的点,将其加入源节点集Si={Si(1),Si(2),...,Si(logn)};
步骤4:在第一次投影(i=1)时,依据Dijkstra算法,求出各源节点形成最短路径树Ti={Ti(1),Ti(2),...,Ti(logn)};
步骤5:从第二次投影(i>=2)起,参与上次投影而本次投影不参与的节点,进行删除处理;没有参与上次投影而参与本次投影的节点,进行加入处理;
步骤6:节点采集数据后,按照生成的数据融合树进行传输。
2.如权利要求1所述的方法,其特征在于,在本方法中,在进行投影切换时,把每次投影过程看作一次路由选择,以相同概率选择部分节点参与投影,若每次参与投影的节点能形成最短路径树,就通过该最短路径树将参与投影节点的数据加权和传输到汇聚节点。
3.如权利要求1所述的方法,其特征在于,在步骤5中,投影切换时,删除节点的方法包括:
从原生成树中删除一个多播结点s的方法是:如果该节点是多播树中的叶结点,则直接删除s及与s相连的其他节点;若该节点是中间结点,删除s后,将s的所有子孙结点中的端结点组成一个集合Md,将删除了集合Md的子树记为Tt,采用如下算法将Md中的结点加入生成树:
1)初始化:计算Md中每一个结点到子树Tt的最短路径,记为T_DIS,并令集合Q为空;
2)在Md不为空的条件下,选择Md中到Tt距离最短或在原生成树中到接应结点距离最短(且接应结点在不中)的端结点min_Md,将min_Md和min_Md到生成树最小路径上所有的Steiner结点和min_Md在原生成树中所有的子孙结点一起加入生成树,从Md中删除所有己加入生成树的端点;若Md不为空转下一步,否则程序结束;
3)若x目前的接应结点与在原生成树中的接应结点不同,则在生成树中每加入一个接应结点u,判断其是否是原生成树中的结点;若不是,则将该结点加入Q;每在Q中加入一个结点,考察新加入结点到Md中每一结点v的距离,若该距离小于结点v到子树Tt的距离,则将该距离作为结点v到子树Tt的距离;转2)。
4.如权利要求1所述的方法,其特征在于,在步骤5中,投影切换时,加入节点的方法如下:
1)初始化:令k=1,从源点s开始,将单结点s作为T1;此时Tk=T1,集合M1=Mk={s}并将所有要加入的结点组成集合N,将N中每一个结点到s的距离作为结点到Tk的距离记为y_DIS[i];并令集合Q为空,令Mk中所有结点到集合Q的距离为无穷大;
2)静态计算最小代价多播生成树时,各端点加入的顺序:在Mk和N不为空的条件下,依次比较dist[k]与N到Tk的最短路径y_DIS_min;若dist[k]不大于y_DIS_min,则将相应的端点和该端点到生成树最小路径上所有的Steiner结点一起加入生成树(即该端点的路径结点),从Mk中删除该端点;比较N中每一个结点到每一个新加入结点的距离,若该距离小于y_DIS_min,则将该距离作为y_DIS_min;每加入一个结点,k的值加1,重复本步骤;若dist[k]大于y_DIS_min或Mk为空,则将y_DIS_min对应的端点y和y到z(z为y的接应结点)的路径上所有的Steiner结点一起加入生成树;若Mk不为空转下一步,否则程序结束;
3)生成树每加入一个结点u,判断新加入是否是原生成树中的结点,若不是,则将该结点加入Q;
4)每在Q中加入一个结点,考察新加入结点到Mk中每一结点v的距离,若该距离小于结点v到集合Q的距离,则将该距离作为结点v到集合Q的距离,并在从中选出到集合Q距离最近的结点;
5)设Mk中到集合Q距离最近的结点到集合的Q距离为D_t,比较y_DIS_min、dist[k]、D_t三者的大小,若dist[k]最小,则将相应的端点vk和该端点到生成树最小路径上所有的Steiner结点一起加入生成树(生成树每加入一个结点u,考察u到集合N中每一个元素i的距离,若小于y_DIS[i],则令y_DIS[i]为u到元素i的距离,令u为元素i的接应结点);从Mk中删除该端点(若Mk为空,程序结束);若vk就是Mk中到集合Q距离最近的结点,则从Mk中重新选择一个到集合Q距离最近的结点;令k=k+1直到vk∈Mk,重复步骤5);若D_t最小,则将Mk中到集合Q距离最近的端点和该端点到生成树最小路径上所有的Steiner结点一起加入生成树从Mk中删除该端点(若Mk为空,程序结束),转3);若y_DIS_min最小,将y_DIS_min对应的端点y和y到z(z为y的接应结点)的路径上所有的Steiner结点一起加入生成树和集合Q,转4)。