[发明专利]分级统计-概率计算式查找算法无效
申请号: | 200610032135.1 | 申请日: | 2006-08-25 |
公开(公告)号: | CN101131692A | 公开(公告)日: | 2008-02-27 |
发明(设计)人: | 陈启星 | 申请(专利权)人: | 陈启星 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 410005湖南省长*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分级 统计 概率 算式 查找 算法 | ||
技术领域:本发明属于计算机算法和数据结构领域。
背景技术:目前的查找算法中,高效率的查找包括折半查找、斐波那契查找、插值查找,这都是全程查找;哈希查找是计算式查找,但是有所谓“冲突”现象,所以没有普适性。目前没有一种查找算法能够实现对任意有序表的可靠的计算式查找。
本发明的目的是:提出一种计算式的查找算法,叫“分级统计-概率计算式查找”算法,该算法具有3个特征:①、时间复杂度为O(1),对于非常长的光滑分布的有序表,通常只要3次以内查找即可命中;②、附加空间不大,复杂度为O(1),附加空间为一个记录类型(包含4-5个数据项)的一唯数组,约数百个数据元素;③、可以查找任意方式排序的表。
发明申请内容
算法的总思路是:对于某个分布(最好是光滑分布)进行排序后形成了有序的数组A(1)~A(n),对其查找分为预处理阶段和查找阶段,预处理阶段为将其分布总区间等分为m个子区间(有m+1个级别),每个子区间都是一个顶部为斜边的直角梯形(以下简称梯形),梯形面积的大小反映了“元素数目”的多少;然后构造一个记录数组B(0)~B(m)用于登记各级梯形的属性(包括起始值、级内元素数目、级前元素数目、级概率密度、概率斜率)。首先是计算各级的分界点即“起始值”,再用“分级映射”逐个计算A(1)~A(n)各元素所属的级别并进行统计,得到各级的“级内元素数目”,然后分别计算出“级前元素数目”、“级概率密度”、“概率斜率”,都登记到记录数组B中,完成预处理工作。查找阶段为对任一个待查找数XY,可以通过分级映射计算确定XY所在子区间“r级”,从而确定“级前元素数目”,又通过对梯形子区间进行概率预测计算和概率修正计算,确定XY在子区间的“级内精预测量”,与“级前元素数目”相加得到“精预测单元”。
附图说明:
图1——梯形分布的概率计算式查找算法示意图。X1——最小值;Xn——最大值;Xz——X1与Xn的中间值;Xa——X1与Xz的中间值;Xb——Xz与Xn的中间值;XY——待查找数;和文中保持一致,PX1、PXa、PXz、PXb、PXn、PXY分别是X1、Xa、Xz、Xb、Xn、XY所对应的概率。
图2——任意光滑分布的分级统计-概率计算式查找算法示意图。B(0)、B(1)、B(2)、B(r-1)、B(r)、B(r+1)、B(n-1)、B(n)、分别表示B(0).Xmin、B(1).Xmin、B(2).Xmin、B(r-1).Xmin、B(r).Xmin、B(r+1).Xmin、B(n-1).Xmin、B(n).Xmin、B(r+1).Xmin(这是由于图上写不下的关系);XY表示待查数。这些符号说明书、权利要求书中都通用。
实施例1:梯形分布的概率计算式查找算法
从分析一个按(图1)直角梯形概率分布的表入手,介绍“概率计算式查找”算法。
假定有一个由一唯数组A(1)~A(n)构成的有序表(升序),其各个单元所对应的数值为X1~Xn(可知X1为最小值,Xn为最大值),X1~Xn的概率分布呈线性(图1)。如果要查找XY(X1≤XY≤Xn)在(A(1)~A(n))哪个单元,就可以通过通过概率计算得到答案。
思路分析:
因为概率分布的面积对应着元素数目,求出了面积就是求出了元素数目。我们已知(图1)X1~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,而不是习惯的等于1,所以本文元素数目密度,就是概率密度。以下约定PX1、PXz、PXa、PXb、pxy分别为X1、Xz、Xa、Xb、XY处的概率密度,可以改写为“元素数目密度”。
1、由图1可知,要找到Sx的表达式,先要知道PX1、pxy(PX1为上底,pxy为下底,dX为高)这两个概率密度。为此,令Xz位于X1~Xn的中点。Xz的概率密度为
PXz:=n/(Xn-X1);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于陈启星,未经陈启星许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610032135.1/2.html,转载请声明来源钻瓜专利网。