【技术实现步骤摘要】
本专利技术属于计算机算法和数据结构领域。
技术介绍
目前的査找算法中,高效率的查找包括折半査找、斐波那契査找、插值査找, 这都是全程査找;哈希査找是计算式査找,但是有所谓冲突现象,所以没有普适性。目 前没有一种査找算法能够实现对任意有序表的可靠的计算式査找。本专利技术的目的是提出一种计算式的査找算法,叫分级统计-概率计算式査找算法, 该算法具有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级,从而确定级前元素数目,又通过对梯 形子区间进行概率预测计算和概率修正计 ...
【技术保护点】
一种分级统计-概率计算式查找算法,其特征是:对于某个分布(最好是光滑分布)进行排序后形成了有序的数组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*...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。