專(zhuān)利名稱(chēng):基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法。
背景技術(shù):
XQuery是用來(lái)從XML文檔查找和提取元素及屬性的ー種語(yǔ)言,其業(yè)已被接納為W3的標(biāo)準(zhǔn)。XQuery被設(shè)計(jì)用來(lái)查詢(xún)XML文 檔,但其不僅僅局限于對(duì)XML文檔的查詢(xún),而且其還可以對(duì)任何以XML形式所呈現(xiàn)的數(shù)據(jù),當(dāng)然也包括數(shù)據(jù)庫(kù)。XQuery之于XML,相當(dāng)于SQL之于關(guān)系型數(shù)據(jù)集。故而,XQuery被廣泛應(yīng)用于網(wǎng)絡(luò)服務(wù)中的信息提??;信息摘要的生成;將XML轉(zhuǎn)化為HTML ;XML文檔的搜索等應(yīng)用場(chǎng)景下。因此,當(dāng)需要對(duì)ー XML文檔進(jìn)行查詢(xún)時(shí),對(duì)于所給出的XQuery語(yǔ)句的選擇執(zhí)行什么樣的查詢(xún)路徑,直接影響查詢(xún)語(yǔ)句的響應(yīng)時(shí)間?,F(xiàn)有技術(shù)中,對(duì)于查詢(xún)路徑的優(yōu)化一般或多或少都是基于查詢(xún)代價(jià)來(lái)完成查詢(xún)路徑的優(yōu)化。在用戶(hù)給出一條XQuery查詢(xún)語(yǔ)句吋,系統(tǒng)會(huì)根據(jù)所給出的XQuery查詢(xún)語(yǔ)句,將該語(yǔ)句分解為數(shù)個(gè)不同的查詢(xún)子任務(wù),井根據(jù)關(guān)系代數(shù)或布爾代數(shù)做ー些基本的等價(jià)變化,例如利用De Morgan定律對(duì)查詢(xún)條件進(jìn)行等價(jià)處理等。但當(dāng)執(zhí)行復(fù)雜查詢(xún)時(shí),或者包含嵌套查詢(xún)時(shí),現(xiàn)有技術(shù)對(duì)于此種類(lèi)型的優(yōu)化則辦法不多。導(dǎo)致上述情形發(fā)生的因素包括(I)對(duì)于XML節(jié)點(diǎn)掃描消耗過(guò)多的資源,導(dǎo)致對(duì)于查詢(xún)大文檔時(shí),資源消耗過(guò)大,查詢(xún)時(shí)間相應(yīng)增加;(2)對(duì)于中間結(jié)果的處理不夠理想。例如在查詢(xún)語(yǔ)句中需要多次使用查詢(xún)的中間結(jié)果,而系統(tǒng)對(duì)于查詢(xún)結(jié)果要么沒(méi)有進(jìn)行緩存處理,要么進(jìn)行緩存處理時(shí)沒(méi)有對(duì)中間結(jié)果的內(nèi)容進(jìn)行處理,從而導(dǎo)致系統(tǒng)所消耗的資源在做查詢(xún)時(shí)增長(zhǎng)過(guò)快;(3)對(duì)于查詢(xún)路徑?jīng)]有進(jìn)行有效編碼和優(yōu)化。
發(fā)明內(nèi)容
本發(fā)明提供一種基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,以解決是現(xiàn)有技術(shù)中查詢(xún)路徑消耗資源過(guò)大的問(wèn)題。為解決上述問(wèn)題,本發(fā)明技術(shù)方案提供一種基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,包括SI :讀取預(yù)查詢(xún)的XML文檔,并對(duì)所述XML文檔進(jìn)行預(yù)處理,以簡(jiǎn)化所述XML文檔;S2 :根據(jù)預(yù)處理后得到的所述XML文檔轉(zhuǎn)換XQuery查詢(xún)語(yǔ)句;S3 :根據(jù)所述轉(zhuǎn)換后得到的XQuery查詢(xún)語(yǔ)句構(gòu)造查詢(xún)代價(jià)矩陣;S4 :用粒子群優(yōu)化算法對(duì)所述查詢(xún)代價(jià)矩陣進(jìn)行計(jì)算,以得出最短的查詢(xún)代價(jià)路徑。可選地,所述步驟SI具體包括SI I :對(duì)XML文檔的所有節(jié)點(diǎn)標(biāo)簽進(jìn)行預(yù)處理;S12 :對(duì)XML文檔中的冗余標(biāo)簽進(jìn)行處理??蛇x地,所述步驟Sll具體包括Slll :尋找出所述XML文檔中所有節(jié)點(diǎn)標(biāo)簽信息,并將所述節(jié)點(diǎn)標(biāo)簽信息保存至一張節(jié)點(diǎn)數(shù)據(jù)表中,并對(duì)所述節(jié)點(diǎn)數(shù)據(jù)表中的每一項(xiàng)賦予唯一編號(hào)作為該項(xiàng)在表中的索引值;S112:在所述節(jié)點(diǎn)數(shù)據(jù)表的建立完成后,使用各個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的索引號(hào)對(duì)所述XML文檔進(jìn)行相應(yīng)的處理,將所述節(jié)點(diǎn)在文檔中的出現(xiàn)的位置使用其對(duì)應(yīng)的節(jié)點(diǎn)索引號(hào)進(jìn)行代替??蛇x地,所述步驟S12具體包括刪除所述XML文檔的所有節(jié)點(diǎn)的右標(biāo)簽。可選地,所述步驟S2具體為根據(jù)所述的預(yù)處理后得到的XML文檔轉(zhuǎn)換原有的XQuery查詢(xún)語(yǔ)句,也即使用所述XML文檔中的各個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)ID表示所述節(jié)點(diǎn),從而將原XQuery語(yǔ)句進(jìn)行轉(zhuǎn)換;可選地,所述步驟S3具體為S31 :獲取轉(zhuǎn)換后得到的所述XQuery查詢(xún)語(yǔ)句中的節(jié)點(diǎn)編號(hào)MAX_ID和MIN_ID, 其中,所述MAX_ID、所述MIN_ID分別表示所述XQuery查詢(xún)語(yǔ)句中的節(jié)點(diǎn)編號(hào)的最大值和最小值;S32 :根據(jù) MAX_ID,MIN_ID 的取值范圍建立一個(gè)(MAX_ID - MIN_ID) * (MAX_ID-MIN_ID)的查詢(xún)代價(jià)矩陣,并將所述查詢(xún)代價(jià)矩陣中的各個(gè)元素值設(shè)置為一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)所包含的節(jié)點(diǎn)數(shù)量,以表示所述兩個(gè)節(jié)點(diǎn)之間的查詢(xún)路徑的權(quán)值;可選地,所述步驟S4具體為步驟S41:定義粒子群優(yōu)化算法的目標(biāo)函數(shù)為min:f (xl, x2,…,xn);步驟S42:隨機(jī)生成N個(gè)個(gè)體,以生成初始種群;步驟S43:初始化N個(gè)個(gè)體的初始值,也即使用隨機(jī)數(shù)生成器對(duì)所述N個(gè)個(gè)體的初始速度及位置生成初始速度和初始位置;步驟S44:計(jì)算所述各個(gè)個(gè)體的適應(yīng)度值;步驟S45:若適應(yīng)度值小于給定的閾值d,則終止計(jì)算;步驟S46:輸出最優(yōu)值,即該算法所尋找到的最優(yōu)路線,否則進(jìn)行步驟S47 ;步驟S47:對(duì)粒子個(gè)體進(jìn)行更新。其中,其中,f (xl, x2,…,xn)為xl, x2, ···,xn路徑上的查詢(xún)代價(jià),min為去所述目標(biāo)函數(shù)的最小值;d為用戶(hù)給點(diǎn)的閾值,由用戶(hù)進(jìn)行指定;適應(yīng)度值,用以表明個(gè)體的優(yōu)秀度,其越小則表明所述個(gè)體越優(yōu)秀;可選地,在所述步驟S47具體按照下述的公式更新所述粒子個(gè)體vik+l=w vik+cl rand() (Ijk-Xjk)+C2Rand () (gk-Xjk) (I)X^+Wk+1 (2)其中,Vik+1中的Xik+1等參數(shù)為所述的各個(gè)種群的所在搜索空間中第k+Ι次迭代后的位置和速度;gk為在搜索空間中的優(yōu)值,Ii15為第i個(gè)粒子在第k次迭代過(guò)程中所經(jīng)歷的最優(yōu)位置為算法慣性權(quán)值,此數(shù)值為經(jīng)驗(yàn)值,通常在[1,I. 3] ;Cl、C2為加速常數(shù),通常取值為2 ; rand O, Rand O為兩個(gè)在
范圍內(nèi)變化的均勻分布函數(shù)與現(xiàn)有技術(shù)相比,上述技術(shù)方案具有下優(yōu)點(diǎn)本發(fā)明的一種基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,具有提供相應(yīng)查詢(xún)相應(yīng)時(shí)間,減少查詢(xún)是系統(tǒng)所需要的資源,較好的利用查詢(xún)中間結(jié)果并對(duì)中間結(jié)果進(jìn)行有效的優(yōu)化處理從而減少中間結(jié)果所消耗的系統(tǒng)資源等優(yōu)點(diǎn)從而已較低的資源需求來(lái)完成相應(yīng)的查詢(xún)工作。
圖I本發(fā)明的實(shí)施方式的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法的流程圖;圖2是本發(fā)明的實(shí)施方式的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法中的步驟SI的流程圖;圖2a是本發(fā)明的實(shí)施方式的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法中的步驟SI中的步驟Sll的流程圖;圖3是是本發(fā)明的實(shí)施方式的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法 中的步驟S3的流程圖;圖4是是本發(fā)明的實(shí)施方式的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法中的步驟S4的流程圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
做詳細(xì)的說(shuō)明。在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以多種不同于在此描述的其它方式來(lái)實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類(lèi)似推廣。因此本發(fā)明不受下面公開(kāi)的具體實(shí)施方式
的限制。在對(duì)大XML文件進(jìn)行復(fù)雜查詢(xún)吋,由于XML文件較大,且其執(zhí)行的XQuery查詢(xún)語(yǔ)句較為復(fù)雜,因此會(huì)導(dǎo)致了查詢(xún)過(guò)程中所出現(xiàn)的中間結(jié)果較為龐大,從而影響到查詢(xún)速度,且系統(tǒng)在進(jìn)行復(fù)雜查詢(xún)時(shí)的系統(tǒng)資源消耗過(guò)大,從而產(chǎn)生用戶(hù)體驗(yàn)不佳的問(wèn)題。故而,在對(duì)大型XML文件進(jìn)行復(fù)雜的XQuery查詢(xún)時(shí)候,首要考慮的因素是如何減少查詢(xún)所產(chǎn)生的中間結(jié)果,而減少查詢(xún)中間結(jié)果又涉及查詢(xún)路徑的編碼以及所采用的優(yōu)化算法。在此,我們主要關(guān)注兩點(diǎn),即如何對(duì)XQuery查詢(xún)語(yǔ)句進(jìn)行有效的編碼,并產(chǎn)生出相對(duì)應(yīng)的查詢(xún)計(jì)劃,其次是在對(duì)XQuery查詢(xún)語(yǔ)句進(jìn)行編碼后,采取何種有效的算法來(lái)評(píng)估各個(gè)查詢(xún)計(jì)劃的代價(jià),為執(zhí)行器選選擇最優(yōu)的查詢(xún)計(jì)劃提供支持?,F(xiàn)有對(duì)于大型的XML文檔進(jìn)行復(fù)雜的查詢(xún)時(shí)候,采用的樸素的優(yōu)化方式進(jìn)行,其中只是涉及一些簡(jiǎn)單的等價(jià)處理,如Not,And,Or等的等價(jià)變換。而且,現(xiàn)有技術(shù)對(duì)于查詢(xún)計(jì)劃沒(méi)有進(jìn)行相應(yīng)的優(yōu)化,只是簡(jiǎn)單的按照XQuery語(yǔ)句來(lái)生成相應(yīng)的查詢(xún)計(jì)劃。例如,對(duì)于如下的X M L文檔
權(quán)利要求
1.一種基于粒子群優(yōu)化算法的XQueiT查詢(xún)路徑優(yōu)化方法,其特征在于,包括 51:讀取預(yù)查詢(xún)的XML文檔,并對(duì)所述XML文檔進(jìn)行預(yù)處理,以簡(jiǎn)化所述XML文檔; 52:根據(jù)預(yù)處理后得到的所述XML文檔轉(zhuǎn)換XQuery查詢(xún)語(yǔ)句; 53:根據(jù)所述轉(zhuǎn)換后得到的XQuery查詢(xún)語(yǔ)句構(gòu)造查詢(xún)代價(jià)矩陣; 54:用粒子群優(yōu)化算法對(duì)所述查詢(xún)代價(jià)矩陣進(jìn)行計(jì)算,以得出最短的查詢(xún)代價(jià)路徑。
2.如權(quán)利要求I所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟SI具體包括對(duì)XML文檔的所有節(jié)點(diǎn)標(biāo)簽進(jìn)行預(yù)處理。
3.如權(quán)利要求I所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟SI具體包括對(duì)XML文檔中的冗余標(biāo)簽進(jìn)行處理。
4.如權(quán)利要求2所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟Sll具體包括 5111:尋找出所述XML文檔中所有節(jié)點(diǎn)標(biāo)簽信息,并將所述節(jié)點(diǎn)標(biāo)簽信息保存至一張節(jié)點(diǎn)數(shù)據(jù)表中,并對(duì)所述節(jié)點(diǎn)數(shù)據(jù)表中的每一項(xiàng)賦予唯一編號(hào)作為該項(xiàng)在表中的索引值; 5112:在所述節(jié)點(diǎn)數(shù)據(jù)表的建立完成后,將所述節(jié)點(diǎn)在文檔中的出現(xiàn)的位置使用其對(duì)應(yīng)的節(jié)點(diǎn)索引號(hào)進(jìn)行代替。
5.如權(quán)利要求3所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟S12具體包括刪除所述XML文檔的所有節(jié)點(diǎn)的右標(biāo)簽。
6.如權(quán)利要求I所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟S2具體為根據(jù)所述的預(yù)處理后得到的XML文檔轉(zhuǎn)換原有的XQuery查詢(xún)語(yǔ)句,也即使用所述XML文檔中的各個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)ID表示所述節(jié)點(diǎn),從而將原XQuery語(yǔ)句進(jìn)行轉(zhuǎn)換。
7.如權(quán)利要求I所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟S3具體為 531:獲取轉(zhuǎn)換后得到的所述XQuery查詢(xún)語(yǔ)句中的節(jié)點(diǎn)編號(hào)MAX_ID和MIN_ID,其中,所述MAX_ID、所述MIN_ID分別表示所述XQuery查詢(xún)語(yǔ)句中的節(jié)點(diǎn)編號(hào)的最大值和最小值; 532:根據(jù) MAX_ID,MIN_ID 的取值范圍建立一個(gè)(MAX_ID_MIN_ID) * (MAX_ID_MIN_ID)的查詢(xún)代價(jià)矩陣,并將所述查詢(xún)代價(jià)矩陣中的各個(gè)元素值設(shè)置為一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)所包含的節(jié)點(diǎn)數(shù)量,以表示所述兩個(gè)節(jié)點(diǎn)之間的查詢(xún)路徑的權(quán)值。
8.如權(quán)利要求I所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,所述步驟S4具體為 步驟S41 :定義粒子群優(yōu)化算法的目標(biāo)函數(shù)為min f (xl, x2, . . . , xn); 步驟S42 :隨機(jī)生成N個(gè)個(gè)體,以生成初始種群; 步驟S43 :初始化N個(gè)個(gè)體的初始值,也即使用隨機(jī)數(shù)生成器對(duì)所述N個(gè)個(gè)體的初始速度及位置生成初始速度和初始位置; 步驟S44 :計(jì)算所述各個(gè)個(gè)體的適應(yīng)度值; 步驟S45 :若適應(yīng)度值小于給定的閾值d,則終止計(jì)算; 步驟S46 :輸出最優(yōu)值,即該算法所尋找到的最優(yōu)路線,否則進(jìn)行步驟S47 ; 步驟S47 :對(duì)粒子個(gè)體進(jìn)行更新。其中,其中,f(xl,x2, . . . , xn)為xl, x2, . . . , xn路徑上的查詢(xún)代價(jià),min為去所述目標(biāo)函數(shù)的最小值; d為用戶(hù)給點(diǎn)的閾值,由用戶(hù)進(jìn)行指定; 適應(yīng)度值,用以表明個(gè)體的優(yōu)秀度,其越小則表明所述個(gè)體越優(yōu)秀。
9.如權(quán)利要求7所述的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法,其特征在于,在所述步驟S47中,具體按照下述的公式更新所述粒子個(gè)體Vik+1 = W Vi1^c1 rand( ) (Ι^-χ^) +C2RandO (gk-Xik) (I)Xik+1 = Xik+Vik+1 (2) 其中,v,k+1中的Xik+1等參數(shù)為所述的各個(gè)種群的所在搜索空間中第k+Ι次迭代后的位置和速度;gk為在搜索空間中的優(yōu)值,Ii15為第i個(gè)粒子在第k次迭代過(guò)程中所經(jīng)歷的最優(yōu)位置;《為算法慣性權(quán)值,此數(shù)值為經(jīng)驗(yàn)值,通常在[1,1.3] ;Cl、C2為加速常數(shù),通常取值為2 ; rand O, Rand O為兩個(gè)在
范圍內(nèi)變化的均勻分布函數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法和裝置,包括S1讀取欲查詢(xún)的XML文檔,并對(duì)所述XML文檔進(jìn)行預(yù)處理;S2根據(jù)預(yù)處理后得到的所述XML文檔轉(zhuǎn)換XQuery查詢(xún)語(yǔ)句;S3根據(jù)所述轉(zhuǎn)換后得到的XQuery查詢(xún)語(yǔ)句構(gòu)造查詢(xún)代價(jià)矩陣;S4用粒子群優(yōu)化算法對(duì)所述查詢(xún)代價(jià)矩陣進(jìn)行計(jì)算,以得出最短的查詢(xún)代價(jià)路徑。與現(xiàn)有技術(shù)相比,本發(fā)明的基于粒子群優(yōu)化算法的XQuery查詢(xún)路徑優(yōu)化方法和裝置,具有提供相應(yīng)查詢(xún)相應(yīng)時(shí)間,減少查詢(xún)系統(tǒng)所需要的資源,較好的利用查詢(xún)中間結(jié)果并對(duì)中間結(jié)果進(jìn)行有效的優(yōu)化處理從而減少中間結(jié)果所消耗的系統(tǒng)資源等優(yōu)點(diǎn),從而以較低的資源需求來(lái)完成相應(yīng)的查詢(xún)。
文檔編號(hào)G06N3/12GK102760167SQ201210193940
公開(kāi)日2012年10月31日 申請(qǐng)日期2012年6月13日 優(yōu)先權(quán)日2012年6月13日
發(fā)明者孫偉豐, 李書(shū)淦, 李泉, 李 浩, 程仁波, 羅正海, 趙偉, 鄭程光 申請(qǐng)人:上海方正數(shù)字出版技術(shù)有限公司