本發(fā)明屬于時空數(shù)據(jù)管理和基于位置服務(wù)的結(jié)合領(lǐng)域,是一種適合在外包空間數(shù)據(jù)庫中客戶端基于位置服務(wù)進行查詢與驗證的算法。
背景技術(shù):
:現(xiàn)如今,人類對于基于位置服務(wù)(lbs)的需求越來越強烈,如地圖導(dǎo)航,尋找離自己最近的k個咖啡店等(即:最近鄰查詢knn);司機發(fā)出一條尋找最近的k個加油站的請求,而加油站利用監(jiān)測系統(tǒng),反向篩選出k個最近鄰的司機,若該司機能成為k個之一,該加油站將提前準備為其提供更優(yōu)質(zhì)服務(wù)(即:反最近鄰查詢rknn);在軍事演習(xí)或者實戰(zhàn)中,軍事部署往往會忽略最遠的敵人最易攻擊的特點,由于距離遠,士兵警戒防線低,紅方和藍方總指揮根據(jù)敵我雙方的整體位置進行調(diào)兵遣將,假設(shè)紅方選派一名士兵攻擊藍方最遠的k個敵人,那么該紅方士兵需要成為藍方攻擊的最遠k個目標之一才能進行有效伏擊(即:該紅方士兵是藍方的rkfn),反之,則按兵不動,聽從指示,利用這種rkfn策略在一定程度上能起到出奇制勝的作戰(zhàn)效果。其中rkfn查詢驗證不僅在軍事演習(xí)或者實戰(zhàn)中,在大型場景游戲等方面也有重要應(yīng)用。這在勞民傷財?shù)娜蝿?wù)中,能起到預(yù)防和保護作用,倘若在軍事戰(zhàn)爭中,因為錯誤信息,指揮長發(fā)出了錯誤的決斷,而導(dǎo)致戰(zhàn)爭的失敗,這是一筆慘痛的代價;倘若在大型場景游戲中,戰(zhàn)友獲取錯誤信息,導(dǎo)致對決的慘敗,將要承擔(dān)被隊友指責(zé)或者損失金錢等后果,所以這種安全且正確的驗證機制在一些應(yīng)用環(huán)境中是不可缺少的。因為人們的需求不同,所以有不同的查詢請求(knn、rknn、skyline、rfn、rkfn等),驗證機制保障了用戶獲取正確結(jié)果的權(quán)益,讓用戶有最終的決定權(quán)。其中,范圍查詢驗證技術(shù)和knn查詢驗證技術(shù)相對成熟,rknn查詢驗證、skyline查詢驗證技術(shù)也相繼提出,但是rkfn查詢驗證技術(shù)至今空白,本發(fā)明的目的就是彌補在外包空間數(shù)據(jù)庫中基于位置服務(wù)的rkfn查詢驗證的空缺,并提出了一種可行的驗證方法,使得用戶能快速地獲取到正確結(jié)果,為此,我們需要考慮到下面三大問題:第一,如何選取適合rkfn查詢請求的索引結(jié)構(gòu)眾所周知,隨著信息時代的快速發(fā)展,數(shù)據(jù)量爆發(fā)式地增長,利用傳統(tǒng)的處理方式來檢索出有價值的信息,是耗時且成本高昂的,因此,我們針對rkfn查詢請求方式,應(yīng)采用哪種索引結(jié)構(gòu)來加快請求的處理,是我們首要考慮的問題。第二,針對rkfn查詢請求,客戶端采用何種驗證方法來避免用戶獲取錯誤結(jié)果用戶獲取錯誤信息的來源主要有傳輸過程中數(shù)據(jù)丟失、黑客攻擊服務(wù)器并篡改其數(shù)據(jù)等,用戶被動的接受信息,可能致使用戶在錯誤信息的引導(dǎo)下偏離目標,或者提供的并非最佳抵達目的地的方案,針對這種情況,客戶端應(yīng)如何設(shè)計驗證方法來達到驗證結(jié)果的目的,這是我們需要考慮的必要問題。第三,如何減少傳輸代價、客戶端驗證和計算等代價來降低成本花銷根據(jù)knn查詢驗證的思想,服務(wù)器端生成的驗證對象(vo)供客戶端來驗證結(jié)果的可靠性,然后通過knn方法對vo中的所有對象進行計算,最后客戶端判斷服務(wù)器提供的結(jié)果和客戶端對vo的計算結(jié)果是否完全一致,如果一致則接受結(jié)果,否則,拒絕接受。rkfn查詢驗證總體思想與knn查詢驗證的思想基本一致,在這個過程中,我們要考慮到客戶端存儲能力是有限的這一硬性指標,可能成為接受vo的瓶頸,而且當客戶端通過vo來驗證結(jié)果時,驗證的代價和計算代價等又直接受vo大小影響,所以我們將主導(dǎo)傳輸和驗證等代價的vo盡量縮減,設(shè)計出一種優(yōu)化vo的方法,使得用戶盡可能少的消耗流量,這是我們需要考慮的重要問題。在現(xiàn)代社會,人們對基于位置服務(wù)的需求不斷加大,高效地處理海量數(shù)據(jù)成為研究者們的熱門課題,由于rkfn查詢驗證技術(shù)具有很大的商業(yè)和軍事價值,所以我們設(shè)計算法要兼顧到上面的三大方面,進而設(shè)計出一個適用于外包數(shù)據(jù)庫反最遠鄰居算法就顯得尤為重要。技術(shù)實現(xiàn)要素:為了填補外包空間數(shù)據(jù)庫中反最遠鄰居驗證技術(shù)的空白,本發(fā)明提供一種基于mr-tree驗證索引結(jié)構(gòu)和最新發(fā)布的反最遠鄰居查詢方法的驗證技術(shù)。本發(fā)明采用的技術(shù)方案:一種適合外包空間數(shù)據(jù)庫中反最遠鄰居驗證方法,其特征在于,外包數(shù)據(jù)過程工,使得第三方服務(wù)器和客戶端之間不存在安全信任關(guān)系,客戶端通過mr-tree索引機制對數(shù)據(jù)來源的可靠性進行正確地檢驗,整個處理流程分為第三方服務(wù)器端處理和客戶端驗證兩個部分,包括以下步驟:第三方服務(wù)器端處理:步驟1:預(yù)處理高維空間數(shù)據(jù),建立mr-tree索引機制;步驟2:離線構(gòu)建k-depthcontour并為處于k-depthcontour內(nèi)部的無效數(shù)據(jù)對象生成fvo;步驟3:判斷用戶請求與k-depthcontour的所屬關(guān)系;步驟4:利用influencedzone篩選出結(jié)果集,生成驗證結(jié)果集的fvo;步驟5:第三方服務(wù)器發(fā)送其計算的結(jié)果集、uvo、fvo、uroot、froot、influencedzone;客戶端驗證:步驟6:uvo、fvo、uroot、froot逆向生成驗證數(shù)據(jù)來源的正確性;步驟7:利用fvo驗證influencedzone的正確性;步驟8:利用四象限測試法驗證influencedzone為空;步驟9:驗證結(jié)果集的正確性。步驟2:第一次對fvo做壓縮處理,其具體操包括如下:預(yù)處理k-depthcontour及計算出k-depthcontour內(nèi)部無效查詢的驗證對象;1)利用已有mr-tree技術(shù)和k-depthcontour生成算法,計算出外包空間數(shù)據(jù)的驗證框架和基于所有數(shù)據(jù)的k-depthcontour,將空間中所有數(shù)據(jù)對象按照k-depthcontour劃分;2)對于處在k-depthcontour上或者外部的數(shù)據(jù)對象,將其所在最小邊界矩形內(nèi)的所有對象有序地加載到fvo中,而處在k-depthcontour內(nèi)部的最大矩形以實體形式有序地加載到fvo中;3)初步計算出k-depthcontour內(nèi)部的無效查詢的驗證對象fvo??蛻舳蓑炞C結(jié)果集的核心依據(jù),是influencedzone的形成,該influencedzone是對fvo進行了第二次壓縮,該influencedzone構(gòu)建思想將直接影響通信和驗證等代價;所述步驟3中判斷用戶請求與k-depthcontour的所屬關(guān)系如下;步驟3-1:采用shenluwang提出“efficientlycomputingreversekfurthestneighbors”的反最遠鄰居查詢方法,當服務(wù)器接受到用戶請求,首先判斷該請求是否存在于k-depthcontour內(nèi)部,若存在,則將相應(yīng)k取值的無效查詢fvo直接發(fā)送給客戶端,客戶端利用四象限測試法進行驗證處理;若該請求不存在于k-depthcontour內(nèi)部,則進行步驟3-2處理;步驟3-2:在mr-tree中檢索出k-depthcontour上和外部的數(shù)據(jù)對象,將這些對象與請求對象進行半平面修剪,該技術(shù)保證了被修剪掉的區(qū)域經(jīng)過至少k次修剪,形成最終的influencedzone;所述步驟4:以userset為數(shù)據(jù)集構(gòu)建的mr-tree索引樹中,進行influencedzone區(qū)域查詢驗證,若數(shù)據(jù)對象存在于influencedzone中,則將該數(shù)據(jù)對象加載到結(jié)果集中,同時將其所在的最小邊界矩形中的所有數(shù)據(jù)對象有序地加載到uvo,將不存在于influencedzone內(nèi)的最大矩形以實體的形式有序地加載到uvo中;所述步驟5:第三方服務(wù)器將最終計算出的結(jié)果集、uvo和fvo、uroot和froot、influencedzone發(fā)送給客戶端;所述步驟6:客戶端接受到服務(wù)器端發(fā)送來的信息,首先對uvo和fvo進行逆向操作,分別生成其對應(yīng)的mr-tree的根的hash值,判斷計算出的hash值和服務(wù)器端發(fā)送來的uroot和froot是否一致,如果完全一致,則進行后續(xù)操作,否則驗證失敗,拒絕接受當前服務(wù)器端發(fā)送來的所有數(shù)據(jù)信息??蛻舳蓑炞Cinfluencedzone方式,所述步驟7利用fvo來檢驗influencedzone的邊和頂點正確性,所述步驟8利用四象限測試法和fvo來驗證influencedzone為空的情況,而客戶端驗證的核心技術(shù)就是對influencedzone的檢驗,其驗證過程如下:在influencedzone存在的前提下,利用fvo來驗證influencedzone是否正確;步驟7-1:驗證influencedzone的邊界點是否正確;influencedzone的邊界點由非數(shù)據(jù)空間邊界點組成或者由非數(shù)據(jù)空間邊界點和數(shù)據(jù)空間邊界點共同組成,因此,對于非數(shù)據(jù)空間邊界點的驗證用如下公式:而對于數(shù)據(jù)空間邊界點的驗證將采用下面的公式:這里,vi代表非數(shù)據(jù)空間邊界點,vj代表數(shù)據(jù)空間邊界點,表示圓上及外部區(qū)域,(vi,q)代表vi為圓心,vi到q的距離為半徑形成的圓上及外部區(qū)域,dk代表fvo中的數(shù)據(jù)對象,mk代表fvo中的實體對象;如果influencedzone的邊界點驗證失敗,則客戶端將拒絕接受服務(wù)器端發(fā)送來的結(jié)果集;否則,將進行步驟7-2處理;步驟7-2:驗證influencedzone的邊是否正確;influencedzone邊由查詢請求q和fvo中某數(shù)據(jù)對象的中垂線構(gòu)成的,或者可能外加部分數(shù)據(jù)空間邊界線構(gòu)成的;首先檢驗influencedzone邊是否是q和fvo中某數(shù)據(jù)對象形成的中垂線,對于不是中垂線形成的邊,進一步檢驗該邊是不是數(shù)據(jù)空間的邊界線,如果都不是,則驗證失敗,客戶端拒收服務(wù)器端發(fā)送來的結(jié)果,否則,將繼續(xù)驗證influencedzone邊;驗證無數(shù)據(jù)空間邊界頂點組成的邊(ei)采用如下公式:而有數(shù)據(jù)空間邊界頂點組成的邊(ej)則采用下面公式進行檢驗:如果influencedzone通過了上述驗證,則說明該influencedzone是正確的,客戶端需要進行下一步結(jié)果集的檢驗;步驟8:influencedzone不存在,客戶端將判斷服務(wù)器端發(fā)來的信息的可靠性和正確性;對于influencedzone為空的情況有兩種:一是查詢請求處于在k-depthcontour內(nèi)部,即為無效查詢,二是查詢請求處于k-depthcontour上或者外部,influencedzone為空是由于被修剪至空,這兩種情況采用的思想一致;以查詢請求q為原點,以查詢請求q為原點,根據(jù)圖13的四象限測試法的原理,劃分數(shù)據(jù)空間為四個象限,統(tǒng)計fvo中數(shù)據(jù)對象分布在每個象限的數(shù)目,如果某個象限的數(shù)目超過k個,則對角線的象限被修剪,通過被修剪的象限中數(shù)據(jù)對象來修剪未被修剪的象限,如果整個數(shù)據(jù)空間被修剪掉,則說明服務(wù)器端發(fā)送來的信息是完全正確的,否則,驗證失敗,重新發(fā)送查詢請求。步驟9結(jié)果集驗證如下:驗證結(jié)果集的正確性;由于結(jié)果集存在,則說明influencedzone一定存在,所以將influencedzone作為范圍查詢的區(qū)域,然后判斷uvo中的數(shù)據(jù)對象是否存在于influencedzone區(qū)域中,存在的數(shù)據(jù)對象將標記下來,不存在于該區(qū)域的數(shù)據(jù)對象不做任何處理,而uvo中的實體對象是不應(yīng)該相交于該區(qū)域的,若出現(xiàn)相交的情況,則驗證失敗,客戶端拒收結(jié)果集,最后將客戶端計算的結(jié)果信息和服務(wù)器端發(fā)來的結(jié)果集進行對比,如果一致,則接受該結(jié)果集信息,否則,拒收該結(jié)果集。本發(fā)明的優(yōu)點是:該發(fā)明的實現(xiàn)涉及到眾多技術(shù)的支持,首先是外包空間數(shù)據(jù)庫承包的處理,該技術(shù)是信息發(fā)展和運行模式產(chǎn)物,特別是在云存儲模型的提出,外包數(shù)據(jù)庫的安全性受到威脅,但該技術(shù)能高效地處理眾多用戶請求;其次是mr-tree驗證索引結(jié)構(gòu)技術(shù),該技術(shù)既保證了外包空間數(shù)據(jù)庫的正確性,又能使得客戶端對接收的結(jié)果的驗證;然后是利用反最遠鄰居方法檢索出滿足條件的結(jié)果;最后,客戶端利用本發(fā)明特有的方法驗證influencedzone正確與否,在influencedzone正確的前提下,采用范圍查詢驗證技術(shù)來檢驗最終結(jié)果的正確性。附圖說明圖1外包數(shù)據(jù)庫以及第三方服務(wù)器和客戶端交互框架。圖2高維空間數(shù)據(jù)以r-tree進行數(shù)據(jù)分割形式。圖3mr-tree驗證索引結(jié)構(gòu)。圖4mr-tree葉子節(jié)點摘要的存儲形式。圖5mr-tree中間節(jié)點摘要的存儲形式。圖6生成k-depthcontour流程圖。圖72-depthcontour生成實例。圖8基于2-depthcontour半平面修剪技術(shù)實例。圖9-1是外包空間數(shù)據(jù)庫中劃分數(shù)據(jù)r-tree圖。圖9-2針對無效區(qū)域構(gòu)建vo過程以及vo驗證數(shù)據(jù)來源可靠性實例。圖10-1丟失數(shù)據(jù)等因素導(dǎo)致influencedzone出錯情況之一。圖10-2丟失數(shù)據(jù)等因素導(dǎo)致influencedzone出錯情況之二。圖11驗證influencedzone邊界點實例。圖12驗證influencedzone邊的實例。圖13四象限測試法的原理。圖14利用四象限測試influencedzone為空的實例。圖15服務(wù)器處理和客戶端驗證以及兩者間交互的過程。具體實施方式結(jié)合附圖1-15對本發(fā)明做進一步描述。一種適合外包空間數(shù)據(jù)庫中反最遠鄰居驗證方法,第三方服務(wù)器首先利用k-depthcontour和半平面修剪技術(shù)生成influencedzone,該區(qū)域的構(gòu)建可以縮減vo大??;然后采用高級圖形學(xué)中射線法和多邊形頂點排除方法來檢索influencedzone內(nèi)的結(jié)果;最后以influencedzone為基準,有序地加載相應(yīng)對象到vo中,并將結(jié)果、influencedzone和vo發(fā)送到客戶端??蛻舳私邮艿降谌椒?wù)器傳來的信息,首先是驗證vo的正確性,判斷數(shù)據(jù)集來源是否可靠;然后是借助vo來檢驗influencedzone邊界是否完整;最后將計算的結(jié)果和傳來的結(jié)果進行比對,從而選擇是否接受。外包空間數(shù)據(jù)庫的思想是將數(shù)據(jù)庫承包給第三方服務(wù)器,該服務(wù)器能滿足一類用戶的特定需求,比如用戶出行所用的地圖導(dǎo)航(百度地圖,高德地圖等),就是根據(jù)人們出行便捷的需求而設(shè)計的,使其具有專一化,特征化的性質(zhì),并能有效地響應(yīng)用戶請求,但是第三方服務(wù)器卻不能保證用戶獲得的結(jié)果正確性,其缺乏安全性。面臨海量數(shù)據(jù)地沖擊,索引結(jié)構(gòu)能加快查找速度,驗證結(jié)構(gòu)能保證信息的正確性,但是驗證對象的大小會直接導(dǎo)致傳輸代價的增加,所以我們設(shè)計一種縮減vo大小的反最遠鄰居的驗證技術(shù)。為了加快服務(wù)器處理數(shù)據(jù),我們需要前期的預(yù)處理工作,考慮k-depthcontour的構(gòu)建,可以提前處理,并存儲到硬盤中,以備可以直接讀取并使用,這樣既可以直接判斷出查詢請求的有效性,又可以節(jié)省k-depthcontour構(gòu)建所消耗的時間。請求若存在于k-depthcontour內(nèi)部,即視為無效查詢,可以預(yù)先計算出k-depthcontour的無效區(qū)域的vo,這樣可以減少無效查詢處理的時間,降低查詢和計算的代價。一種適合外包空間數(shù)據(jù)庫中反最遠鄰居驗證方法,首先,對外包空間數(shù)據(jù)庫中的數(shù)據(jù)構(gòu)建mr-tree驗證索引結(jié)構(gòu),該結(jié)構(gòu)既可以加速檢索請求,又可以為客戶端驗證提供依據(jù);然后第三方服務(wù)器利用k-depthcontour和半平面修剪技術(shù)生成influencedzone,該區(qū)域可以縮減vo大??;接著采用高級圖形學(xué)中射線法和多邊形頂點排除方法來檢索influencedzone內(nèi)的結(jié)果;最后以influencedzone為基準,將存在于influencedzone中的對象所在最小邊界矩形(mbr)內(nèi)所有對象有序地加載到vo中,不存在于influencedzone中的最大矩形以實體形式有序地加載到vo中,并將結(jié)果、influencedzone和vo發(fā)送到客戶端。客戶端接受到第三方服務(wù)器傳來的信息,首先是按照mr-tree結(jié)構(gòu)的逆向生成樹的思想來驗證vo正確性,判斷數(shù)據(jù)來源是否可靠;然后借助vo來檢驗influencedzone邊界是否完整;最后將計算結(jié)果和傳來結(jié)果進行對比??紤]傳輸?shù)雀鞣矫婊ㄤN代價,本發(fā)明設(shè)計并實現(xiàn)一種適合海量數(shù)據(jù)中反最遠鄰居驗證的市場需求任務(wù)。外包空間數(shù)據(jù)庫中反最遠鄰居驗證的實現(xiàn)最主要是如何形成優(yōu)良的驗證對象,好的驗證對象在整個驗證過程中起到至關(guān)重要的作用,縮減驗證對象的大小也是本發(fā)明研究的核心問題。本發(fā)明的內(nèi)容是實現(xiàn)反最遠鄰居驗證技術(shù),最主要的內(nèi)容是計算influencedzone和驗證influencedzone。本發(fā)明分成兩個級別——第三方服務(wù)器級和客戶端級,第三方服務(wù)器需要實現(xiàn)三個方面——預(yù)處理驗證索引樹mr-tree、離線預(yù)處理k-depthcontour、生成influencedzone??蛻舳蓑炞C的實現(xiàn)需要處理三個方面——驗證vo是否正確、利用vo驗證influencedzone、通過正確的influencedzone驗證結(jié)果集的正確性。其中核心算法是如何用vo來驗證influencedzone的過程。接下來本人將驗證的整體流程和發(fā)明的主要內(nèi)容做如下說明。步驟1:預(yù)處理高維空間數(shù)據(jù),建立mr-tree索引機制。步驟1-1:針對高維空間數(shù)據(jù)庫中所有數(shù)據(jù)(如:facilityset,該集合的驗證對象用fvo表示)按照r-tree構(gòu)建原則進行數(shù)據(jù)分割,然后對r-tree劃分的數(shù)據(jù)進行hash加密處理,形成mr-tree驗證索引樹,將mr-tree存儲起來,便于后期檢索,mr-tree索引結(jié)構(gòu)參看圖2和圖3,fvo的形式參見圖4和圖5。步驟1-2:預(yù)處理用戶需要獲得的空間數(shù)據(jù)庫中的數(shù)據(jù)集(如:userset),構(gòu)建mr-tree索引結(jié)構(gòu),然后把以該結(jié)構(gòu)組織的數(shù)據(jù)進行存儲。步驟2:利用mr-tree中所有數(shù)據(jù)對象構(gòu)建出k-depthcontour,在k-depthcontour上或者外部的數(shù)據(jù)對象,將其所在最小邊界矩形內(nèi)的所有對象加載到fvo中,而在k-depthcontour內(nèi)部的最大矩形以實體形式有序地加載到fvo中,k-depthcontour外部區(qū)域按照范圍查詢驗證思想進行處理,處于k-depthcontour內(nèi)部的請求則生成無效查詢的驗證對象fvo。因為考慮到人們的現(xiàn)實需求,一般k的取值較小,那么在k-depthcontour上或者外圍的數(shù)據(jù)對象相比內(nèi)部的數(shù)據(jù)對象要少很多,這樣利于縮減fvo,從而降低通信代價等。步驟3:判斷用戶請求與k-depthcontour的所屬關(guān)系。步驟3-1:服務(wù)器接受用戶請求,首先判斷該請求是否存在于k-depthcontour內(nèi)部,若存在,則將相應(yīng)k取值的無效查詢fvo直接發(fā)送給客戶端。若該請求不存在于k-depthcontour內(nèi)部,則進行步驟3-2處理。步驟3-2:在mr-tree中檢索出k-depthcontour上和外部的數(shù)據(jù)對象,將這些對象與請求對象進行半平面修剪,該技術(shù)保證了被修剪掉的區(qū)域經(jīng)過至少k次修剪,形成最終的influencedzone。這里用到的半平面修剪技術(shù)參見圖8。步驟4:以userset為數(shù)據(jù)集構(gòu)建的mr-tree索引樹中,進行influencedzone區(qū)域查詢驗證,如果數(shù)據(jù)對象存在于influencedzone,則將該數(shù)據(jù)對象加載到結(jié)果集中,同時將其所在的最小邊界矩形中的所有數(shù)據(jù)對象有序地加載到uvo(區(qū)分facilityset的驗證對象fvo),將不存在于influencedzone內(nèi)的最大矩形以實體的形式有序地加載到uvo中。步驟5:第三方服務(wù)器將最終計算出的結(jié)果集、uvo和fvo、uroot(uroot:userset的mr-tree樹根root的hash值)和froot(froot:facilityset的mr-tree樹根root的hash值)、influencedzone發(fā)送給客戶端??蛻舳嗽诮邮艿椒?wù)器端發(fā)送來的結(jié)果集、uvo和fvo、influencedzone之后,將做進一步的驗證處理,從而有權(quán)選擇是否接受當前的結(jié)果信息。具體步驟如下:步驟6:首先對uvo和fvo進行逆向操作,分別生成其對應(yīng)的mr-tree的根的hash值,判斷計算出的hash值和服務(wù)器端發(fā)送來的uroot和froot是否一致,如果完全一致,則進行步驟7操作,否則驗證失敗,拒絕接受當前服務(wù)器端發(fā)送來的所有數(shù)據(jù)信息。步驟7:利用fvo來驗證influencedzone是否正確,若influencedzone不存在,即不存在滿足條件的結(jié)果,將跳過步驟7,直接進入步驟8。步驟7-1:驗證influencedzone的邊界點是否正確。influencedzone的邊界點由非數(shù)據(jù)空間邊界點組成或者由非數(shù)據(jù)空間邊界點和數(shù)據(jù)空間邊界點共同組成,因此,對于非數(shù)據(jù)空間邊界點的驗證用如下公式:而對于數(shù)據(jù)空間邊界點的驗證將采用下面的公式:這里,vi代表非數(shù)據(jù)空間邊界點,vj代表數(shù)據(jù)空間邊界點,表示圓上及外部區(qū)域,(vi,q)代表vi為圓心,vi到q的距離為半徑形成的圓上及外部區(qū)域,dk代表fvo中的數(shù)據(jù)對象,mk代表fvo中的實體對象。如果influencedzone的邊界點驗證失敗,則客戶端將有權(quán)直接拒絕服務(wù)器端發(fā)送來的結(jié)果集;否則,將進行步驟7-2處理。步驟7-2:驗證influencedzone的邊是否正確。influencedzone邊由查詢請求q和fvo中某數(shù)據(jù)對象的中垂線構(gòu)成的,或者可能外加部分數(shù)據(jù)空間邊界線構(gòu)成的。首先檢驗influencedzone邊是否是q和fvo中某數(shù)據(jù)對象形成的中垂線,對于不是中垂線形成的邊,進一步檢驗該邊是不是數(shù)據(jù)空間的邊界線,如果都不是,則驗證失敗,客戶端拒收服務(wù)器端發(fā)送來的結(jié)果,否則,將繼續(xù)驗證influencedzone邊。驗證無數(shù)據(jù)空間邊界頂點組成的邊(ei)采用如下公式:而有數(shù)據(jù)空間邊界頂點組成的邊(ej)則采用下面公式進行檢驗:經(jīng)過上述對influencedzone邊的成功驗證,接下來我們將進行最后一步處理——結(jié)果集的檢驗,如果結(jié)果集驗證成功,則客戶端將會接受該結(jié)果,否則拒絕接受它,其中步驟9說明了如何驗證結(jié)果集。步驟8:influencedzone不存在,客戶端將判斷服務(wù)器端發(fā)來的信息的可靠性和正確性。對于influencedzone為空的情況有兩種:一是查詢請求處于在k-depthcontour內(nèi)部,即為無效查詢,二是查詢請求處于k-depthcontour上或者外部,influencedzone為空是由于被修剪至空,這兩種情況采用的思想一致。根據(jù)圖13的四象限測試法的原理,以查詢請求q為原點,將數(shù)據(jù)空間劃分為四個象限,統(tǒng)計fvo中數(shù)據(jù)對象分布在每個象限的數(shù)目,如果某個象限的數(shù)目超過k個(包括k),則對角線的象限被修剪,通過被修剪的象限中數(shù)據(jù)對象來修剪未被修剪的象限,如果整個數(shù)據(jù)空間被修剪掉,則說明服務(wù)器端發(fā)送來的信息是可靠而正確的,否則,驗證失敗,重新發(fā)送查詢請求。步驟9:驗證結(jié)果集的正確性。因為有結(jié)果集存在,則說明influencedzone一定存在,所以將influencedzone作為范圍查詢的區(qū)域,然后判斷uvo中的數(shù)據(jù)對象是否存在于influencedzone區(qū)域中,存在的數(shù)據(jù)對象將標記下來,不存在于該區(qū)域的數(shù)據(jù)對象不做處理,而uvo中的實體對象是不應(yīng)該相交于該區(qū)域的,若出現(xiàn)相交的情況,則驗證失敗,客戶端拒收結(jié)果集,最后將客戶端計算的結(jié)果信息和服務(wù)器端發(fā)來的結(jié)果集進行對比,如果一致,則接受該結(jié)果集信息,否則,拒收該結(jié)果集。服務(wù)器和客戶端的處理過程以及彼此交互的過程參見圖15。經(jīng)過上述步驟的處理,客戶端驗證結(jié)果的任務(wù)已全部實現(xiàn)。k-depthcontour的構(gòu)建是第一步縮減fvo關(guān)鍵,influencedzone概念的實現(xiàn)是對fvo做進一步縮小。這樣就使得通信代價,驗證代價以及存儲代價等都得到有效地降低。本發(fā)明的一個示例,采用圖9中mr-tree驗證索引結(jié)構(gòu)的示例進行說明。其中將圖9中的數(shù)據(jù)對象作為一個小的數(shù)據(jù)集進行反最遠鄰居驗證技術(shù)的測試用例。本發(fā)明方法的具體實施步驟如下:步驟1:預(yù)處理高維空間數(shù)據(jù),建立mr-tree索引機制(已有技術(shù)支撐)。針對facilityset(這里userset和facilityset為同一個數(shù)據(jù)集合)中的所有數(shù)據(jù)對象,按照圖9的mr-tree構(gòu)建原理進行數(shù)據(jù)分割并按照該組織結(jié)構(gòu)存儲數(shù)據(jù)到磁盤中,便于后期可以加快檢索查詢速度,葉子節(jié)點的存儲除了自身的信息外,還有保存其hash值,而中間節(jié)點則保存了其孩子節(jié)點信息和孩子節(jié)點的摘要信息。步驟2:利用mr-tree中所有數(shù)據(jù)對象構(gòu)建出2-depthcontour,其構(gòu)建的具體過程參看圖7。將2-depthcontour上或者外部的數(shù)據(jù)對象所在最小邊界矩形內(nèi)的所有對象加載到fvo中,圖9-1中展示了滿足要求的數(shù)據(jù)對象有f4,f5,f3,f12,f1,f2,而在2-depthcontour內(nèi)部的最大矩形以實體形式有序地加載到fvo中,圖9-2中的2-depthcontour內(nèi)部的最大矩形為n6,其中vo中的對象是有順序的,vo形成過程說明了其順序性。數(shù)據(jù)對象處于2-depthcontour內(nèi)部,即視為無效查詢,因此,我們可以提前生成2-depthcontour無效區(qū)域的驗證對象fvo。步驟3:判斷用戶請求q(這里將f5作為查詢請求q)與2-depthcontour的所屬關(guān)系。步驟3-1:利用高級圖形學(xué)的知識可以判斷出一個點是否存在于多邊形內(nèi)部。如果q屬于2-depthcontour內(nèi)部,則服務(wù)器不做任何處理,直接將預(yù)處理的2-depthcontour無效查詢的驗證對象fvo發(fā)送給客戶端。否則,進行步驟3-2處理。步驟3-2:將2-depthcontour無效查詢的fvo中的所有數(shù)據(jù)對象與請求q進行半平面修剪,該半平面修剪過程參看圖8,圖8中展示了每個區(qū)域塊被修剪的次數(shù),區(qū)域塊被修剪的次數(shù)不小于k(這里k=2),則該區(qū)域塊將被修剪掉,對于未被修剪掉的區(qū)域塊,其共同形成的區(qū)域即為influencedzone,圖8中influencedzone是由那些被修剪次數(shù)不超過2的區(qū)域塊共同組成,即為1或者0的區(qū)域塊構(gòu)成。步驟4:以userset為數(shù)據(jù)集構(gòu)建的mr-tree索引樹中,進行influencedzone區(qū)域查詢驗證,該處理過程與范圍查詢驗證過程一致,從mr-tree的根實體開始查找,判斷該矩形是否完全被包含在influencedzone中,如果被包含在influencedzone,則將該矩形中包含的所有數(shù)據(jù)對象加載到uvo;如果不完全包含,則指向該矩形包含的孩子節(jié)點,將所有孩子節(jié)點再與influencedzone進行相交與否的判斷。以此類推,直到葉子層。根據(jù)圖8和圖9,uvo=[[n4,[f12,f3]][[f1,f2][f6,f7,f8,f9,f10,f11]]],結(jié)果集result中包含數(shù)據(jù)對象為{f2,f3,f6,f10,f11},由于數(shù)據(jù)集過小,體現(xiàn)不出該算法的優(yōu)勢,因為現(xiàn)實中可能使用比較有代表性的兩個數(shù)據(jù)集,即使使用的相同的數(shù)據(jù)集,通過influencedzone可以修剪掉的一半還多的空間區(qū)域,這里通過較小的數(shù)據(jù)集進行算法的可靠性、有效性和完整性的測試。步驟5:第三方服務(wù)器將最終計算出的結(jié)果集{f2,f3,f6,f10,f11}、uvo=[[n4,[f12,f3]][[f1,f2][f6,f7,f8,f9,f10,f11]]]和fvo=[[[f4,f5][f3,f12]][n6,[f1,f2]]]、uroot和froot、influencedzone發(fā)送給客戶端??蛻舳嗽诮邮艿椒?wù)器端發(fā)送來的結(jié)果集、uvo和fvo、influencedzone之后,將做進一步的驗證處理,從而有權(quán)選擇是否接受當前的結(jié)果信息??蛻舳蓑炞C結(jié)果集正確性的實現(xiàn)步驟如下:步驟6:首先對uvo和fvo進行逆向操作,分別生成其對應(yīng)的mr-tree的根hash值,判斷計算出的hash值和服務(wù)器端發(fā)送來的uroot和froot是否一致,如果完全一致,則進行步驟7操作;否則,驗證失敗,拒絕呈現(xiàn)給用戶。圖9-1展示了vo的逆向生成mr-tree根的hash值過程,計算出的根植為n1的hash值,再與froot比較,判斷是否相等,相等則說明服務(wù)器端傳來的facilityset的fvo中的所有數(shù)據(jù)以及實體都是可靠的。uvo的驗證操作與vo的驗證操作相同。步驟7:利用fvo來驗證influencedzone是否完整,若influencedzone不存在,即不存在滿足條件的結(jié)果,將跳過步驟7,直接進入步驟8。步驟7-1:驗證influencedzone的邊界點是否正確。圖10-1圖中的influencedzone缺失了一部分△pc1c2,圖10-2圖中influencedzone缺失一部分△c4c5c6。通過實驗,先檢驗influencedzone邊界點是否在正確,利用其相關(guān)公式。對于非數(shù)據(jù)空間邊界點的驗證用如下公式:而對于數(shù)據(jù)空間邊界點的驗證將采用下面的公式:這里,vi代表非數(shù)據(jù)空間邊界點,vj代表數(shù)據(jù)空間邊界點,表示圓上及外部區(qū)域,(vi,q)代表vi為圓心,vi到q的距離為半徑形成的圓上及外部區(qū)域,dk代表fvo中的數(shù)據(jù)對象,mk代表fvo中的實體對象。當influencedzone區(qū)域是正確時,我們通過以下表格進行influencedzone的邊界點的驗證說明。圖10顯示出influencedzone中邊界點出現(xiàn)錯誤的情況,邊界點的驗證原理參看圖11,我們依然采用表格的形式進行influencedzone邊界點的驗證說明,表1展現(xiàn)了influencedzone邊界點的驗證過程,這樣既直觀,又可以清楚地展現(xiàn)出客戶端驗證邊界點的操作流程。表1:驗證influencedzone邊界點的形式化表示針對圖10-1圖中influencedzone邊界點出錯的驗證處理,一旦發(fā)現(xiàn)邊界點錯誤,直接退出,驗證失敗,客戶端拒絕接受服務(wù)器端發(fā)送的結(jié)果集。否則,將進行步驟7-2處理。步驟7-2:驗證influencedzone的邊是否正確。influencedzone邊由查詢請求q和fvo中數(shù)據(jù)對象的中垂線構(gòu)成的,或者可能外加部分數(shù)據(jù)空間邊界線構(gòu)成的。首先,以influencedzone邊作為中垂線,計算出q關(guān)于中垂線對稱的點,如果該點是fvo中的數(shù)據(jù)對象,這只能說明通過粗粒度的計算,該計算過程如表2,經(jīng)過表2的計算,姑且認為該邊正確,我們需要進行第二步細粒度的驗證計算,計算過程如表3,確保該邊最終的正確。表2:利用中垂線原理進行粗粒度地驗證influencedzone邊influencedzone邊vo中存在數(shù)據(jù)對象空間邊界線操作c1c2f3nextc2c3f4nextc3c4f2nextc4c5f3nextc5c6f1nextc6c7f2nextc7c8√nextc8c9√nextc9c1√correctinfluencedzone邊在通過中垂線思想的檢驗之后,需要繼續(xù)驗證influencedzone邊的正確性。我們采用向量測試法,在靠近influencedzone邊界點(除了由數(shù)據(jù)空間點)上,沿著經(jīng)過該點的兩個方向上,任取一點,判斷這些點是否有滿足條件的,一旦發(fā)現(xiàn),立即終止驗證,客戶端將拒接呈現(xiàn)結(jié)果信息給用戶。對influencedzone邊的驗證分為兩個公式進行,同時采用表格的形式展現(xiàn)。驗證無數(shù)據(jù)空間邊界頂點組成的邊(ei)采用如下公式:而有數(shù)據(jù)空間邊界頂點組成的邊(ej)則采用下面公式進行檢驗:針對圖10-2的情況,將會缺少邊c4c5和邊c5c6,增加一條邊c4c6,參照圖12檢驗原理進行驗證處理,具體的處理情況如表3。表3:采用向量測試法驗證influencedzone邊這種向量法的驗證代價看上去很大,但是相比服務(wù)器端用半平面修剪技術(shù)的計算量還是要少很多,因為半平面修剪的要標記每個區(qū)域塊被修剪的次數(shù),這對客戶端的計算能力和存儲能力來說,都是相當大的考驗,所以,向量法的計算代價是客戶端能夠接受的。經(jīng)過上述對influencedzone邊的成功驗證,接下來我們將進行最后一步處理,即檢驗結(jié)果集的正確性,如果結(jié)果集驗證成功,客戶端會把結(jié)果信息反饋給用戶,否則拒絕該結(jié)果集,結(jié)果集的驗證實現(xiàn)過程參看步驟9。步驟8:influencedzone不存在,客戶端將判斷服務(wù)器端發(fā)來的信息的可靠性和正確性。具體實現(xiàn)的例子參看圖14,在圖14中,以q為查詢點,將數(shù)據(jù)空間劃分為a、b、c、d四個象限,a象限中包含fvo中數(shù)據(jù)對象為1個,b象限中包含fvo中數(shù)據(jù)對象為1個,c象限中包含fvo中數(shù)據(jù)對象為2個,d象限中包含fvo中數(shù)據(jù)對象為2個,則c、d象限中的數(shù)據(jù)對象將a、b象限區(qū)域修剪掉;然后利用a、b象限中的數(shù)據(jù)對象f4、f7修剪掉了象限d;最后利用f4、f7和象限d中的數(shù)據(jù)對象f1共同修剪掉象限c,致使整個數(shù)據(jù)空間被修剪,進而服務(wù)器端發(fā)送來的信息是正確的,否則,驗證失敗,重新發(fā)送查詢請求。步驟9:驗證結(jié)果集的正確性。因為有結(jié)果集存在,則說明influencedzone一定存在,所以將influencedzone作為范圍查詢的區(qū)域,然后判斷uvo=[[n4,[f12,f3]][[f1,f2][f6,f7,f8,f9,f10,f11]]]中的數(shù)據(jù)對象哪些處于influencedzone區(qū)域中,即驗證f1,f2,f3,f6,f7,f8,f9,f10,f11,f12哪些處于influencedzone內(nèi)部,參看圖8,處于influencedzone中的數(shù)據(jù)對象的集合為result_after{f2,f3,f6,f10,f11},接著判斷uvo中所有實體對象是否相交于influencedzone,圖8顯示了n4與influencedzone沒有交集,驗證實體對象成功。最后對比結(jié)果集result和result_after中的數(shù)據(jù)是否完全一致,一旦發(fā)現(xiàn)兩個集合不相同,則驗證失敗,這里result和result_after集合完全相同,則驗證成功,客戶端可以將接受的結(jié)果信息反饋給用戶查看,為用戶提供有價值信息。中英文對照說明如下:mr-tree(merkler-tree):merkleb-tree和r*-tree的結(jié)合形式lbs(location-basedservice):基于位置服務(wù)vo(verificationobject):驗證對象fvo(verificationobjectoffacilityset):生成facilityset的驗證對象froot:針對facilityset構(gòu)建的mr-tree的根節(jié)點信息uvo(verificationobjectofuserset):生成userset的驗證對象uroot:針對userset構(gòu)建的mr-tree的根節(jié)點信息ads(authenticateddatastructure):驗證數(shù)據(jù)結(jié)構(gòu)mbr(minimumboundingrectangle):最小邊界矩形knn(knearestneighbor):k最近鄰rknn(reverseknearestneighbor):反向k最近鄰rfn(reversefurthestneighbors):反向最遠鄰居rkfn(reversekfurthestneighbors):反向k最遠鄰influencedzone:受影響區(qū)域,該區(qū)域是用來驗證結(jié)果集的正確性。當前第1頁12