專利名稱:使用數(shù)據(jù)結(jié)構(gòu)處理搜索查詢的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理搜索查詢,并且具體地涉及生成用于在互連節(jié)點網(wǎng)絡(luò)中處理查詢的數(shù)據(jù)結(jié)構(gòu)。
背景技術(shù):
存在計算機網(wǎng)絡(luò)典型地包括很大數(shù)目的互連節(jié)點的許多情形。例如Skype的通信網(wǎng)絡(luò)代表用于對等通信的大型社交網(wǎng)絡(luò)。圖1是典型計算機網(wǎng)絡(luò)的一小部分的示意圖。示出的網(wǎng)絡(luò)包括多個節(jié)點Ni。每個節(jié)點可以如圖所示與一個或者多個物理計算機設(shè)備關(guān)聯(lián),例如在節(jié)點Ni的情況下示出了該節(jié)點與移動設(shè)備2、PC 4和平板電腦6關(guān)聯(lián)。每個節(jié)點與 單個用戶關(guān)聯(lián),該用戶在這一情況下可以使用這些計算機設(shè)備中的任何一個來向特定網(wǎng)絡(luò)注冊或者登錄。示出了節(jié)點由連接Ci互連。在物理網(wǎng)絡(luò)的背景中,可以用任何已知的有線或者無線方式實施連接Ci。在與節(jié)點關(guān)聯(lián)的用戶的背景中,連接未必涉及網(wǎng)絡(luò)中的單個物理連接,但是代表與在連接的任一端處的節(jié)點關(guān)聯(lián)的用戶之間的關(guān)系。作為例子,在Skype的情況下,兩個用戶在他們處于彼此的聯(lián)系人列表中的情況下被視為連接。對這樣的網(wǎng)絡(luò)的常見挑戰(zhàn)是允許用戶例如按照姓名搜尋另一用戶并且看見搜索的結(jié)果,這些結(jié)果以它們到他的最短路徑距離的順序排列。類似地,用戶可能希望知道什么聯(lián)系人鏈允許他到達網(wǎng)絡(luò)中的另一用戶。對解決該問題的嘗試已經(jīng)使用分析技術(shù)以便找到在圖形中的給定一對節(jié)點之間的最短路徑。存在有解決這一問題的許多方法?,F(xiàn)有方法可以廣義地分類為精確的和近似的。對于在具有數(shù)以億計的頂點的圖形上執(zhí)行在線查詢,精確方法(如基于Dijkstra遍歷的方法)極其緩慢,該頂點數(shù)目是現(xiàn)代社交網(wǎng)絡(luò)的典型大小。在近似方法之中,用于這一問題的可擴展的算法系列是所謂的基于地標(或者基于略圖)的方法。在這一技術(shù)系列中,選擇地標節(jié)點的固定集并且預(yù)先計算從每個頂點到一些或者所有地標的距離。關(guān)于到地標的距離的知識連同三角不等式一起典型地允許人們在O(k)時間、0(kn)空間內(nèi)計算任何兩個頂點之間的近似距離,其中k是地標數(shù)目并且η是網(wǎng)絡(luò)中的頂點數(shù)目。然后可以原樣使用那些估計或者進一步利用它們作為圖形遍歷或者路由策略的組成成分(component)以便獲得精確的最短路徑。基于地標的方法的一個重要方面是選擇地標的方式——仔細選擇策略可以具有顯著正面效果。已經(jīng)建議了如下策略這些策略依賴于選擇具有高程度、居間-和接近-中心性的地標以及保證在圖形上及其路徑上恰當(dāng)分散地標。參考Potamias 等人的標題為 “Fast Shortest Path Distance Estimation inLarge networks”的論文,該論文發(fā)表于CIKM ’ 09 :2009年美國紐約第18屆信息和知識管理國際會議的會議錄第867-878頁。在該論文中,在不同地標選擇策略之下評估基于地標的距離估計算法。根據(jù)這篇論文,已經(jīng)表明最高程度和接近中心性技術(shù)典型地產(chǎn)生最高精度。雖然基于地標的算法未提供關(guān)于近似質(zhì)量的強理論保障,但是已經(jīng)表明它們在實踐中表現(xiàn)良好從而升級至具有數(shù)以百萬或者甚至數(shù)十億計的邊的圖形,而精度是可接受的并且響應(yīng)時間在每個查詢一秒以下。本發(fā)明的目的是較現(xiàn)有技術(shù)而言提高精度,而用于生成在處理搜索查詢時使用的數(shù)據(jù)結(jié)構(gòu)的計算時間是可接受的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種生成存儲于計算機存儲器中用于在互連節(jié)點網(wǎng)絡(luò)中處理搜索查詢的數(shù)據(jù)結(jié)構(gòu)的方法,其中該方法包括通過以下步驟選擇地標節(jié)點并且在數(shù)據(jù)結(jié)構(gòu)中存儲所選擇的地標節(jié)點從網(wǎng)絡(luò)節(jié)點采樣頂點對的第一樣本;計算每個頂點對的最短路徑,每個最短路徑包括在該頂點對中的每個頂點之間的頂點集;標識比任何其它頂點更經(jīng)常出現(xiàn)于更多最短路徑中的第一地標節(jié)點;從網(wǎng)絡(luò)頂點去除包括第一地標節(jié)點的最短路徑;標識比任何其它剩余頂點出現(xiàn)于更多剩余最短路徑中的第二地標節(jié)點。本發(fā)明還提供一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括在由計算機執(zhí)行時實現(xiàn)上文限定的方法的步驟的程序代碼裝置。數(shù)據(jù)結(jié)構(gòu)在記錄于電子存儲介質(zhì)上并且用在處理搜索查詢時具有適用性。本發(fā)明的另一方面提供一種處理搜索查詢以提供搜索結(jié)果的方法,該方法包括在計算機設(shè)備處以數(shù)字消息的形式接收搜索查詢,該查詢標識源節(jié)點和目標節(jié)點;并且在計算機設(shè)備處執(zhí)行用于生成搜索結(jié)果的應(yīng)用,該應(yīng)用執(zhí)行以下步驟訪問通過上述方法生成的數(shù)據(jù)結(jié)構(gòu),其中每個地標已經(jīng)隨其存儲了父鏈接集形式的最短路徑樹,其中每個父鏈接標識鄰近的頂點節(jié)點;對于每個地標,標識源節(jié)點和目標節(jié)點在通向地標節(jié)點的最短路徑樹中的位置;對于每個地標節(jié)點,使用標識的目標節(jié)點和源節(jié)點的位置生成在源節(jié)點與目標節(jié)點之間的距離的度量;確定具有最短距離的地標;并且提供與該地標的最短路徑樹有關(guān)的搜索結(jié)果。根據(jù)第一技術(shù),通過以下操作生成距離的度量在源節(jié)點與地標節(jié)點之間的最短路徑上計算第一距離;在地標節(jié)點與目標節(jié)點之間的最短路徑上計算第二距離;并且將第一與第二距離求和。根據(jù)第二技術(shù),通過標識在從源節(jié)點和目標節(jié)點到地標節(jié)點的最短路徑樹中的共同祖先節(jié)點來生成距離的度量。在一個版本中,在這之后為以下步驟將從源節(jié)點到共同祖先節(jié)點的第一距離與從共同祖先節(jié)點到目標節(jié)點的第二距離求和。在另一版本中,在這之后為以下步驟標識在源節(jié)點與共同父節(jié)點之間的第一路徑和在共同父節(jié)點與目標節(jié)點之間的第二路徑中的所有節(jié)點對;定位所述對中的作為邊的任何對;標識最短距離的邊;并且使用邊確定在源節(jié)點與目標節(jié)點之間的距離度量。根據(jù)第三技術(shù),通過以下操作生成距離的度量記錄在從源節(jié)點和目標節(jié)點到每個地標節(jié)點的最短路徑樹之間共同的節(jié)點;從源節(jié)點執(zhí)行圖形遍歷(僅遍歷共同記錄的節(jié)點)以更新從源節(jié)點到目標節(jié)點的最短路徑;并且使用更新的最短路徑確定距離的度量。在下文中描述的本發(fā)明實施例提供涉及一種新地標選擇策略的改進,該策略尋求通過所選地標最大化所有最短路徑的覆蓋。在下文中討論的本發(fā)明實施例允許例如在如下圖形上的顯著改進的執(zhí)行時間、例如多于四秒,該圖形具有比2010年2月的Skype圖形快照的邊的十分之一更少的邊和頂點的百分之一更少的頂點。
為了更好地理解本發(fā)明并且示出如何可以將本發(fā)明付諸實踐,現(xiàn)在將通過例子參照如下附圖。
圖1是網(wǎng)絡(luò)的部分的圖。圖2是用于執(zhí)行搜索查詢的系統(tǒng)的框圖。圖3圖示了用于一個地標的最短路徑樹。圖4圖示了用于一個地標的數(shù)據(jù)集。圖5圖示了具有更低共同祖先的最短路徑樹。 圖6圖示了具有邊插入的最短路徑樹。圖7是地標選擇方法的流程圖。圖8是實驗結(jié)果的表。
具體實施例方式圖2是用于處理搜索查詢的系統(tǒng)的示意框圖。系統(tǒng)包括實施兩個部件的計算機設(shè)備20。第一部件22是數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是以如這里進一步描述的圖形形式保持數(shù)據(jù)的存儲器或者其它形式的計算機存儲庫。第二部件是訪問數(shù)據(jù)結(jié)構(gòu)22并且使用它處理搜索查詢的處理功能(function)24。在操作中,計算機設(shè)備20接收數(shù)字消息形式的查詢26,并且計算機設(shè)備20操作以生成結(jié)果28。該結(jié)果可以由用戶結(jié)果功能(function) 30以多個不同方式利用。例如用戶結(jié)果功能30可以是將其它輸入與結(jié)果28 —起接收并且向用戶生成搜索結(jié)果的搜索功能??商娲?,用戶結(jié)果功能30可以是向用戶直接顯示結(jié)果28的顯示器。每個部件22、24可以由處理器和存儲器實施。將容易理解單個處理器和單個存儲器可以用來提供兩個部件,或者這些部件可以由分開的處理和分開的存儲器提供。在第一組件中,由處理器22a執(zhí)行的代碼生成和維持數(shù)據(jù)結(jié)構(gòu)22,并且如后文將更完全描述的那樣在第二部件中由處理器執(zhí)行的代碼處理搜索查詢。計算機設(shè)備20接收來自用戶的查詢26。用戶可以將查詢輸入到通過任何已知輸入手段將他與之關(guān)聯(lián)的物理設(shè)備之一中。通過任何傳輸機制以數(shù)字消息的形式向計算機設(shè)備20供應(yīng)查詢。例如當(dāng)用戶與客戶端終端關(guān)聯(lián)時,可以通過因特網(wǎng)向?qū)嵤┯嬎銠C設(shè)備20的服務(wù)器供應(yīng)查詢。可替代地,可以在客戶端終端處本地處置查詢。如將在下文中變得更清楚的那樣,查詢包括源節(jié)點和目標節(jié)點的標識符,該源節(jié)點一般是與輸入查詢的用戶關(guān)聯(lián)的節(jié)點,該目標節(jié)點將是查詢的對象。較現(xiàn)有技術(shù)而言的改進源于選擇地標。提出“貪婪的”方法以選擇提供頂點對的隨機樣本中的所有最短路徑的最佳覆蓋的這些地標。在描述本發(fā)明之前,將首先描述基于地標的距離估計技術(shù)。基本定義
令A(yù)(KA)表示具有/ =|Κ|個頂點和個邊的圖形。為了簡化說明,我們將考慮無方向非加權(quán)圖形,盡管該方法可以容易推廣以便也適應(yīng)加權(quán)有方向圖形。在兩個頂點XjeV之間的長度為7的路徑被定義為序列\(zhòng)廣(^;5 2,…,U),其中fiyy并且((SittlMtfllM2),我們將路徑Ttu的長度7表示為Ι',Ι。兩個路徑\廠認…Λ和UvKU的級聯(lián)是組合路徑…,V)。在頂點·5與 之間的距離dis, t)被定義為在·5與 之間的最短路徑的長度。圖形中的最短路徑距離是度量(metric)并且滿足三角不等式對于任何
φ )5 /( , )+4ια)。( I)
如果存在穿過《的最短路徑pS, ,則上界變成等式。圖形的直徑是圖形中的最短路徑的最大長度。社交網(wǎng)絡(luò)在這方面的重要性質(zhì)是它們的直徑小。頂點的中心性是用來指代圖形內(nèi)的頂點的多個重要性度量的一般術(shù)語。居間中心性對應(yīng)于穿過給定頂點的最短路徑的的平均比例(mean proportion)。接近中心性測量頂點到圖形中所有其他頂點的平均距離。 基于地標的距離估計
在描述改進的地標選擇過程之前,將說明基本的基于地標的距離估計技術(shù)。如公式I中指出的那樣,如果我們固定單個地標節(jié)點u并且預(yù)先計算從這一節(jié)點到圖形中的每個其它頂點K的距離diu, K),我們可以得到針對在任何兩個頂點與t之間的距離d、s, t)的上界近似
cPappfo^ {8, t} = d (s, u) + d (u, I)
如果我們現(xiàn)在選擇A個地標的集合I—,則可以計算潛在更好的近似
du 即ρηκ.. {s, I) = min d,J spprox (s, t)
ueu
在原理上,三角不等式也允許計算關(guān)于距離的下界,但是先前工作指示下界估計不如上界估計那樣精確。在下文中,我們將這一算法稱為地標-基本(LANDMARKS-BASIC)(算法I)。對于非加權(quán)圖形,該算法需要使用k個BFS遍歷來預(yù)先計算距離的OiJm)時間和存儲距離的0(h)空間。在幻時間內(nèi)答復(fù)每個查詢。注意這一方式僅允許我們計算近似距離,而未提供一種用于獲得路徑本身的方式。改進的基于地標的算法最短路徑樹
對上述算法的改進是維持用于每個地標的顯式最短路徑樹(SPT)而不是將到地標的距離簡單地存儲為數(shù)的思想。更準確地說,令PiiMS從頂點K到地標 的任意選擇的最短路徑上的下一頂點。我們將PuM稱為r在《的SPT中的父鏈接(見圖3)。類似于距離,可以以每個地標時間在圖形的BFS遍歷期間以簡單直接方式計算父鏈接。在圖3中,黑箭頭表示父鏈接。虛線是圖形邊,這些邊不是樹的部分。父鏈接的可用性使得我們能夠通過簡單地跟隨對應(yīng)鏈接來恢復(fù)從每個頂點^到每個地標"的精確最短路徑。例如,如果源節(jié)點是~則數(shù)據(jù)集指示pu〖V5=V3 ;pum = V1;pu[V2l = Uo因而它也允許計算最短路徑距離dki, V)(在該情況下為3),并且因此直接應(yīng)用地標-基本算法的思想,而僅有的不同在于每個距離計算現(xiàn)在需要cm個步驟,其中ο是圖形的直徑。隨著社交網(wǎng)絡(luò)圖形直徑趨小,這樣的計算的開銷是較少的。注意這一方法允許除了距離近似之外還獲得在任何兩個頂點之間的實際路徑。圖4示出了數(shù)據(jù)結(jié)構(gòu)22中的用于地標u的數(shù)據(jù)集。將理解針對每個地標保持相似數(shù)據(jù)集。最低共同祖先方法
除了執(zhí)行基本的基于地標的近似之外,SPT的可用性還允許我們顯著改進關(guān)于許多頂點對的距離的上界估計??紤]圖5中描繪的情形并且假設(shè)我們希望近似V5與K8之間的距離。通過應(yīng)用基本技術(shù),我們獲得上界估計然而觀察到一旦我們有顯式最短路徑
我們就可以注意到它們二者穿過6,因此以下估計將導(dǎo)致更好上界
一般而言,無論兩個最短路徑^-和',,何時具有共同頂
點K ^ ,我們都有
d(sj)<d(stv) it/{ vt()<d(s, u)+d{uj),(2)
并且因此如果我們使用r而不是《近似(A i),則我們獲得更嚴密上界。自然地,選擇提供最好的這樣的近似的頂點K是有意義的??梢娺@一頂點是S和 在 的SPT中的最低共同祖先(LCA)。當(dāng)近似K5與K8之間的距離時,我們使用它們的最低共同祖先K3而不是地標《作為參考。這一觀察提供LCA近似方法(距離-LCA,算法2)的基礎(chǔ)。通過將該距離估計代入公式3中,我們獲得具有增加的精度的新算法地標-LCA (LANDMARKS-LCA)。注意也可以平凡地擴展這一算法以返回實際路徑。一種用于理解改進程度的方式是注意到基本算法將僅針對穿過地標頂點的最短路徑提供精確估計。在圖5中,那些僅為連接K2與K1和K3的路徑。然而LCA算法將針對沿著SPT存在的所有最短路徑提供精確答復(fù)并且將典型地有明顯更多那些最短路徑。 地標-BFS
算法地標-基本和地標-LCA將每個地標獨立于其它地標地用于距離近似。這不是對所有可用地標數(shù)據(jù)的最好可能的使用。例如考慮圖6。當(dāng)近似頂點K1與K5之間的距離時,如果我們獨立使用兩個地標,則我們將獲得長度為5的路徑。通過組合兩個子樹,我們可以發(fā)現(xiàn)長度為4的更好路徑。這暗示較先前方法而言的強大改進。為了近似兩個頂點之間的距離,收集從那些頂點到所有地標的所有路徑并且在由那些路徑的并集產(chǎn)生的子圖形上執(zhí)行常見的BFS (或者在加權(quán)圖形的情況下為Dijkstra)遍歷。我們將這一算法稱為地標-BFS (算法3)。對于々個地標,子圖形的大小將少于之姑。因而地標-BFS的存儲器復(fù)雜度為姑)并且時間復(fù)雜度至多為0{k2D2、。通過考慮其它圖形邊(即“捷徑”),在地標-BFS中我們進一步將距離近似改進至3。取捷徑
用r表示和 的最低共同祖先。LCA算法通過\,.與\,的級聯(lián)來近似\,。然而可能發(fā)生由邊直接連接頂點與頂點在這一情況下,可以通過將路徑\>+、%>和\.,級聯(lián)來獲得對 的甚至更短近似。例如在圖5中,邊充當(dāng)WiVjIjflv,的捷徑。如果我們考慮這一個邊,則我們可以將LCA距離估計進一步改進為真正的最短路徑。為了對捷徑定位,我們可以簡單地檢查m,,.中的所有頂點對,并且如果它們中
的一些由邊連接,則找到提供最佳距離估計的邊。可以在I rM%,t中、即至多OCi)2)個步驟完
成這一點。我們將所得距離近似方法稱為距離-SC (算法4)。通過使用公式3中的該上界估計,我們獲得基于地標的算法地標-SC (LANDMARKS-SC)。地標選擇技術(shù)
雖然可以隨機均勻選擇地標,但是實驗已經(jīng)表明選擇具有最高程度或者最低接近中心性的地標典型地保證更好的距離估計,然而表明兩種方法提供相似的精度?,F(xiàn)在描述一種具有提聞的精度的新穎地標選擇技術(shù)。最好覆蓋
當(dāng)?shù)貥恕堵湓趕與 之間的最短路徑上時,它的上界距離估計是精確的。我們說這樣的地標覆蓋對Cs, )。因而最合乎需要的地標集將是覆蓋盡可能多的頂點對的地標集。參照算法4和圖7說明基于采樣的簡單貪婪策略。供應(yīng)(702)代表網(wǎng)絡(luò)的具有V個頂點的圖形G。我們對M個頂點對的集合采樣(704 )并且計算(706,708 )用于每對的精確最短路徑??梢酝ㄟ^任何已知方法如BSF圖形遍歷實現(xiàn)這一計算。作為第一地標,我們選擇(710)存在于樣本的最大數(shù)目的路徑中的頂點、即最流行的頂點。我們從樣本去除(712)該第一地標覆蓋的路徑并且繼續(xù)選擇(通過針對i〈k返回到710)覆蓋大多數(shù)剩余路徑的第二地標作為頂點。以相似方式確定返回(714)的集合{u1-uh}中的后續(xù)地標。在數(shù)據(jù)結(jié)構(gòu)22中存儲地標。遞增更新
如果圖形受到密集的邊插入和刪除,則原先已經(jīng)計算的地標變得過時并且近似性能惡化。因此必須維持地標最新。雖然這可以借助每天或者每小時完全重新計算來實現(xiàn),但是這樣的解決方案在計算上昂貴。另外對于某些應(yīng)用如上文提到的社交搜索,一直維持地標最新可能特別重要。實際上,如果新用戶依賴于社交搜索功能建立他們的最初聯(lián)系人列表,則重要的是添加新聯(lián)系人將立即在隨之產(chǎn)生的搜索排序中得到反映。幸運的是,當(dāng)以具有單指針(父鏈接)的最短路徑樹的形式維持地標時,可以遞增地更新他們以適應(yīng)邊插入或者刪除。已知用于在插入和刪除之下維持SPT的過程,例如見D. Frigori 等人的“Full dynamic algorithms for maintaining shortest path trees,,,該文獻發(fā)表于Journal of Algorithms的2000年11月2日第34卷第251-281頁。在具有小直徑的非加權(quán)圖形的特定情況下,它們是相當(dāng)簡單直接的。作為非正式例子,考慮圖3上呈現(xiàn)的SPT。假設(shè)恰好已經(jīng)向圖形中插入邊權(quán)%}。SPT更新算法將繼續(xù)如下。首先注意新添加的邊提供從V8到地標的比先前可用的路徑更短的路徑。因此必須改變K8的父指針以利用新邊由于從K8到地標的路徑已經(jīng)改進,我們必須遞歸地檢查&的所有鄰居(即&和h)并且校驗將它們的父指針切換到是否將改進它們的通向地標的先前已知的路徑。這對于&和&而言均成立,因此我們設(shè)置Pjv61::v8> Pdv7>vaa針對4和6的所有鄰居,我們再次重復(fù)這一點。發(fā)現(xiàn)沒有新路徑改進,我們完成更新。邊的刪除涉及兩道關(guān)(pass)。再次考慮圖3并且假設(shè)從圖形去除邊{54)。為了 找到^通向地標的新路徑(和新父指針),我們首先檢查它的鄰居和^)。遺憾的是,它 們二者依賴于^以便到達地標,因此它們未提供立即的定位(fix)。使用最佳的可用新路 徑長度(目前為止為00)作為關(guān)鍵詞(key),我們在優(yōu)先級隊列中暫時記錄6。然后我們遞歸 地下降以處理h在SPT中的子代。頂點v5沒有立即定位并且在具有關(guān)鍵詞⑴的優(yōu)先級隊 列中被記錄。然而頂點h可以連接到h從而保持長度為3的通向地標的路徑。因而無需 處理h的子代。在重新連接h之后,我們必須更新它在優(yōu)先級隊列中的鄰居和v5)的 關(guān)鍵詞——長度為4的新潛在路徑好于先前記錄的⑴。這完成第一道關(guān)。在第二道關(guān)中, 我們清空優(yōu)先級隊列從而重建SPT的其余部分。在算法5和6中我們提供更新過程的更正式描述。在理論上,單個更新可以觸發(fā)用于整個圖形的SPT重新計算(例如刪除如下的邊, 該邊是在地標與所有其它節(jié)點之間的橋梁)。然而在實踐中,這樣的情形是罕見的,并且根 據(jù)我們的實驗,為了處理實際Skype網(wǎng)絡(luò)中的單個更新所必需的分攤時間是毫秒級。網(wǎng)絡(luò)
以下是現(xiàn)實世界社交網(wǎng)絡(luò)圖形的例子,這些例子代表在網(wǎng)絡(luò)大小方面的四個不同數(shù)量級。
DBLP。DBLP數(shù)據(jù)集包含計算機科學(xué)出版物的書目信息。每個頂點對應(yīng)于一個作 者。兩個作者在它們已經(jīng)合著至少一個出版物的情況下由邊連接。
Orkut。Orkut是大型社交聯(lián)網(wǎng)網(wǎng)站。它是這樣的圖形,其中每個用戶對應(yīng)于頂 點并且每個用戶到用戶連接是邊。
Twitter。Twitter是微博站點,該站點允許用戶相互追隨從而形成網(wǎng)絡(luò)。
Skype。Skype是用于對等通信的大型社交網(wǎng)絡(luò)。我們認為兩個用戶在他們處于 彼此的聯(lián)系人列表中的情況下由邊連接。在表1中概括這些數(shù)據(jù)集的性質(zhì)。該表示出了頂點數(shù)目|V|、邊數(shù)目|E|、在頂 點之間的平均距離J (關(guān)于樣本頂點對計算的)、近似直徑A、最大連接組件中的頂點分數(shù)
S | /1V |和用于在圖形上執(zhí)行BFS遍歷的平均時間tBFS。
權(quán)利要求
1.一種生成存儲于計算機存儲器中用于在互連節(jié)點網(wǎng)絡(luò)中執(zhí)行搜索查詢時使用的數(shù)據(jù)結(jié)構(gòu)的方法,其中所述方法包括通過以下步驟選擇地標節(jié)點并且在所述數(shù)據(jù)結(jié)構(gòu)中示出所選擇的地標節(jié)點從所述網(wǎng)絡(luò)節(jié)點對頂點對的第一樣本采樣;計算用于每個頂點對的最短路徑,每個最短路徑包括在所述頂點對中的每個頂點之間的頂點集;標識比任何其它頂點更經(jīng)常出現(xiàn)于更多最短路徑中的第一地標節(jié)點;從所述網(wǎng)絡(luò)頂點去除包括所述第一地標節(jié)點的最短路徑;并且標識比任何其它剩余頂點出現(xiàn)于更多剩余最短路徑中的第二地標節(jié)點。
2.根據(jù)權(quán)利要求1所述的方法,包括在所述數(shù)據(jù)結(jié)構(gòu)中與每個地標節(jié)點關(guān)聯(lián)地存儲用于所述網(wǎng)絡(luò)中的每個頂點的頂點數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其中所述頂點數(shù)據(jù)包括從每個頂點到所述地標節(jié)點的距離,或者最短路徑樹。
4.根據(jù)權(quán)利要求3所述的方法,其中所述最短路徑樹是父鏈接集的形式,其中每個父鏈接標識在所述頂點與所述地標節(jié)點之間的所述最短路徑中的鄰近頂點節(jié)點。
5.一種處理搜索查詢以提供搜索結(jié)果的方法,所述方法包括在計算機設(shè)備處接收數(shù)字消息形式的搜索查詢,所述查詢標識源節(jié)點和目標節(jié)點;并且在所述計算機設(shè)備處執(zhí)行用于生成搜索結(jié)果的應(yīng)用,所述應(yīng)用執(zhí)行以下步驟訪問根據(jù)權(quán)利要求1-4中任一方法生成的數(shù)據(jù)結(jié)構(gòu),其中每個地標已經(jīng)隨其存儲了父鏈接集形式的的最短路徑樹,其中每個父鏈接標識鄰近的頂點節(jié)點;對于每個地標,標識所述源節(jié)點和所述目標節(jié)點在通向所述地標節(jié)點的所述最短路徑樹中的位置;對于每個地標節(jié)點,使用所標識的所述目標節(jié)點和所述源節(jié)點的位置生成所述源節(jié)點與所述目標節(jié)點之間的距離的度量;確定具有最短距離的所述地標;以及提供與該地標的所述最短路徑樹有關(guān)的搜索結(jié)果。
6.根據(jù)權(quán)利要求5所述的方法,其中通過以下操作生成所述距離度量(a)計算在所述源節(jié)點與所述地標節(jié)點之間的最短路徑上的第一距離;計算在所述地標節(jié)點與所述目標節(jié)點之間的最短路徑上的第二距離;以及將所述第一與第二距離求和;或者(b)標識在從所述源節(jié)點和所述目標節(jié)點到所述地標節(jié)點的所述最短路徑樹中的共同祖先節(jié)點,以及將從所述源節(jié)點到所述共同祖先節(jié)點的第一距離與從所述共同祖先節(jié)點到所述目標節(jié)點的第二距離求和以生成所述距離度量;或者(c)標識在從所述源節(jié)點和所述目標節(jié)點到所述地標節(jié)點的所述最短路徑樹中的共同祖先節(jié)點;標識在所述源節(jié)點與所述共同祖先節(jié)點之間的第一路徑和在所述共同祖先節(jié)點與所述目標節(jié)點之間的第二路徑中的所有節(jié)點對;對所述對中的作為邊的任何對定位;標識最短距離的所述邊;并且使用所述邊確定在所述源節(jié)點與所述目標節(jié)點之間的距離度量;或者(d)對于每個地標,記錄在從所述源節(jié)點和所述目標節(jié)點到所述地標節(jié)點的所述最短路徑樹之間共同的節(jié)點;從所述源節(jié)點執(zhí)行圖形遍歷,僅遍歷共同記錄的節(jié)點,以更新從所述源節(jié)點到所述目標節(jié)點的最短路徑;以及使用所述更新的最短路徑確定所述距離度量;或者(e)按照使用更新的最短路徑的(b),(c)或(d)的方法。
7.根據(jù)權(quán)利要求5或6所述的方法,其中提供搜索結(jié)果的步驟包括向用戶顯示所述搜索結(jié)果;或者向搜索功能提供所述搜索結(jié)果,所述搜索功能生成在多個搜索結(jié)果之間的比較以按照排列順序提供輸出集。
8.根據(jù)權(quán)利要求5、6或7所述的方法,其中所述搜索結(jié)果包括具有最短距離的所述地標的所述最短路徑樹中的節(jié)點標識符列表;或者針對最短距離的所述地標的所述最短路徑樹中的節(jié)點數(shù)目。
9.一種用于處理搜索查詢以提供搜索結(jié)果的計算機設(shè)備,所述計算機設(shè)備包括第一部件,包括根據(jù)權(quán)利要求1-4中任一方法生成的數(shù)據(jù)結(jié)構(gòu),每個地標節(jié)點已經(jīng)隨其存儲了父鏈接集形式的最短路徑樹,其中每個父鏈接標識在所述數(shù)據(jù)結(jié)構(gòu)中的每個節(jié)點與所述地標節(jié)點之間的最短路徑中的鄰近頂點節(jié)點;以及第二部件,包括被配置成執(zhí)行用于生成搜索結(jié)果的應(yīng)用的處理器,所述應(yīng)用執(zhí)行以下步驟訪問所述數(shù)據(jù)結(jié)構(gòu);針對每個地標,標識所述源節(jié)點和所述目標節(jié)點在通向所述地標節(jié)點的所述最短路徑樹中的位置;針對每個地標,使用所標識的所述目標節(jié)點和所述源節(jié)點的位置生成源節(jié)點與目標節(jié)點之間的距離度量;確定具有最短距離的所述地標;以及提供與該地標的所述最短路徑樹有關(guān)的搜索結(jié)果。
10.一種計算機程序產(chǎn)品,包括在由計算機執(zhí)行時實現(xiàn)方法權(quán)利要求1至4中的任一項的步驟的程序代碼裝置。
全文摘要
本發(fā)明公開了一種生成存儲于計算機存儲器中用于在互連節(jié)點網(wǎng)絡(luò)中執(zhí)行搜索查詢時使用的數(shù)據(jù)結(jié)構(gòu)的方法,其中所述方法包括通過以下步驟選擇地標節(jié)點并且在所述數(shù)據(jù)結(jié)構(gòu)中示出所選擇的地標節(jié)點從所述網(wǎng)絡(luò)節(jié)點對頂點對的第一樣本采樣;計算用于每個頂點對的最短路徑,每個最短路徑包括在所述頂點對中的每個頂點之間的頂點集;標識比任何其它頂點更經(jīng)常出現(xiàn)于更多最短路徑中的第一地標節(jié)點;從所述網(wǎng)絡(luò)頂點去除包括所述第一地標節(jié)點的最短路徑;并且標識比任何其它剩余頂點出現(xiàn)于更多剩余最短路徑中的第二地標節(jié)點。本發(fā)明涉及一種新地標選擇策略的改進,該策略通過所選地標最大化所有最短路徑的覆蓋。
文檔編號G06F17/30GK102999558SQ20121040900
公開日2013年3月27日 申請日期2012年10月24日 優(yōu)先權(quán)日2011年10月24日
發(fā)明者K.特雷特賈科夫, L.加西亞-巴呂洛斯, A.阿馬斯-切爾文特斯, J.維洛, M.G.杜馬斯 申請人:斯凱普公司