基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法
【專利摘要】基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法。首先通過擴(kuò)張路網(wǎng)找到初始時(shí)刻的最佳消費(fèi)者集合和安全區(qū)域;在擴(kuò)張路網(wǎng)的過程中,針對不同的聚合函數(shù)利用不同的剪枝策略極大減少了搜索空間;接著當(dāng)有消費(fèi)者發(fā)生位置更新時(shí),便利用安全區(qū)域計(jì)算該消費(fèi)者新的聚合距離,針對不同的聚合函數(shù)應(yīng)用了不同的優(yōu)化方法,從而極大地減小了更新點(diǎn)聚合距離的計(jì)算代價(jià);最后調(diào)整最佳消費(fèi)者集合和安全區(qū)域。本發(fā)明極大地減少了查詢的搜索空間,且查詢效率明顯好于現(xiàn)有方法,提供了最佳性能。
【專利說明】基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及空間數(shù)據(jù)庫的查詢技術(shù),特別是一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法。
【背景技術(shù)】
[0002]隨著無線通信技術(shù)、遙感技術(shù)以及定位系統(tǒng)的不斷發(fā)展和普及,大量的空間位置數(shù)據(jù)以前所未有的速度增長。基于空間數(shù)據(jù)庫的查詢和搜索應(yīng)用廣泛,各種空間數(shù)據(jù)庫上的查詢算法成為了研究熱點(diǎn)。
[0003]典型的空間數(shù)據(jù)庫查詢包括最近鄰查詢和聚合最近鄰查詢等。最近鄰查詢返回距離查詢點(diǎn)最近的點(diǎn),而聚合最近鄰查詢則是根據(jù)給定的聚合函數(shù)返回離所有查詢點(diǎn)聚合距離最近點(diǎn)集合。聚合最近鄰查詢擁有多個查詢點(diǎn),根據(jù)聚合函數(shù)的不同,返回的聚合最近鄰集合也不同。常見的聚合函數(shù)有求和函數(shù)、最大值函數(shù)和最小值函數(shù)。路網(wǎng)中的聚合最近鄰查詢是將聚合最近鄰查詢放于路網(wǎng)環(huán)境下,用路網(wǎng)中最短路徑長度來度量兩點(diǎn)之間的最短距離。
[0004]基于路網(wǎng)中聚合最近鄰查詢,路網(wǎng)中的連續(xù)聚合最近鄰查詢是連續(xù)監(jiān)控一段時(shí)間內(nèi)查詢點(diǎn)的聚合最近鄰集合情況,它適用于查詢點(diǎn)靜止而對象點(diǎn)沿著路網(wǎng)不斷運(yùn)動的場景中。該查詢在智能交通、智慧城市、基于位置的應(yīng)用服務(wù)領(lǐng)域具有重要的應(yīng)用價(jià)值。
[0005]目前針對路網(wǎng)中的連續(xù)聚合最近鄰查詢,已有雙向更新算法,但是該算法需要對整個路網(wǎng)進(jìn)行復(fù)雜的處理,耗費(fèi)大量的時(shí)間,降低了請求響應(yīng)效率,并設(shè)定對象點(diǎn)運(yùn)動的方式只能是在舊位置消失并在新位置出現(xiàn),不符合對象點(diǎn)以一定速度和方向沿著路網(wǎng)運(yùn)動這一實(shí)際情況。而在智能交通等實(shí)際應(yīng)用中請求響應(yīng)時(shí)間是卻非常重要的,在本發(fā)明中,我們關(guān)注于縮短請求響應(yīng)時(shí)間,并且充分考慮對象點(diǎn)的實(shí)際運(yùn)動方式。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要克服現(xiàn)有技術(shù)的上述缺點(diǎn),提供一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法。
[0007]本發(fā)明所述的基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,包括如下步驟:
[0008]步驟(1):收集路網(wǎng)中發(fā)出查詢請求的商家組的位置信息,及其附近消費(fèi)者位置信息,并建立索引;
[0009]步驟(2):找到初始時(shí)刻的最佳消費(fèi)者集合,返回給查詢商家;并記錄下一時(shí)刻潛在的最佳消費(fèi)者候選集合;
[0010]步驟(3):監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離;
[0011]步驟(4):利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,返回給查詢商家;并調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合;
[0012]步驟(5):根據(jù)商家請求,終止最佳消費(fèi)者查找。
[0013]進(jìn)一步,所述的步驟(I)中商家位置信息和消費(fèi)者的位置信息是通過地理坐標(biāo)來表示的;對于路網(wǎng)的邊和邊頂點(diǎn)利用基于路網(wǎng)的索引模型對其建立索引,同時(shí)將查詢商家及其附近所有消費(fèi)者的地理坐標(biāo)定位到路網(wǎng)邊上,并存儲在文本文件中。
[0014]進(jìn)一步,所述的步驟(2)中找到初始時(shí)刻的最佳消費(fèi)者集合是通過擴(kuò)張路網(wǎng),計(jì)算消費(fèi)者到所有商家的聚合距離實(shí)現(xiàn)的;其中聚合距離最小的消費(fèi)者即是最佳消費(fèi)者;下一時(shí)刻潛在的最佳消費(fèi)者候選集合是用安全區(qū)域來記錄的,安全區(qū)域記錄了查詢點(diǎn)與路網(wǎng)結(jié)點(diǎn)之間的最短距離;路網(wǎng)的擴(kuò)張方式是以查詢點(diǎn)為源點(diǎn)依照最短距離優(yōu)先的方式不斷向外擴(kuò)張;擴(kuò)張過程中遇到的兩類點(diǎn)包括:
[0015]2.1路網(wǎng)結(jié)點(diǎn),當(dāng)遇到該類點(diǎn)時(shí),首先將查詢點(diǎn)和該類結(jié)點(diǎn)的路網(wǎng)距離記錄在安全區(qū)域表中,然后記錄下與該路網(wǎng)結(jié)點(diǎn)相鄰接的所有路網(wǎng)結(jié)點(diǎn),作為下一步路網(wǎng)擴(kuò)張的依據(jù);
[0016]2.2對象點(diǎn),即位于路網(wǎng)邊上的消費(fèi)者,當(dāng)遇到該類點(diǎn)時(shí),檢查該對象點(diǎn)是否已經(jīng)被所有查詢點(diǎn)擴(kuò)張到;若是,則計(jì)算出該對象點(diǎn)的聚合距離,并將其加入最佳消費(fèi)者集合中,該操作有可能引起最佳消費(fèi)者集合的更新;
[0017]擴(kuò)張的停止條件是當(dāng)前的擴(kuò)張半徑的大小超過了最佳消費(fèi)者集合中的最大聚合距離值,針對不同的聚合函數(shù),可以采用不同的剪枝策略讓擴(kuò)張過程提前終止,這些剪枝策略包括:
[0018]2.a三角不等式剪枝,這是針對聚合函數(shù)為求和函數(shù)提出的一種剪枝策略,利用了求和函數(shù)公式的特性并根據(jù)三解不等式的性質(zhì),估計(jì)出當(dāng)前擴(kuò)張到的路網(wǎng)結(jié)點(diǎn)到所有查詢點(diǎn)聚合距離作為該結(jié)點(diǎn)的聚合距離下界值;當(dāng)該估計(jì)值超過最佳消費(fèi)者集合中的最大聚合距離值時(shí),可以提前終止擴(kuò)張;
[0019]2.b樹剪枝,這是針對聚合函數(shù)為最小值函數(shù)提出的一種剪枝策略,利用了最小值函數(shù)求解公式的特性,對于任意一個路網(wǎng)結(jié)點(diǎn),只需記錄下離它最近的查詢點(diǎn)的路網(wǎng)距離,就可以計(jì)算出落在以該結(jié)點(diǎn)為頂點(diǎn)的所有邊上的對象點(diǎn)的聚合距離。
[0020]進(jìn)一步,所述的步驟(3)中監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離是通過服務(wù)系統(tǒng)檢測實(shí)現(xiàn)的;消費(fèi)者位置發(fā)生更新是因?yàn)橄M(fèi)者是可以沿著路網(wǎng)以一定的速度運(yùn)動和方向運(yùn)動的,消費(fèi)者可以在任意時(shí)刻向服務(wù)系統(tǒng)提交自己的位置信息;當(dāng)系統(tǒng)自動檢測到消費(fèi)者的位置發(fā)生變化時(shí),需要根據(jù)聚合距離計(jì)算公式重新計(jì)算其聚合距離;發(fā)生位置更新的消費(fèi)者為更新點(diǎn),計(jì)算更新點(diǎn)的聚合距離方式包括以下步驟:
[0021]3.1定位該更新點(diǎn)的位置,即獲取該更新點(diǎn)所在的路網(wǎng)邊的信息;
[0022]3.2利用安全區(qū)域,得出更新點(diǎn)所在路網(wǎng)邊的兩個頂點(diǎn)到各查詢點(diǎn)的路網(wǎng)距離信息,根據(jù)這些信息以及該更新點(diǎn)到兩個頂點(diǎn)之間的距離,直接計(jì)算出該更新點(diǎn)的聚合距離;
[0023]針對不同的聚合函數(shù),可以有不同更新點(diǎn)的聚合距離計(jì)算優(yōu)化方法,這些優(yōu)化方法包括:
[0024]3.2.1針對聚合函數(shù)為最小值函數(shù)的情況,利用樹剪枝的思想,只需要從安全區(qū)域表中查得離更新點(diǎn)所在邊的兩頂點(diǎn)路網(wǎng)距離最近的查詢點(diǎn),便可得出更新點(diǎn)的聚合距離;
[0025]3.2.2針對聚合函數(shù)求和函數(shù)和最大值函數(shù)的情況采用分類法對查詢點(diǎn)進(jìn)行分類;假更新點(diǎn)位于邊(nx,ny)上,nx,ny為路網(wǎng)邊的兩頂點(diǎn),根據(jù)查詢點(diǎn)到更新點(diǎn)的最短路徑是經(jīng)過nx還是ny,可以將查詢點(diǎn)分為以下三類:
[0026]3.2.2a將到更新點(diǎn)的最短路徑只能經(jīng)過nx的查詢點(diǎn)歸為第一類;
[0027]3.2.2b將到更新點(diǎn)的最短路徑只能經(jīng)過ny的查詢點(diǎn)歸為第二類;
[0028]3.2.2c將到更新點(diǎn)的最短路徑既能經(jīng)過nx,又能經(jīng)過ny的查詢點(diǎn)歸為第三類;
[0029]上述對查詢點(diǎn)進(jìn)行歸類預(yù)處理的方法,節(jié)省了更新點(diǎn)聚合計(jì)算距離過程中的很多比較操作,從而極大地減少了距離計(jì)算代價(jià)。
[0030]進(jìn)一步,所述的步驟(4)中利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,具體包括以下四種情況:
[0031]4.1若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之外,則忽略此更新;
[0032]4.2若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之內(nèi);若更新點(diǎn)的聚合距離小于最佳消費(fèi)者集合中最大的聚合距離,則將更新點(diǎn)加入最佳消費(fèi)者集合中,從而替換掉最佳消費(fèi)者集合中有最大聚合距離的對象點(diǎn);
[0033]4.3若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離增大了,則在安全區(qū)域內(nèi)查找是否有聚合距離更小的對象點(diǎn)可以替換掉該更新點(diǎn);
[0034]4.4若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離減小了,則更新該更新點(diǎn)在最佳消費(fèi)者集合中的聚合距離;
[0035]調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合是根據(jù)當(dāng)前最佳消費(fèi)者集合和擴(kuò)張半徑來調(diào)整安全區(qū)域?qū)崿F(xiàn)的;若當(dāng)前最佳消費(fèi)者集合中的最大聚合距離大于擴(kuò)張半徑,則繼續(xù)擴(kuò)張路網(wǎng)直至最佳消費(fèi)者集合中的最大聚合距離與擴(kuò)張半徑相等,從而調(diào)整了安全區(qū)域與最佳消費(fèi)者集合。
[0036]進(jìn)一步,所述的步驟(5)中根據(jù)商家請求,終止最佳消費(fèi)者查找是根據(jù)商家的請求類型來實(shí)現(xiàn)的;商家可以發(fā)出兩種類型的請求:
[0037]5.1繼續(xù)查詢請求,若收到此類請求則返回至步驟(3)繼續(xù)執(zhí)行;
[0038]5.2終止查找請求,若收到此類請求則停止查找,結(jié)束最佳消費(fèi)者的查找。
[0039]本發(fā)明具有的有益效果是:
[0040]本發(fā)明充分利用了空間數(shù)據(jù)庫中現(xiàn)有路網(wǎng)下聚合最近鄰查詢技術(shù),提出了安全區(qū)域的概念,充分利用了安全區(qū)域的特性進(jìn)行剪枝和優(yōu)化,極大減少了搜索空間,大大降低了I/O開銷和CPU時(shí)間,提供了最佳性能。
【專利附圖】
【附圖說明】
[0041]圖1是本發(fā)明的實(shí)施步驟流程圖。
[0042]圖2為最佳消費(fèi)者查找的工作原理示意圖。
【具體實(shí)施方式】
[0043]現(xiàn)結(jié)合附圖和具體實(shí)施對本發(fā)明的技術(shù)方案作進(jìn)一步說明:
[0044]如圖1,圖2所示,本發(fā)明具體實(shí)施過程和工作原理如下:
[0045]步驟(1):收集路網(wǎng)中發(fā)出查詢請求的商家組的位置信息,及其附近消費(fèi)者位置信息,并建立索引;
[0046]步驟(2):找到初始時(shí)刻的最佳消費(fèi)者集合,返回給查詢商家;并記錄下一時(shí)刻潛在的最佳消費(fèi)者候選集合;
[0047]步驟(3):監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離;
[0048]步驟(4):利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,返回給查詢商家;并調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合;
[0049]步驟(5):根據(jù)商家請求,終止最佳消費(fèi)者查找。
[0050]步驟(I)中商家位置信息和消費(fèi)者的位置信息是通過地理坐標(biāo)來表示的;對于路網(wǎng)的邊和邊頂點(diǎn)利用基于路網(wǎng)的索引模型對其建立索引,同時(shí)將查詢商家及其附近所有消費(fèi)者的地理坐標(biāo)定位到路網(wǎng)邊上,并存儲在文本文件中,如圖2中空間數(shù)據(jù)庫模塊所示。
[0051]步驟(2)中找到初始時(shí)刻的最佳消費(fèi)者集合是通過擴(kuò)張路網(wǎng),計(jì)算消費(fèi)者到所有商家的聚合距離實(shí)現(xiàn)的;其中聚合距離最小的消費(fèi)者即是最佳消費(fèi)者;如圖2中安全區(qū)域模塊所示,記錄了查詢點(diǎn)與路網(wǎng)結(jié)點(diǎn)之間的最短距離;路網(wǎng)的擴(kuò)張方式是以查詢點(diǎn)為源點(diǎn)依照最短距離優(yōu)先的方式不斷向外擴(kuò)張;擴(kuò)張過程中遇到的兩類點(diǎn)包括:
[0052]2.1路網(wǎng)結(jié)點(diǎn),當(dāng)遇到該類點(diǎn)時(shí),首先將查詢點(diǎn)和該類結(jié)點(diǎn)的路網(wǎng)距離記錄在安全區(qū)域表中,然后記錄下與該路網(wǎng)結(jié)點(diǎn)相鄰接的所有路網(wǎng)結(jié)點(diǎn),作為下一步路網(wǎng)擴(kuò)張的依據(jù);
[0053]2.2對象點(diǎn),即位于路網(wǎng)邊上的消費(fèi)者,當(dāng)遇到該類點(diǎn)時(shí),檢查該對象點(diǎn)是否已經(jīng)被所有查詢點(diǎn)擴(kuò)張到;若是,則計(jì)算出該對象點(diǎn)的聚合距離,并將其加入最佳消費(fèi)者集合中,該操作有可能引起最佳消費(fèi)者集合的更新;
[0054]圖2中路網(wǎng)初化模塊引擎停止條件是當(dāng)前的擴(kuò)張半徑超過了最佳消費(fèi)者集合中的最大聚合距離值。針對不同的聚合函數(shù),可以采用不同的剪枝策略讓擴(kuò)張過程提前終止,從而加速圖2中路網(wǎng)初始化引擎,這些剪枝策略包括:
[0055]2.a三角不等式剪枝,這是針對聚合函數(shù)為求和函數(shù)提出的一種剪枝策略,利用了求和函數(shù)公式的特性并根據(jù)三解不等式的性質(zhì),估計(jì)出當(dāng)前擴(kuò)張到的路網(wǎng)結(jié)點(diǎn)到所有查詢點(diǎn)聚合距離作為該結(jié)點(diǎn)的聚合距離下界值;當(dāng)該估計(jì)值超過最佳消費(fèi)者集合中的最大聚合距離值時(shí),可以提前終止擴(kuò)張;
[0056]2.b樹剪枝,這是針對聚合函數(shù)為最小值函數(shù)提出的一種剪枝策略,利用了最小值函數(shù)求解公式的特性,對于任意一個路網(wǎng)結(jié)點(diǎn),只需記錄下離它最近的查詢點(diǎn)的路網(wǎng)距離,就可以計(jì)算出落在以該結(jié)點(diǎn)為頂點(diǎn)的所有邊上的對象點(diǎn)的聚合距離。
[0057]所述的步驟(3)中監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離是通過服務(wù)系統(tǒng)檢測實(shí)現(xiàn)的;消費(fèi)者位置發(fā)生更新是因?yàn)橄M(fèi)者是可以沿著路網(wǎng)以一定的速度運(yùn)動和方向運(yùn)動的,消費(fèi)者可以在任意時(shí)刻向服務(wù)系統(tǒng)提交自己的位置信息;當(dāng)系統(tǒng)自動檢測到車輛的位置發(fā)生變化時(shí),需要根據(jù)聚合距離計(jì)算公式重新計(jì)算其聚合距離,其對應(yīng)于圖2聚合距離計(jì)算引擎模塊;計(jì)算發(fā)生位置更新的車輛(簡稱更新點(diǎn))的聚合距離方式包括以下步驟:
[0058]3.1定位該更新點(diǎn)的位置,即獲取該更新點(diǎn)所在的路網(wǎng)邊的信息;
[0059]3.2利用安全區(qū)域,得出更新點(diǎn)所在路網(wǎng)邊的兩個頂點(diǎn)到各查詢點(diǎn)的路網(wǎng)距離信息,根據(jù)這些信息以及該更新點(diǎn)到兩個頂點(diǎn)之間的距離,直接計(jì)算出該更新點(diǎn)的聚合距離;
[0060]針對不同的聚合函數(shù),可以有不同更新點(diǎn)的聚合距離計(jì)算優(yōu)化方法,加速了圖2中的聚合距離計(jì)算引擎,這些優(yōu)化方法包括:
[0061]3.2.1針對聚合函數(shù)為最小值函數(shù)的情況,利用樹剪枝的思想,只需要從安全區(qū)域表中查得離更新點(diǎn)所在邊的兩頂點(diǎn)路網(wǎng)距離最近的查詢點(diǎn),便可得出更新點(diǎn)的聚合距離;
[0062]3.2.2針對聚合函數(shù)求和函數(shù)和最大值函數(shù)的情況,采用分類法對查詢點(diǎn)進(jìn)行分類;假更新點(diǎn)位于邊(nx,ny)上,nx,ny為路網(wǎng)邊的兩頂點(diǎn),根據(jù)查詢點(diǎn)到更新點(diǎn)的最短路徑是經(jīng)過nx還是ny,可以將查詢點(diǎn)分為以下三類:
[0063]3.2.2a將到更新點(diǎn)的最短路徑只能經(jīng)過nx的查詢點(diǎn)歸為第一類;
[0064]3.2.2b將到更新點(diǎn)的最短路徑只能經(jīng)過ny的查詢點(diǎn)歸為第二類;
[0065]3.2.2c將到更新點(diǎn)的最短路徑既能經(jīng)過nx,又能經(jīng)過ny的查詢點(diǎn)歸為第三類;
[0066]上述對查詢點(diǎn)進(jìn)行歸類預(yù)處理的方法,節(jié)省了更新點(diǎn)聚合計(jì)算距離過程中的很多比較操作,從而極大地減少了距離計(jì)算代價(jià)。
[0067]所述的步驟(4)中利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,具體包括以下四種情況:
[0068]4.1若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之外,則忽略此更新;
[0069]4.2若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之內(nèi);若更新點(diǎn)的聚合距離小于最佳消費(fèi)者集合中最大的聚合距離,則將更新點(diǎn)加入最佳消費(fèi)者集合中,從而替換掉最佳消費(fèi)者集合中有最大聚合距離的對象點(diǎn);
[0070]4.3若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離增大了,則在安全區(qū)域內(nèi)查找是否有聚合距離更小的對象點(diǎn)可以替換掉該更新點(diǎn);
[0071]4.4若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離減小了,則更新該更新點(diǎn)在最佳消費(fèi)者集合中的聚合距離;
[0072]調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合是根據(jù)當(dāng)前最佳消費(fèi)者集合和擴(kuò)張半徑來調(diào)整安全區(qū)域?qū)崿F(xiàn)的;如圖2中聚合最近鄰最佳消費(fèi)者集合調(diào)整引擎所示,其方式在于;若當(dāng)前最佳消費(fèi)者集合中的最大聚合距離大于擴(kuò)張半徑,則繼續(xù)擴(kuò)張路網(wǎng)直至最佳消費(fèi)者集合中的最大聚合距離與擴(kuò)張半徑相等,從而調(diào)整了安全區(qū)域與最佳消費(fèi)者集合。
[0073]所述的步驟(5)中根據(jù)商家請求,終止最佳消費(fèi)者查找是根據(jù)商家的請求類型來實(shí)現(xiàn)的;商家可以發(fā)出兩種類型的請求,具體是由圖2中基于路網(wǎng)的聚合最近鄰查詢引擎實(shí)現(xiàn):
[0074]5.1繼續(xù)查詢請求,若收到此類請求則返回至步驟(3)繼續(xù)執(zhí)行;
[0075]5.2終止查找請求,若收到此類請求則停止查找,結(jié)束最佳消費(fèi)者的查找。
[0076]本說明書實(shí)施例所述的內(nèi)容僅僅是對發(fā)明構(gòu)思的實(shí)現(xiàn)形式的列舉,本發(fā)明的保護(hù)范圍不應(yīng)當(dāng)被視為僅限于實(shí)施例所陳述的具體形式,本發(fā)明的保護(hù)范圍也及于本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明構(gòu)思所能夠想到的等同技術(shù)手段。
【權(quán)利要求】
1.基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于該方法的步驟如下: 步驟(I):收集路網(wǎng)中發(fā)出查詢請求的商家組的位置信息,及其附近消費(fèi)者位置信息,并建立索引; 步驟(2):找到初始時(shí)刻的最佳消費(fèi)者集合,返回給查詢商家;并記錄下一時(shí)刻潛在的最佳消費(fèi)者候選集合; 步驟(3):監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離; 步驟(4):利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,返回給查詢商家;并調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合; 步驟(5):根據(jù)商家請求,終止最佳消費(fèi)者查找。
2.根據(jù)權(quán)利要求1所述的一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于:所述的步驟(I)中商家位置信息和消費(fèi)者的位置信息是通過地理坐標(biāo)來表示的;對于路網(wǎng)的邊和邊頂點(diǎn)利用基于路網(wǎng)的索引模型對其建立索引,同時(shí)將查詢商家及其附近所有消費(fèi)者的地理坐標(biāo)定位到路網(wǎng)邊上,并存儲在文本文件中。
3.根據(jù)權(quán)利要求1所述的一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于:所述的步驟(2)中找到初始時(shí)刻的最佳消費(fèi)者集合是通過擴(kuò)張路網(wǎng),計(jì)算消費(fèi)者到所有商家的聚合距離實(shí)現(xiàn)的;其中聚合距離最小的消費(fèi)者即是最佳消費(fèi)者;下一時(shí)刻潛在的最佳消費(fèi)者候選集合是用安全區(qū)域來記錄的,安全區(qū)域記錄了查詢點(diǎn)與路網(wǎng)結(jié)點(diǎn)之間的最短距離;路網(wǎng)的擴(kuò)張方式是以查詢點(diǎn)為源點(diǎn)依照最短距離優(yōu)先的方式不斷向外擴(kuò)張;擴(kuò)張過程中遇到的兩類點(diǎn)包括: 2.1路網(wǎng)結(jié)點(diǎn),當(dāng)遇到該類點(diǎn)時(shí),首先將查詢點(diǎn)和該類結(jié)點(diǎn)的路網(wǎng)距離記錄在安全區(qū)域表中,然后記錄下與該路網(wǎng)結(jié)點(diǎn)相鄰接的所有路網(wǎng)結(jié)點(diǎn),作為下一步路網(wǎng)擴(kuò)張的依據(jù); 2.2對象點(diǎn),即位于路網(wǎng)邊上的消費(fèi)者,當(dāng)遇到該類點(diǎn)時(shí),檢查該對象點(diǎn)是否已經(jīng)被所有查詢點(diǎn)擴(kuò)張到;若是,則計(jì)算出該對象點(diǎn)的聚合距離,并將其加入最佳消費(fèi)者集合中,該操作有可能引起最佳消費(fèi)者集合的更新; 擴(kuò)張的停止條件是當(dāng)前的擴(kuò)張半徑的大小超過了最佳消費(fèi)者集合中的最大聚合距離值,針對不同的聚合函數(shù),可以采用不同的剪枝策略讓擴(kuò)張過程提前終止,這些剪枝策略包括: 2.a三角不等式剪枝,這是針對聚合函數(shù)為求和函數(shù)提出的一種剪枝策略,利用了求和函數(shù)公式的特性和三解不等式的性質(zhì),估計(jì)出當(dāng)前擴(kuò)張到的路網(wǎng)結(jié)點(diǎn)到所有查詢點(diǎn)的聚合距離作為該結(jié)點(diǎn)的聚合距離下界值;當(dāng)該估計(jì)值超過最佳消費(fèi)者集合中的最大聚合距離值時(shí),可以提前終止擴(kuò)張; 2.b樹剪枝,這是針對聚合函數(shù)為最小值函數(shù)提出的一種剪枝策略,利用了最小值函數(shù)求解公式的特性,對于任意一個路網(wǎng)結(jié)點(diǎn),只需記錄下離它最近的查詢點(diǎn)的路網(wǎng)距離,就可以計(jì)算出落在以該結(jié)點(diǎn)為頂點(diǎn)的所有邊上的對象點(diǎn)的聚合距離。
4.根據(jù)權(quán)利要求1所述的一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于:所述的步驟(3)中監(jiān)測消費(fèi)者位置信息,找出位置發(fā)生變化的消費(fèi)者并更新其聚合距離是通過系統(tǒng)自動檢測實(shí)現(xiàn)的;消費(fèi)者位置發(fā)生更新是因?yàn)橄M(fèi)者是可以沿著路網(wǎng)以一定的速度運(yùn)動和方向運(yùn)動的,消費(fèi)者可以在任意時(shí)刻向服務(wù)系統(tǒng)提交自己的位置信息;當(dāng)服務(wù)系統(tǒng)檢測到消費(fèi)者的位置發(fā)生變化時(shí),需要根據(jù)聚合距離計(jì)算公式重新計(jì)算其聚合距離;發(fā)生位置更新的消費(fèi)者為更新點(diǎn),計(jì)算更新點(diǎn)的聚合距離方式包括以下步驟: 3.1定位該更新點(diǎn)的位置,即獲取該更新點(diǎn)所在的路網(wǎng)邊的信息; 3.2利用安全區(qū)域,得出更新點(diǎn)所在路網(wǎng)邊的兩個頂點(diǎn)到各查詢點(diǎn)的路網(wǎng)距離信息,根據(jù)這些信息以及該更新點(diǎn)到兩個頂點(diǎn)之間的距離,直接計(jì)算出該更新點(diǎn)的聚合距離; 針對不同的聚合函數(shù),可以有不同更新點(diǎn)的聚合距離計(jì)算優(yōu)化方法,這些優(yōu)化方法包括: 3.2.1針對聚合函數(shù)為最小值函數(shù)的情況,利用樹剪枝的思想,只需要從安全區(qū)域表中查得離更新點(diǎn)所在邊的兩頂點(diǎn)路網(wǎng)距離最近的查詢點(diǎn),便可得出更新點(diǎn)的聚合距離; 3.2.2針對聚合函數(shù)求和函數(shù)和最大值函數(shù)的情況,采用分類法對查詢點(diǎn)進(jìn)行分類;假更新點(diǎn)位于邊(nx,ny)上,nx,ny為路網(wǎng)邊的兩頂點(diǎn),根據(jù)查詢點(diǎn)到更新點(diǎn)的最短路徑是經(jīng)過nx還是ny,可以將查詢點(diǎn)分為以下三類: 3.2.2a將到更新點(diǎn)的最短路徑只能經(jīng)過nx的查詢點(diǎn)歸為第一類; 3.2.2b將到更新點(diǎn)的最短路徑只能經(jīng)過ny的查詢點(diǎn)歸為第二類; 3.2.2c將到更新點(diǎn)的最短路徑既能經(jīng)過nx,又能經(jīng)過ny的查詢點(diǎn)歸為第三類; 上述對查詢點(diǎn)進(jìn)行歸類預(yù)處理的方法,節(jié)省了更新點(diǎn)聚合計(jì)算距離過程中的很多比較操作,從而極大地減少了距離計(jì)算代價(jià)。
5.根據(jù)權(quán)利要求1所述的一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于:所述的步驟(4)中利用步驟(3)所得到的更新聚合距離,更新最佳消費(fèi)者集合,具體包括以下四種情況: 4.1若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之外,則忽略此更新; 4.2若更新點(diǎn)不在最佳消費(fèi)者集合中,并且該更新點(diǎn)位于安全區(qū)域之內(nèi);若更新點(diǎn)的聚合距離小于最佳消費(fèi)者集合中最大的聚合距離,則將更新點(diǎn)加入最佳消費(fèi)者集合中,從而替換掉最佳消費(fèi)者集合中有最大聚合距離的對象點(diǎn); 4.3若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離增大了,則在安全區(qū)域內(nèi)查找是否有聚合距離更小的對象點(diǎn)可以替換掉該更新點(diǎn); 4.4若更新點(diǎn)在最佳消費(fèi)者集合中,并且該更新點(diǎn)的聚合距離減小了,則更新該更新點(diǎn)在最佳消費(fèi)者集合中的聚合距離; 調(diào)整下一時(shí)刻潛在的最佳消費(fèi)者候選集合是根據(jù)當(dāng)前最佳消費(fèi)者集合和擴(kuò)張半徑來調(diào)整安全區(qū)域?qū)崿F(xiàn)的;若當(dāng)前最佳消費(fèi)者集合中的最大聚合距離大于擴(kuò)張半徑,則繼續(xù)擴(kuò)張路網(wǎng)直至最佳消費(fèi)者集合中的最大聚合距離與擴(kuò)張半徑相等,從而調(diào)整了安全區(qū)域與最佳消費(fèi)者集合。
6.根據(jù)權(quán)利要求1所述的一種基于路網(wǎng)連續(xù)聚合最近鄰查詢的最佳消費(fèi)者實(shí)時(shí)查找方法,其特征在于:所述的步驟(5)中根據(jù)商家請求,終止最佳消費(fèi)者查找是根據(jù)商家的請求類型來實(shí)現(xiàn)的;商家可以發(fā)出兩種類型的請求: . 5.1繼續(xù)查詢請求,若收到此類請求則返回至步驟(3)繼續(xù)執(zhí)行; . 5.2終止查找請求,若收到此類請求則停止查找,結(jié)束最佳消費(fèi)者的查找。
【文檔編號】G06F17/30GK104408117SQ201410690454
【公開日】2015年3月11日 申請日期:2014年11月26日 優(yōu)先權(quán)日:2014年11月26日
【發(fā)明者】高云君, 牟黎, 柳晴 申請人:浙江大學(xué)