当前位置: 首页 > 专利查询>陈启星专利>正文

分级统计-概率计算式查找算法制造技术

技术编号:2833210 阅读:281 留言:0更新日期:2012-04-11 18:40
对于某个分布(最好是光滑分布)进行排序后形成了有序的数组A(1)~A(n),预处理阶段为将其分布总区间等分为m个子区间,每个子区间都是一个顶部为斜边的直角梯形,梯形面积的大小反映了“元素数目”的多少;然后构造一个记录数组B(0)~B(m)用于登记各级梯形的属性(包括起始值、级内元素数目、级前元素数目、级概率密度、概率斜率)。首先是计算各级的分界点即“起始值”,再用“分级映射”逐个计算A(1)~A(n)各元素所属的级别并进行统计,得到各级的“级内元素数目”,然后分别计算出“级前元素数目”、“级概率密度”、“概率斜率”,都登记到记录数组B中,完成预处理工作。查找阶段为对任一个待查找数XY,可以通过分级映射计算确定XY所在子区间“r级”,从而确定“级前元素数目”,又通过对梯形子区间进行概率预测计算和概率修正计算,确定XY在子区间的“级内精预测量”,与“级前元素数目”相加得到“精预测单元”。

【技术实现步骤摘要】

本专利技术属于计算机算法和数据结构领域。
技术介绍
目前的査找算法中,高效率的查找包括折半査找、斐波那契査找、插值査找, 这都是全程査找;哈希査找是计算式査找,但是有所谓冲突现象,所以没有普适性。目 前没有一种査找算法能够实现对任意有序表的可靠的计算式査找。本专利技术的目的是提出一种计算式的査找算法,叫分级统计-概率计算式査找算法, 该算法具有3个特征①、时间复杂度为O(l),对于非常长的光滑分布的有序表,通常只要 3次以内査找即可命中;②、附加空间不大,复杂度为O(l),附加空间为一个记录类型(包 含4-5个数据项)的一唯数组,约数百个数据元素;◎、可以査找任意方式排序的表。专利技术申请内容算法的总思路是对于某个分布(最好是光滑分布)进行排序后形成了有序的数组A(1) A(n),对其査找分为预处理阶段和査找阶段,预处理阶段为将其分布总区间等分为m个子区 间(有m+l个级别),每个子区间都是一个顶部为斜边的直角梯形(以下简称梯形),梯形 面积的大小反映了 元素数目的多少;然后构造一个记录数组B(0) B(m)用于登记各级梯 形的属性(包括起始值、级内元素数目、级前元素数目、级概率密度、概率斜率)。首先是计 算各级的分界点即起始值,再用分级映射逐个计算A(l) A(n)各元素所属的级别并进 行统计,得到各级的级内元素数目,然后分别计算出级前元素数目、级概率密度、 概率斜率,都登记到记录数组B中,完成预处理工作。査找阶段为对任一个待査找数XY, 可以通过分级映射计算确定XY所在子区间r级,从而确定级前元素数目,又通过对梯 形子区间进行概率预测计算和概率修正计算,确定XY在子区间的级内精预测量,与级 前元素数目相加得到精预测单元。 附图说明图1——梯形分布的概率计算式查找算法示意图。XI——最小值;Xn——最大值;XZ——Xl与Xn的中间值;Xa——Xl与Xz的中间值;Xb——Xz与Xn的中间值;XY— 一待査找数;和文中保持一致,PX1、 PXa、 PXz、 PXb、 PXn、 PXY分别是XI、 Xa、 Xz、 Xb、 Xn、 XY所对应的概率。图2——任意光滑分布的分级统计-概率计算式査找算法示意图。B(O)、 B(l)、 B(2)、 B(r-l)、 B(r)、 B(r+1)、 B(n-l)、 B(n)、分别表示B(O).Xmin、 B(l).Xmin、 B(2).Xmin、 B(r-l).Xmin、 B(r).Xmin、 B(r+l).Xmin、 B(n-l).Xmin、 B(n).Xmin、 B(r+l).Xmin (这 是由于图上写不下的关系);XY表示待査数。这些符号说明书、权利要求书中都通用。实施例l:梯形分布的概率计算式査找算法从分析一个按(图1)直角梯形概率分布的表入手,介绍概率计算式査找算法。假定有一个由一唯数组A(l) A(n)构成的有序表(升序),其各个单元所对应的数值为 Xl Xn (可知XI为最小值,Xn为最大值),Xl Xn的概率分布呈线性(图1)。如果 要查找XY (Xl《XY《Xn)在(A(l) A(n))哪个单元,就可以通过通过概率计算得到答案。思路分析因为概率分布的面积对应着元素数目,求出了面积就是求出了元素数目。我们已知(图 1) Xl Xn之间梯形面积Sn对应着n个数据(令Sn: -n),那么待査找数XY是处于第 几个单元呢?如果令X1 XY之间梯形面积是Sx ,那么比XY小的数据有Sx个。令 K:-round(Sx),从概率的角度说就可以确定,XY应该位于第K个单元,XY所对应的粗 预测单元应该为A(K)。当然,粗预测单元与待査数XY通常是有一定误差的,令粗预测单元与待 查数的误差为dX,并计算出dX所对应的面积dS,于是dK:-round(dS)就是修正距离。求粗预测单元的算法。为以下计算方便,本专利技术约定分布函数趋向+~时等于n, 而不是习惯的等于l,所以本文元素数目密度,就是概率密度。以下约定PX1、 PXz、 PXa、 PXb、 pxy分别为X1、 Xz、 Xa、 Xb、 XY处的概率密度,可以改写为元素数目密度。1、 由图1可知,要找到Sx的表达式,先要知道PX1、 pxy (PX1为上底,pxy为下底, dX为高)这两个概率密度。为此,令Xz位于Xl Xn的中点。Xz的概率密度为 PXz:=n/(Xn-Xl);2、 如果再求得斜率G,就可以得到PX1、 pxy 了。下面是求斜率G的思路之一。经统计,Xl Xz的元素数目为Ka,那么,Xl Xz的中点Xa的概率密度为 PXa:- Ka/(Xz-Xl);同样,统计Xz Xn的元素数目为Kb, Xz Xn的中点Xb的概率密度为 PXb:- Kb/(Xn-Xz); 所以梯形的斜率G为 G:=(PXb-PXa)/ (Xb-Xa)由于(Xn-Xz)Xz-Xl)-(Xb-Xa),以下统一令它们为TX,所以 G:- (Kb-Ka)/(TX*TX)3、 再通过G和PXz得到PXl、 pxy。PX1: =PXz-G*TX ; pxy: = PX1+G*(XY-X1);4、 确定Xl XY之间梯形面积Sx (即元素数目),Sx: = (PX1+pxy)* (XY-Xl)/2 ;5、 K:-round(Sx),从概率的角度说,A(K)为XY的粗预测单元,应该有A(K)XY;误差值为 dX:-XY-A(k)。求精预测单元的箅法有多种,本文提出以下三种。第一种算法,误差值折算成跨度的算法。计算修正面积ds,即xx xdx之间的面积dS,这里要特别注意到XX是一个动态值,在第一次修正时XX与XY是重叠的,以后 XX就不断的更新为XX+dX。 pxy、 pxx、 PXdX、分别为XY、 XX、 XX+dX处的概率。PXdX: = pxy; {赋初值,为进入循环作准备} pxx:= pxy {在第一次修正时pxx与pxy是重叠的}WHILE ABS网>KK*(1/ PXdX) THEN {说明1 }pxx: = PXdX ; {说明2 }PXdX: -PXdX + G*dX;dS: =( pxx + PXdX)* dX/2dK: =round(dS); K: =K+dK ;dX:-XY-A(K);(退出循环后,根据dx的大小,分别处理dx的三种情况〉IF dX=0 THEN意味着找到了 XY,在第K个单元。{第一种} ELSEIF ABS(dX)<3*(l/ PXdX) THEN顺序査找XY{第二种,当误差小于3个单元}ELSE折半査找XY{第三种,当误差在3 KK个单元} 说明1:修正次数从理论上说是不确定的,所以要用到循环处理,而且要考虑到退出循环的问题。我们应该在A(K)距XY小于KK (比如KK-7)个数组单元时退出循环'因为这 时用传统的査找算法(顺序査找或折半查找)更快。(1/ PXdX)是一个单元所对应的X跨度值,当误差距离为ABS(dX)《KK*(l/ PXdX),表示离目标XY仅KK个单元以内了,需要 退出循环了。说明2:计算修正面积dS, pxx为上底,PXdX为下底,dX为高。由于下一次计算 修正面积时,XX前进到了XX+dX,所以上底变成了 pxx: =PXdX ;同样的道本文档来自技高网...

【技术保护点】
一种分级统计-概率计算式查找算法,其特征是:对于某个分布(最好是光滑分布)进行排序后形成了有序的数组A(1)~A(n),对其查找分为预处理阶段和查找阶段,预处理阶段为将其分布总区间等分为m个子区间(有m+1个级别),每个子区间都是一个顶部为斜边的直角梯形(以下简称梯形),梯形面积的大小反映了“元素数目”的多少;然后构造一个记录数组B(O)~B(m)用于登记各级梯形的属性(包括起始值、级内元素数目、级前元素数目、级概率密度、概率斜率)。首先是计算各级的分界点即“起始值”,再用“分级映射”逐个计算A(1)~A(n)各元素所属的级别并进行统计,得到各级的“级内元素数目”,然后分别计算出“级前元素数目”、“级概率密度”、“概率斜率”,都登记到记录数组B中,完成预处理工作。查找阶段为对任一个待查找数XY,可以通过分级映射计算确定XY所在子区间“r级”(从而确定“级前元素数目”),又通过对梯形子区间进行概率预测计算和概率修正计算,确定XY在子区间的“级内精预测量”,与“级前元素数目”相加得到“精预测单元”。

【技术特征摘要】
1、一种分级统计-概率计算式查找算法,其特征是对于某个分布(最好是光滑分布)进行排序后形成了有序的数组A(1)~A(n),对其查找分为预处理阶段和查找阶段,预处理阶段为将其分布总区间等分为m个子区间(有m+1个级别),每个子区间都是一个顶部为斜边的直角梯形(以下简称梯形),梯形面积的大小反映了“元素数目”的多少;然后构造一个记录数组B(0)~B(m)用于登记各级梯形的属性(包括起始值、级内元素数目、级前元素数目、级概率密度、概率斜率)。首先是计算各级的分界点即“起始值”,再用“分级映射”逐个计算A(1)~A(n)各元素所属的级别并进行统计,得到各级的“级内元素数目”,然后分别计算出“级前元素数目”、“级概率密度”、“概率斜率”,都登记到记录数组B中,完成预处理工作。查找阶段为对任一个待查找数XY,可以通过分级映射计算确定XY所在子区间“r级”(从而确定“级前元素数目”),又通过对梯形子区间进行概率预测计算和概率修正计算,确定XY在子区间的“级内精预测量”,与“级前元素数目”相加得到“精预测单元”。2、 根据权利要求1所述的分级统计-概率计算式查找算法,其进一步的特征是构造一 个记录数组对各级的属性进行登记,分别登记各级的属性包括起始值、级概率密度、第r级概率斜率级内元素数目、级前元素数目。如建立一个记录数组B(0) B(m)作为分级处理的附加空间,B(r) (r=0 m)为第r级 的单元,它包含5个数据域(1)、定义B(r).Xmin为起始值,用于记录第r级数据的最 小值(实数型);(2)、定义B(r).Nbl为第r级的当前级元素数目(整数型);(3)、定义 B(r).Nb2为级前元素数目(整数型),为B(O像至B(r-l)级元素数目之和;(4)、定义B(r).px 为级概率密度;(5)、定义B(r).G为第r级概率斜率;如果要节省B(r).Nbl这个单元也可以,在每次计算时用B(r+l).Nb2-B(r).Nb2代替 B(r).Nbl即可,但是节省空间的代价是多花时间。3、 根据权利要求1所述的分级统计-概率计算式查找算法,其进一步的特征是将某个 光滑分布总区间等分为很多子区间,并通过分级映射逐个对元素进行分级,并统计整个 表在每个子区间的起始值、级内元素数目和级前元素数目;分级映射求各级的起始值将区间[X1, Xn均分为m个小区间(即m+l个级),定义TX为级跨度, <formula>formula see original document page 2</formula>建立一个针对B(r)的循环,通过B(r).Xmin^Xl+r111 TX将B(0) B(m)各级的起始值 逐一记录至B(r).Xmin。<formula>formula see original document page 2</formula>分级映射求各级的级内元素数目建立一个针对A(l) A(n)的循环,通过分级映射对A(j)进行分级计算,看A(j)属于 哪个级别。在遍历A(l) A(n)后,可以统计出B(0).Nbl B(m).Nbl。 FORj:-l TO n DO均布分级映射r:=trunc(m*(A(j)-Xl)/(Xn-Xl)) =trunc((A(j)-Xl)/TX)B(r).Nbl:- B(r).Nbl + l求各级的级前元素数目B(O).脂:- 0FOR r:=l TO m DO B(r).Nb2:= B(r-l).Nb2+B(r-l).固;4、 根据权利要求1所述的分级统计-概率计算式査找算法,其进一步的特征是通过级 内元素数目计算出级概率密度、第r级概率斜率和待查数位置概率密度;计算每个级别(在B(r).Xmin处)的概率密度B(r).px:FOR r:=l TO m-1 DO B(r).px: = (B(r-l).Nbl+B(r).Nbl)/(2*TX);B(O).px: = B(l).px-B(0).G承TX ;计算每个级别的概率斜率B(r).G:FORr:-l TO m-1 DO B(r).G: =(B(r).Nbl-B(r-l).Nbl)/ (TX*...

【专利技术属性】
技术研发人员:陈启星
申请(专利权)人:陈启星
类型:发明
国别省市:43[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1