專利名稱:分級統(tǒng)計-概率計算式查找算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機算法和數(shù)據(jù)結(jié)構(gòu)領(lǐng)域。
背景技術(shù):
目前的査找算法中,高效率的查找包括折半査找、斐波那契査找、插值査找, 這都是全程査找;哈希査找是計算式査找,但是有所謂"沖突"現(xiàn)象,所以沒有普適性。目 前沒有一種査找算法能夠?qū)崿F(xiàn)對任意有序表的可靠的計算式査找。本發(fā)明的目的是提出一種計算式的査找算法,叫"分級統(tǒng)計-概率計算式査找"算法, 該算法具有3個特征①、時間復(fù)雜度為O(l),對于非常長的光滑分布的有序表,通常只要 3次以內(nèi)査找即可命中;②、附加空間不大,復(fù)雜度為O(l),附加空間為一個記錄類型(包 含4-5個數(shù)據(jù)項)的一唯數(shù)組,約數(shù)百個數(shù)據(jù)元素;◎、可以査找任意方式排序的表。發(fā)明申請內(nèi)容算法的總思路是對于某個分布(最好是光滑分布)進行排序后形成了有序的數(shù)組A(1) A(n),對其査找分為預(yù)處理階段和査找階段,預(yù)處理階段為將其分布總區(qū)間等分為m個子區(qū) 間(有m+l個級別),每個子區(qū)間都是一個頂部為斜邊的直角梯形(以下簡稱梯形),梯形 面積的大小反映了 "元素數(shù)目"的多少;然后構(gòu)造一個記錄數(shù)組B(0) B(m)用于登記各級梯 形的屬性(包括起始值、級內(nèi)元素數(shù)目、級前元素數(shù)目、級概率密度、概率斜率)。首先是計 算各級的分界點即"起始值",再用"分級映射"逐個計算A(l) A(n)各元素所屬的級別并進 行統(tǒng)計,得到各級的"級內(nèi)元素數(shù)目",然后分別計算出"級前元素數(shù)目"、"級概率密度"、 "概率斜率",都登記到記錄數(shù)組B中,完成預(yù)處理工作。査找階段為對任一個待査找數(shù)XY, 可以通過分級映射計算確定XY所在子區(qū)間"r級",從而確定"級前元素數(shù)目",又通過對梯 形子區(qū)間進行概率預(yù)測計算和概率修正計算,確定XY在子區(qū)間的"級內(nèi)精預(yù)測量",與"級 前元素數(shù)目"相加得到"精預(yù)測單元"。
圖1——梯形分布的概率計算式查找算法示意圖。XI——最小值;Xn——最大值;XZ——Xl與Xn的中間值;Xa——Xl與Xz的中間值;Xb——Xz與Xn的中間值;XY— 一待査找數(shù);和文中保持一致,PX1、 PXa、 PXz、 PXb、 PXn、 PXY分別是XI、 Xa、 Xz、 Xb、 Xn、 XY所對應(yīng)的概率。圖2——任意光滑分布的分級統(tǒng)計-概率計算式査找算法示意圖。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 (這 是由于圖上寫不下的關(guān)系);XY表示待査數(shù)。這些符號說明書、權(quán)利要求書中都通用。
實施例l:梯形分布的概率計算式査找算法從分析一個按(圖1)直角梯形概率分布的表入手,介紹"概率計算式査找"算法。假定有一個由一唯數(shù)組A(l) A(n)構(gòu)成的有序表(升序),其各個單元所對應(yīng)的數(shù)值為 Xl Xn (可知XI為最小值,Xn為最大值),Xl Xn的概率分布呈線性(圖1)。如果 要查找XY (Xl《XY《Xn)在(A(l) A(n))哪個單元,就可以通過通過概率計算得到答案。思路分析因為概率分布的面積對應(yīng)著元素數(shù)目,求出了面積就是求出了元素數(shù)目。我們已知(圖 1) Xl Xn之間梯形面積Sn對應(yīng)著n個數(shù)據(jù)(令Sn: -n),那么待査找數(shù)XY是處于第 幾個單元呢?如果令X1 XY之間梯形面積是Sx ,那么比XY小的數(shù)據(jù)有Sx個。令 K:-round(Sx),從概率的角度說就可以確定,XY應(yīng)該位于第K個單元,XY所對應(yīng)的"粗 預(yù)測單元"應(yīng)該為A(K)。當(dāng)然,"粗預(yù)測單元"與"待査數(shù)XY"通常是有一定誤差的,令"粗預(yù)測單元"與"待 查數(shù)"的誤差為dX,并計算出dX所對應(yīng)的面積dS,于是dK:-round(dS)就是修正距離。求"粗預(yù)測單元"的算法。為以下計算方便,本發(fā)明約定分布函數(shù)趨向+~時等于n, 而不是習(xí)慣的等于l,所以本文元素數(shù)目密度,就是概率密度。以下約定PX1、 PXz、 PXa、 PXb、 pxy分別為X1、 Xz、 Xa、 Xb、 XY處的概率密度,可以改寫為"元素數(shù)目密度"。1、 由圖1可知,要找到Sx的表達式,先要知道PX1、 pxy (PX1為上底,pxy為下底, dX為高)這兩個概率密度。為此,令Xz位于Xl Xn的中點。Xz的概率密度為 PXz:=n/(Xn-Xl);2、 如果再求得斜率G,就可以得到PX1、 pxy 了。下面是求斜率G的思路之一。經(jīng)統(tǒng)計,Xl Xz的元素數(shù)目為Ka,那么,Xl Xz的中點Xa的概率密度為 PXa:- Ka/(Xz-Xl);同樣,統(tǒng)計Xz Xn的元素數(shù)目為Kb, Xz Xn的中點Xb的概率密度為 PXb:- Kb/(Xn-Xz); 所以梯形的斜率G為 G:=(PXb-PXa)/ (Xb-Xa)由于(Xn-Xz)"Xz-Xl)-(Xb-Xa),以下統(tǒng)一令它們?yōu)門X,所以 G:- (Kb-Ka)/(TX*TX)3、 再通過G和PXz得到PXl、 pxy。PX1: =PXz-G*TX ; pxy: = PX1+G*(XY-X1);4、 確定Xl XY之間梯形面積Sx (即元素數(shù)目),Sx: = (PX1+pxy)* (XY-Xl)/2 ;5、 K:-round(Sx),從概率的角度說,A(K)為XY的粗預(yù)測單元,應(yīng)該有A(K)"XY;誤差值為 dX:-XY-A(k)。求"精預(yù)測單元"的箅法有多種,本文提出以下三種。第一種算法,誤差值折算成跨度的算法。計算"修正面積ds",即xx xdx之間的面積dS,這里要特別注意到XX是一個動態(tài)值,在第一次修正時XX與XY是重疊的,以后 XX就不斷的更新為XX+dX。
pxy、 pxx、 PXdX、分別為XY、 XX、 XX+dX處的概率。PXdX: = pxy; {賦初值,為進入循環(huán)作準(zhǔn)備} pxx:= pxy {在第一次修正時pxx與pxy是重疊的}WHILE ABS網(wǎng)>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);(退出循環(huán)后,根據(jù)dx的大小,分別處理dx的三種情況〉IF dX=0 THEN意味著找到了 XY,在第K個單元。{第一種} ELSEIF ABS(dX)<3*(l/ PXdX) THEN順序査找XY{第二種,當(dāng)誤差小于3個單元}ELSE折半査找XY
{第三種,當(dāng)誤差在3 KK個單元} 說明1:修正次數(shù)從理論上說是不確定的,所以要用到循環(huán)處理,而且要考慮到退出循環(huán)的問題。我們應(yīng)該在A(K)距XY小于KK (比如KK-7)個數(shù)組單元時退出循環(huán)'因為這 時用傳統(tǒng)的査找算法(順序査找或折半查找)更快。(1/ PXdX)是一個單元所對應(yīng)的X跨度值,當(dāng)誤差距離為ABS(dX)《KK*(l/ PXdX),表示離目標(biāo)XY僅KK個單元以內(nèi)了,需要 退出循環(huán)了。說明2:計算"修正面積dS", pxx為上底,PXdX為下底,dX為高。由于下一次計算 "修正面積"時,XX前進到了XX+dX,所以上底變成了 pxx: =PXdX ;同樣的道理,下 底變成了 PXdX: = PXdX + G*dX。第二種算法,調(diào)整輸入值的算法。將求粗預(yù)測單元A(k)和求精預(yù)測單元合并到同一算 法中。XX:-XY; {為編程計,將待査找數(shù)另存為XXi pxx: = PX1+G*(XX-X1); WHILE ABS(dX) >KK*(1/ pxx)THEN {理由同說明1 }Sx= (PX1+pxx)*(XX-Xl)/2K:-round(Sx) ; { K為XX的所在單元號}dX:=XY-A(K);dK:-round(dX);XX:=XX+dX ;pxx: = PX1+G*(XX-X1); 第三種算法,在置信區(qū)間內(nèi)折半査找。實際上,本文并沒有證明前兩種算法能夠絕對可靠地 確定(找到或者宣布沒有)XY,但是折半查找是能夠絕對可靠地確定XY的。經(jīng)過計算得到 粗預(yù)測單元為A(K),經(jīng)過dX修正后得到修正面積為dS, dK: = round(dS), dK為修正 距離,A(K+dK)應(yīng)該就是A(l) A(n)中最可能等于XY的"期望單元",如果將修正距離 擴大一倍,XY在區(qū)間A(K) A(K+2承dK)中的置信度應(yīng)該是很高的,所以比較A(K+2*dK)
與XY,如果XY在A(K) A(K+2*dK)范圍內(nèi),就使用折半査找法,如果XY在A(K) A(K+2*dK)范圍外,就再將范圍調(diào)整到A(K+2*dK) A(K+4*dK)。實施例2:任意光滑分布的分級統(tǒng)計-概率計算式査找算法實施例1僅解決了梯形概率分布的概率計算式査找的問題,而對于任意光滑分布怎么辦?思路分析對于任意光滑分布的表,容易想到,可以將總區(qū)間[Xl,Xn ]分為m個子區(qū)間,使得每 個子區(qū)間的概率分布可按梯形概率分布處理。圖2中的光滑分布被分成了 m個小區(qū)間,每個小區(qū)間都近似于一個梯形面積,對于梯形 分布,上一節(jié)已經(jīng)提出了 "概率式査找"的解決方案,本節(jié)關(guān)鍵要解決"分級算法"的問題, 算法的要求是對于一個待査找數(shù)XY,無須經(jīng)過比較,而是直接算出XY所在的級,然后再 在該級采用概率式査找,計算出XY所在的單元。假定已經(jīng)存在一個有序的數(shù)組A(l) A(n),最小值A(chǔ)(1卜X1,最大值A(chǔ)(n)-Xn,分級算 法包括兩大階段。第一階段預(yù)處理階段。目的是對數(shù)組A(l) A(n)進行"分級映射"計算,并對各級的 屬性進行計算和登記,屬性包括對各級中的起始值、元素數(shù)目、級概率密度(即"第r級起 始值概率密度")、概率斜率等。l-①、構(gòu)造一個記錄數(shù)組對各級的屬性進行登記,分別登記各級的屬性包括"起始值"、 "級概率密度"、"第r級概率斜率""級內(nèi)元素數(shù)目"、"級前元素數(shù)目"。如建立一個記錄數(shù)組B(0) B(m)作為分級處理的附加空間,B(r) (r=0 m)為第r級 的單元,它包含5個數(shù)據(jù)域(1)、定義B(r).Xmin為"起始值",用于記錄第r級數(shù)據(jù)的最 小值(實數(shù)型);(2)、定義B(r).Nbl為第r級的"當(dāng)前級元素數(shù)目"(整數(shù)型);(3)、定義 B(r).Nb2為"級前元素數(shù)目"(整型),為B(O)級至B(r-l)級元素數(shù)目之和;(4)、定義B(r).px 為"級概率密度";(5)、定義B(r).G為"第r級概率斜率"。如果要節(jié)省B(r).Nbl這個單元也可以,在每次計算時用B(r+l).Nb2-B(r).Nb2代替 B(r).Nbl即可,但是節(jié)省空間的代價是多花時間。將某個光滑分布總區(qū)間等分為很多子區(qū)間,并通過"分級映射"逐個對元素進行分級, 并統(tǒng)計整個表在每個子區(qū)間的"起始值"、"級內(nèi)元素數(shù)目"和"級前元素數(shù)目";l-②、將區(qū)間[X1, Xn]均分為m個小區(qū)間(即m+l個"級"),定義TX為"級跨 度",TX: =(Xn-Xl)/m;建立一個針對B(r)的循環(huán),通過下面B(r).Xmin:-Xl+產(chǎn)TX式,將B(0) B(m)各級 的起始值逐一記錄至B(r).Xmin。FOR r:=0 TO m DO B(r).Xmin:=Xl+r* TX1- ◎、移植"分級排序""'的算法,得到"分級統(tǒng)計"的算法。建立一個針對A(l) A(n) 的循環(huán),通過"分級映射"對A(j)進行分級計算,看A(j)屬于哪個級別。在遍歷A(l) A(n) 后,可以統(tǒng)計出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 + l1~ 、再算出B(0).Nb2 B(m).Nb2,即每個"級前元素數(shù)目"。 B(0).Nb2:= 0FOR r:=l TO m DO B(r).翻:- B(r響l).廳+B(r-l).Nbl ;通過"級內(nèi)元素數(shù)目"計算出"級概率密度"、"第r級概率斜率"和"待査數(shù)位置概 率密度";1~ 、計算每個級別(在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(0).px要另外計算,而B(m).px則不需要。1~ 、計算每個級別的概率斜率B(r).G,容易看出FOR r:=l TO m-1 DO B(r).G: =(B(r).Nbl-B(r-l).Nbl)/ (TX*TX);B(O).G: = B(1).G ; {兩者應(yīng)該近似相等}l"^)、 B(O).px: = B(l).px-B(0).G* TX ;第二階段査找階段,分四個子階段。令待査數(shù)為XY,2- ①、分級査找子階段。通過r:-trunc(XY-Xl)/TX)式,"分級映射"計算直接找到 XY所在的級別r,2-②、概率計算子階段,通過利用待查找數(shù)在所屬的級別r的"級概率密度"、"第r
級概率斜率"和"待査數(shù)位置概率密度pxy",進行面積計算,得到"待査數(shù)"與"起始值" 之間所夾概率分布面積,這就是"級內(nèi)粗預(yù)測量",將"級內(nèi)粗預(yù)測量"與"級前元素數(shù)目" 相加得到"粗預(yù)測單元"。定義XY處的概率密度為pxypxy: = B(r).px+B(r).G* (XY- B(r).Xmin);2~@、 B(r).Xmin XY的面積(即元素數(shù)目)為Sx,稱"元素數(shù)目概率"。 Sx: = (B(r).px +pxy)* (XY-B(r).Xmin)/2 ; 2-④、K: = B(r).Nb2+round(Sx);XY的所在粗預(yù)測單元為A(K),為"級前元素數(shù)目"+ "元素數(shù)目概率"。誤差修正子階段。在計算"粗預(yù)測單元A(K)"與"待査數(shù)XY"的誤差值dX以后,計算出dX所對應(yīng)的梯形面積dS,定義該梯形的上底為pxx,下底為PXdX,高為dX。這梯形就是"修正概率值",用"修正概率值"對"級內(nèi)粗預(yù)測量"進行修正后,得到"級內(nèi)精預(yù) 測量",與"級前元素數(shù)目"相加得到"精預(yù)測單元"。2~@、 PXdX: - pxy ;pxx:= pxy {在第一次修正時pxx與pxy是重疊的}WHILE ABS網(wǎng)>KK*(1/ PXdX) THENpxx: = PXdX ;PXdX: =PXdX + G*dX;dS: =( pxx + PXdX)* dX/2dK: = round,; K: =K+dK ;dX:-XY-A(K);確定目標(biāo)階段,{分別處理dX的三種情況}IFdX-OTHEN意味著找到了XY,在第K個單元。{第一種情況} ELSEIF ABS(dX)<3*(l/ PXdX) THEN順序査找XY{第二種情況,當(dāng)誤差小于3
個單元}ELSE折半査找XY
{第三種情況,當(dāng)誤差在3 KK個單元} 影響査找的時間的因數(shù)分析查找時間由三部分構(gòu)成級別計算+級內(nèi)粗預(yù)測單元計算+修正計算。級別計算和粗預(yù)測 單元計算是必需的,而修正計算對査找時間影響最大,耗時主要取決于修正計算次數(shù)。那么, 計算誤差越小則修正計算次數(shù)越少。計算誤差由哪里來的呢?①、級別計算后得到"級前元 素數(shù)目",這是統(tǒng)計數(shù),不會發(fā)生錯誤。②、級內(nèi)粗預(yù)測單元計算,無論是計算粗預(yù)測單元 還是計算修正量,都是根據(jù)概率計算得到的,可能出現(xiàn)誤差,影響命中率的關(guān)鍵是子區(qū)間梯 形的質(zhì)量,梯形頂部越直,則概率計算越符合實際情況,命中率就越高,所以級內(nèi)粗預(yù)測單 元計算命中率取決于兩個因數(shù), 一個是査找表本身的平緩性,待査找數(shù)XY處于平緩區(qū)間則 命中率高,另一個就是分級數(shù)m, m越大則子區(qū)間梯形頂部越直。所以分級數(shù)m與査找時間是一對矛盾,m越大則子區(qū)間梯形越好,更容易命中査找目 標(biāo);而m過大會使得空間復(fù)雜度過大。分級數(shù)m到底多大為好呢?可以在預(yù)處理階段增加 一個判斷m合理性的環(huán)節(jié)。當(dāng)B(r).G相對于B(r-l).G變化太大時,表示分級級數(shù)不夠。令 D作為分級合理性評估值,循環(huán)比較,只要有IB(r).G-B(r-1).G|>D情況出現(xiàn),就將m擴 大一倍,只要使m處于一個合理值,就可以使得修正計算在兩次以內(nèi)即可命中目標(biāo)。 實施例3:分級定位排序和分級定位査找算法 包括4個階段① 、分級排序階段。已經(jīng)存在一個數(shù)組X(j)(j-O, 1,, n)等待排序,其中max和 min分別為最大值和最小值。為此,構(gòu)造一個數(shù)組鏈表C(r)作為分檔數(shù)組,分檔數(shù)(r =0, 1,, m), C(r)包括一個指針域C(r) A.iink用來鏈接X(j)中屬于第r級的單元、 一個整數(shù) 域C(r) A.Nbl用來記錄第r級的級內(nèi)元素數(shù)目。逐個對X(j)用分級映射 r:=trunc(m*(x(j)-min)/(max-min))進行分級,并鏈接到對應(yīng)的級別之中。在對X(j)遍歷一 次后,C(r) A.iink鏈接了X(j)中屬于第r級的各個單元,C(r) A.Nbl記錄了第r級的級內(nèi)元 素數(shù)目。② 、定位排序階段。包括兩個工作 一個是逐級對C(r)A.iink鏈接的數(shù)據(jù)進行級內(nèi)排序 并收集到數(shù)組D(O) ~ D(n)中,成為有序表;另一個是建立一個建立一個記錄數(shù)組E(0) E(m)作為分級處理的附加空間,E(r) (r=0 m)為第r級的單元,它包含2個數(shù)據(jù)域定 義E(r).Nbl為第r級的在D(O) D(n)中的"啟始位置"(整數(shù)型);定義E(r).Nb2為第 r級的在D(O) D(n)中的"結(jié)束位置"。③、分級查找階段。對一個待査找數(shù)XY,先用分級映射r:=trunc(m*XY-min)/(max-min)) 進行分級計算,計算它屬于的級別r,然后知道了XY在D(O) D(n)中的"啟始位置"E(r).Nbl 和"結(jié)束位置"E(r).Nb2。 、定位査找階段。因為分級統(tǒng)計和分級排序的數(shù)組都可以確定任一級別的"啟始位置" 和"結(jié)束位置",所以可以對任一級別進行傳統(tǒng)高效查找(包括折半査找、斐波那契査找、插 值査找)。
權(quán)利要求
1、一種分級統(tǒng)計-概率計算式查找算法,其特征是對于某個分布(最好是光滑分布)進行排序后形成了有序的數(shù)組A(1)~A(n),對其查找分為預(yù)處理階段和查找階段,預(yù)處理階段為將其分布總區(qū)間等分為m個子區(qū)間(有m+1個級別),每個子區(qū)間都是一個頂部為斜邊的直角梯形(以下簡稱梯形),梯形面積的大小反映了“元素數(shù)目”的多少;然后構(gòu)造一個記錄數(shù)組B(0)~B(m)用于登記各級梯形的屬性(包括起始值、級內(nèi)元素數(shù)目、級前元素數(shù)目、級概率密度、概率斜率)。首先是計算各級的分界點即“起始值”,再用“分級映射”逐個計算A(1)~A(n)各元素所屬的級別并進行統(tǒng)計,得到各級的“級內(nèi)元素數(shù)目”,然后分別計算出“級前元素數(shù)目”、“級概率密度”、“概率斜率”,都登記到記錄數(shù)組B中,完成預(yù)處理工作。查找階段為對任一個待查找數(shù)XY,可以通過分級映射計算確定XY所在子區(qū)間“r級”(從而確定“級前元素數(shù)目”),又通過對梯形子區(qū)間進行概率預(yù)測計算和概率修正計算,確定XY在子區(qū)間的“級內(nèi)精預(yù)測量”,與“級前元素數(shù)目”相加得到“精預(yù)測單元”。
2、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式查找算法,其進一步的特征是構(gòu)造一 個記錄數(shù)組對各級的屬性進行登記,分別登記各級的屬性包括"起始值"、"級概率密度"、"第r級概率斜率""級內(nèi)元素數(shù)目"、"級前元素數(shù)目"。如建立一個記錄數(shù)組B(0) B(m)作為分級處理的附加空間,B(r) (r=0 m)為第r級 的單元,它包含5個數(shù)據(jù)域(1)、定義B(r).Xmin為"起始值",用于記錄第r級數(shù)據(jù)的最 小值(實數(shù)型);(2)、定義B(r).Nbl為第r級的"當(dāng)前級元素數(shù)目"(整數(shù)型);(3)、定義 B(r).Nb2為"級前元素數(shù)目"(整數(shù)型),為B(O像至B(r-l)級元素數(shù)目之和;(4)、定義B(r).px 為"級概率密度";(5)、定義B(r).G為"第r級概率斜率";如果要節(jié)省B(r).Nbl這個單元也可以,在每次計算時用B(r+l).Nb2-B(r).Nb2代替 B(r).Nbl即可,但是節(jié)省空間的代價是多花時間。
3、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式查找算法,其進一步的特征是將某個 光滑分布總區(qū)間等分為很多子區(qū)間,并通過"分級映射"逐個對元素進行分級,并統(tǒng)計整個 表在每個子區(qū)間的"起始值"、"級內(nèi)元素數(shù)目"和"級前元素數(shù)目";分級映射求各級的"起始值"將區(qū)間[X1, Xn均分為m個小區(qū)間(即m+l個"級"),定義TX為"級跨度", <formula>formula see original document page 2</formula>建立一個針對B(r)的循環(huán),通過B(r).Xmin^Xl+r111 TX將B(0) B(m)各級的起始值 逐一記錄至B(r).Xmin。<formula>formula see original document page 2</formula>分級映射求各級的"級內(nèi)元素數(shù)目"建立一個針對A(l) A(n)的循環(huán),通過"分級映射"對A(j)進行分級計算,看A(j)屬于 哪個級別。在遍歷A(l) A(n)后,可以統(tǒng)計出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求各級的"級前元素數(shù)目"B(O).脂:- 0FOR r:=l TO m DO B(r).Nb2:= B(r-l).Nb2+B(r-l).固;
4、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是通過"級 內(nèi)元素數(shù)目"計算出"級概率密度"、"第r級概率斜率"和"待查數(shù)位置概率密度";計算每個級別(在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*TX): B(O).G: = B(1).G ; {兩者應(yīng)該近似相等}
5、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是通過分級映射r:= trunc (XY-X1)/TX)計算出待査找數(shù)XY所屬的級別,根據(jù)屬性登記得到該級的"級前元素數(shù)目"。
6、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式查找算法,其進一步的特征是概率計算子階段,通過利用待査找數(shù)在所屬的級別r的"級概率密度"、"第r級概率斜率"和"待 査數(shù)位置概率密度",進行面積計算,得到"待査數(shù)"與"起始值"之間所夾概率分布面積, 這就是"級內(nèi)粗預(yù)測量",將"級內(nèi)粗預(yù)測量"與"級前元素數(shù)目"相加得到"粗預(yù)測單元"。概率計算子階段,概率密度pxypxy: = B(r).px+B(r).G* (XY- B(r).Xmin);B(r).Xmin XY的元素數(shù)目(即面積)為Sx,稱"元素數(shù)目概率"。 Sx: = (B(r).px + pxy)* (XY- B(r).Xmin)/2 ;XY的所在粗預(yù)測單元為K ,為"級前元素數(shù)目"+ "元素數(shù)目概率"。K: = B(r).Nb2+round(Sx); 誤差為dX:-XY-A(K);
7、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是在計算 "粗預(yù)測單元"與"待査數(shù)"的誤差值以后,通過概率計算得到誤差值所對應(yīng)的"修正概率值",用"修正概率值"對"級內(nèi)粗預(yù)測量"進行修正后,得到"級內(nèi)精預(yù)測量",與"級前 元素數(shù)目"相加得到"精預(yù)測單元"。 誤差修正子階段。PXdX: =pxy ; pxx:= pxyWHILE ABS網(wǎng)>KK*(1/ PXdX) THENpxx: = PXdX ; PXdX: =PXdX + G*dX;dS: =( pxx + PXdX)* dX/2dK: = round,; K: =K+dK ;dX:=XY-A(K);
8、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是得到"精 預(yù)測單元"后,再配合傳統(tǒng)査找算法,確定"待査數(shù)"在表中的位置,或確認"待査數(shù)"在 表中不存在;確定目標(biāo)階段IFdX-OTHEN意味著找到了XY,在第K個單元。 ELSEIFABS(dX)<3*(l/PXdX) THEN順序査找XY
ELSE折半査找XY1
9、 根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是其特例 之一是分級排序査找的算法,在排序時就采用分級算法,分級定位排序包括分級排序和定位排序兩個階段;分級排序階段,已經(jīng)存在一個數(shù)組X(j) (j=0, 1,…,n)等待排序,其中max和min分 別為最大值和最小值。為此,構(gòu)造一個數(shù)組鏈表C(r)作為分檔數(shù)組,分檔數(shù)(ri, 1,…, m), C(r)包括一個指針域C(r) "ink用來鏈接X(j)中屬于第r級的單元、 一個整數(shù)域C(r) A.Nbl 用來記錄第r級的級內(nèi)元素數(shù)目。逐個對乂())用分級映射1":=1^11(;(111*0^)-1^11)/(111狀-1^11))進 行分級,并鏈接到對應(yīng)的級別之中。在對X(j)遍歷一次后,C(r) "ink鏈接了X(j)中屬于第r 級的各個單元,C(r)A.Nbl記錄了第r級的級內(nèi)元素數(shù)目;定位排序階段,包括兩個工作 一個是逐級對C(r) "ink鏈接的數(shù)據(jù)進行級內(nèi)排序并收 集到數(shù)組D(O) D(n)中,成為有序表;另一個是建立一個建立一個記錄數(shù)組E(0) E(m)作 為分級處理的附加空間,E(r) (r=0 m)為第r級的單元,它包含2個數(shù)據(jù)域定義E(r).Nbl 為第r級的在D(O) ~ D(n)中的"啟始位置"(整數(shù)型);定義E(r).Nb2為第r級的在D(O) D(n)中的"結(jié)束位置"。
10、根據(jù)權(quán)利要求1所述的分級統(tǒng)計-概率計算式査找算法,其進一步的特征是在分 級排序或分級統(tǒng)計的基礎(chǔ)上,進行分級定位査找,包括分級査找和定位査找兩個階段;分級査找階段。對一個待査找數(shù)XY,先用分級映射r:=trunc(m*XY-min)/(max-min))進行 分級計算,計算它屬于的級別r,然后知道了XY在數(shù)組中的"啟始位置"和"結(jié)束位置"。定位查找階段,對數(shù)組中第r級的數(shù)據(jù)(即"啟始位置"和"結(jié)束位置"之間的數(shù)據(jù)) 進行傳統(tǒng)高效査找(包括折半査找、斐波那契査找、插值査找)。
全文摘要
對于某個分布(最好是光滑分布)進行排序后形成了有序的數(shù)組A(1)~A(n),預(yù)處理階段為將其分布總區(qū)間等分為m個子區(qū)間,每個子區(qū)間都是一個頂部為斜邊的直角梯形,梯形面積的大小反映了“元素數(shù)目”的多少;然后構(gòu)造一個記錄數(shù)組B(0)~B(m)用于登記各級梯形的屬性(包括起始值、級內(nèi)元素數(shù)目、級前元素數(shù)目、級概率密度、概率斜率)。首先是計算各級的分界點即“起始值”,再用“分級映射”逐個計算A(1)~A(n)各元素所屬的級別并進行統(tǒng)計,得到各級的“級內(nèi)元素數(shù)目”,然后分別計算出“級前元素數(shù)目”、“級概率密度”、“概率斜率”,都登記到記錄數(shù)組B中,完成預(yù)處理工作。查找階段為對任一個待查找數(shù)XY,可以通過分級映射計算確定XY所在子區(qū)間“r級”,從而確定“級前元素數(shù)目”,又通過對梯形子區(qū)間進行概率預(yù)測計算和概率修正計算,確定XY在子區(qū)間的“級內(nèi)精預(yù)測量”,與“級前元素數(shù)目”相加得到“精預(yù)測單元”。
文檔編號G06F17/30GK101131692SQ20061003213
公開日2008年2月27日 申請日期2006年8月25日 優(yōu)先權(quán)日2006年8月25日
發(fā)明者陳啟星 申請人:陳啟星