一種基于團(tuán)的大規(guī)模圖最短距離索引方法
【專利摘要】本發(fā)明公開了一種基于團(tuán)的大規(guī)模圖最短距離索引方法。伴隨著大數(shù)據(jù)時代的到來,圖處理面臨的數(shù)據(jù)規(guī)模越來越大,使得傳統(tǒng)的距離算法(Dijkstra,BFS,Floyd)因為內(nèi)存瓶頸變得不再適用,同時在在線應(yīng)用中,對響應(yīng)時間要求高,傳統(tǒng)算法會因運算時間過長而無法滿足實時響應(yīng)的需求。為滿足現(xiàn)實應(yīng)用中對距離查詢的實時響應(yīng)要求,基于索引的大規(guī)模圖距離查詢算法得以提出。本發(fā)明提出的是一種針對無向無權(quán)稠密圖的距離索引。在無向無權(quán)圖中,特別是強關(guān)系圖中,例如社交網(wǎng)絡(luò),通信網(wǎng)絡(luò)中存在大量全連通子圖(又被稱為團(tuán))。本發(fā)明提出的索引是一種基于團(tuán)的索引,同其他索引比較可有效壓縮索引大小。
【專利說明】
一種基于團(tuán)的大規(guī)模圖最短距離索引方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于圖算法技術(shù)領(lǐng)域,更具體地,涉及一種基于團(tuán)的大規(guī)模圖最短距離索 引方法。
【背景技術(shù)】
[0002] 圖數(shù)據(jù)被廣泛用于刻畫現(xiàn)實世界的各種實體關(guān)系,例如社交網(wǎng)路,語義網(wǎng)絡(luò),公路 網(wǎng)路等等。許多應(yīng)用問題最終可以抽象成圖問題,最短距離(最短路徑)作為圖基礎(chǔ)而重要 的問題之一,有著廣泛的應(yīng)用背景,例如上文感知的web搜索,智能導(dǎo)航,LBS,社交網(wǎng)絡(luò)的分 析等。
[0003] 伴隨著大數(shù)據(jù)時代的到來,圖處理面臨的數(shù)據(jù)規(guī)模越來越大,使得傳統(tǒng)的距離算 法(0。1^杜&,8?5^1 〇7(1)因為內(nèi)存瓶頸變得不再適用,同時在在線應(yīng)用中,對響應(yīng)時間要 求高,傳統(tǒng)算法會因運算時間過長而無法滿足實時響應(yīng)的需求。為縮短距離查詢時間,基于 索引的距離查詢算法應(yīng)運而生。基于索引的查詢算法,采用的是空間換時間思想,預(yù)計算圖 中部分頂點之間最短距離并將其組織成合適的索引,利用這些索引的組合可以計算出兩點 間的距離。
[0004] 根據(jù)圖距離查詢算法對處理數(shù)據(jù)的精度區(qū)分,可以將算法分為精確和非精確兩 類。精確算法可以得出任意兩點的實際的最短距離,通常建立的索引比較復(fù)雜,占用的空間 也比較大,而非精確算法得出的兩點距離是個估值,準(zhǔn)確度難以保證,特別是兩個相距較近 的點更容易產(chǎn)生誤差,但是非精確算法建立的索引占用的空間較小,有更好的可擴展性。
【發(fā)明內(nèi)容】
[0005] 針對無向無權(quán)稠密圖,本發(fā)明提出了一種精確距離索引。本發(fā)明首先利用獨立集 對圖中的頂點進(jìn)行分層,然后自頂向下建立每個頂點的距離索引。針對精確索引通常占用 空間較大,本發(fā)明利用稠密圖的特有屬性進(jìn)行索引壓縮。在一些種類的稠密圖,例如社交網(wǎng) 絡(luò),通信網(wǎng)絡(luò)中存在著大量的完全連通子圖(圖論中稱為團(tuán)),利用這些團(tuán)信息可以壓縮表 示距離索引,達(dá)到減小索引占用空間和加快查詢速度的目的。
[0006] 本發(fā)明提供了一種基于團(tuán)的大圖最短距離索引方法,該方法針對無向無權(quán)稠密圖 計算其距離索引,所述方法包括以下步驟:
[0007] (1)對圖數(shù)據(jù)進(jìn)行清理工作,去除自環(huán)和冗余邊,將圖數(shù)據(jù)以鄰接表形式存儲; [0008] (2)利用獨立集對圖的頂點進(jìn)行分層,每層獨立集都是由若干個互不相連的頂點 構(gòu)成的頂點子集,最終每個頂點被劃歸到某一特定獨立集,所有獨立集的并集組成圖的所 有頂點;
[0009] (3)原圖與步驟(2)中生成的所有輔助邊構(gòu)成一個擴充圖G,自頂層頂點(rank值高 的點)向下層頂點(rank值低的點)建立距離索引,每個頂點記錄到其祖先節(jié)點間的距離;
[0010] (4)對每個頂點的距離索引,可將其中屬于同一個團(tuán)的頂點距離信息聚合壓縮。
[0011] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
[0012] (1)減小索引大小:原有的精確距離索引方法針對所有類型的圖,未對特定類型的 圖進(jìn)行優(yōu)化;本發(fā)明利用稠密圖中的團(tuán)信息對索引進(jìn)行壓縮,可有效減小索引大小。
[0013] (2)提高查詢速度:一方面查詢時間和索引大小成線性關(guān)系,故索引減小后,查詢 速度自然會有所提升;另一方面,壓縮的索引可以進(jìn)行位運算,進(jìn)一步提高了速度。
【附圖說明】
[0014] 圖1是本發(fā)明的總體流程圖;
[0015] 圖2是步驟⑵頂點分層的細(xì)化流程圖。
【具體實施方式】
[0016] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要 彼此之間未構(gòu)成沖突就可以相互組合。
[0017] 圖1所示為本發(fā)明基于團(tuán)的大圖最短距離索引方法流程圖,具體包括以下步驟:
[0018] (1)對圖數(shù)據(jù)進(jìn)行清理工作,去除自環(huán)和冗余邊,將圖數(shù)據(jù)以鄰接表形式存儲;
[0019] (2)利用獨立集對圖的頂點進(jìn)行分層,每層獨立集都是由若干個互不相連的頂點 構(gòu)成的頂點子集,最終每個頂點被劃歸到某一特定獨立集,所有獨立集的并集組成圖的所 有頂點;
[0020] (3)原圖與步驟(2)中生成的所有輔助邊構(gòu)成一個擴充圖G,自頂層頂點(rank值高 的點)向下層頂點(rank值低的點)建立距離索引,每個頂點記錄到其祖先節(jié)點間的距離; [0021] (4)對每個頂點的距離索引,可將其中屬于同一個團(tuán)的頂點距離信息聚合壓縮。
[0022] 如圖2所示,對圖1步驟(2)詳細(xì)步驟如下:
[0023] (2.1)對圖中所有剩余頂點按照頂點度數(shù)進(jìn)行排序;
[0024] (2.2)假設(shè)i代表是第幾次迭代,&代表獨立集,仏代表移除Sh后的圖;按照頂點的 度數(shù)由小到大選出一個盡可能大的獨立集(互不相連的頂點組成的集合)S 1;
[0025] (2.3)對于S#的每一個頂點v,從圖Gp沖移除v及其關(guān)聯(lián)的邊,假設(shè)其兩個鄰接 點為U,w,若邊<U,W>不存在,貝lj添加輔助邊<u,w>,且其權(quán)值等于邊<u, V〉與邊<v,w>的權(quán)值 之和;若邊〈U,W>存在且權(quán)值大于〈U,V〉與〈V,W>的權(quán)值之和,更新邊〈U,W>的權(quán)值為〈U,V〉與 <v,w>的權(quán)值之和;
[0026] (2-4)重復(fù)(2-1),(2-2),(2-3)的步驟直到Gi剩余一個頂點,此時所有頂點都被分 害_若干獨立集中,即E USfV,戈若頂點屬于Si,則其rank值為i,最終每 個頂點都有確定的rank值。
[0027] 對圖1步驟(3)進(jìn)行詳細(xì)步驟如下:
[0028] (3_1)初始化集合1^(>),將(>,0),(¥,16(¥,¥))并入1(>),其中¥為¥的鄰接點,1〇(¥, V )為邊〈W,V〉的權(quán)值;
[0029] (3-2)假設(shè)頂點抑]^的最大值為11,任意兩點1,7的距離為(1181:(1,7),¥£51(1=11- 1,h_2,? ? ?,2,l),uGSj(j = i+l,? ? ?,h),(u,dist(u,v))GL(v),(w,dist(w,u))GL(u),若 L(v)中未包含(《,虹5^(?^)),則將(《,虹5^(?,11)+(115^(11^))插入到集合1(4中;否則,更 新dist(w,v)的值為dist(W,V),虹81:(¥,11)+(1181:(11,¥)兩者中的較小者;
[0030]優(yōu)選地,在自頂向下的索引構(gòu)建過程中,每個頂點的索引記錄的是其到其祖先頂 點的距離;在擴充圖G',兩個頂點u,w間若存在序列<U = V1,V2,. . .,vn = w>且rank(vi)〈rank (V2)〈...〈rank(vn),貝ijw稱為頂點u的祖先。
[0031] 對圖1步驟(4)進(jìn)行詳細(xì)步驟如下:
[0032] (4-1)對于頂點¥的索弓丨1(>),假設(shè)(11,(1181:(11,¥))包含在1(>)中,掃描其余包含在 1^<>)中的條目(¥,(1181:(¥,¥)),若11,'\¥在同一個團(tuán)中,將(¥,(1181:(¥,¥))從1(>)中移除,轉(zhuǎn)向 (4-2);
[0033] (4-2)若頂點1!,《間的距離比u,v的距離小1,則將w放入集合中,否則放入集 合;其中i = 0,-1)表示與頂點U在同一個團(tuán)中的頂點集合;
[0034] (4-3)形成一條聚合團(tuán)信息的壓縮索引(11,虹#(1^),6::1州,(^如);
[0035] (4_4)重復(fù)步驟(4_1),(4_2),(4_3)直至掃描完所有V中頂點。
[0036]優(yōu)選地,C:/v) (_/=〇, -1)用機器字壓縮表示,即集合中的元素用機器字中的某一個 bit表示,若在集合中,將相應(yīng)bit置1,否則置0。
[0037]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以 限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含 在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1. 一種基于團(tuán)的大規(guī)模圖最短距離索引方法,其特征在于,包含以下步驟: (1) 對原圖數(shù)據(jù)進(jìn)行清理,去除自環(huán)和冗余邊,將圖數(shù)據(jù)以鄰接表形式存儲; (2) 利用獨立集對圖的頂點進(jìn)行分層,每層獨立集都是由若干個互不相連的頂點構(gòu)成 的頂點子集,最終每個頂點被劃歸到某一特定獨立集,所有獨立集的并集組成圖的所有頂 占. (3) 將原圖與步驟(2)中生成的所有輔助邊構(gòu)成一個擴充圖G,自頂層頂點向下層頂點 建立距離索引,每個頂點記錄到其祖先節(jié)點間的距離,其中頂層頂點是指rank值高的點,下 層頂點是指rank值低的點; (4) 對每個頂點的距離索引,將其中屬于同一個團(tuán)的頂點距離信息聚合壓縮。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟(2)具體包括如下子步驟: (2.1) 對圖中所有剩余頂點按照頂點度數(shù)進(jìn)行排序; (2.2) 假設(shè)i代表是第幾次迭代,S1代表獨立集,仏代表移除Sh后的圖;按照頂點的度數(shù) 由小到大選出一個盡可能大的獨立集(互不相連的頂點組成的集合)S 1; (2.3) 對于S1*的每一個頂點V,從圖Gh中移除V及其關(guān)聯(lián)的邊,假設(shè)其兩個鄰接點為u 和W,若邊〈U,W>不存在,則添加輔助邊〈U,W>,且其權(quán)值等于邊〈U,V〉與邊〈V,w>的權(quán)值之和; 若邊〈U,W>存在且權(quán)值大于〈U,V〉與〈V,W>的權(quán)值之和,更新邊〈U,W>的權(quán)值為〈U,V〉與〈V,w> 的權(quán)值之和; (2.4) 從Gi-i移除Si中所有節(jié)點后得到Gi,重復(fù)(2.1),(2.2)和(2.3)的步驟直到Gi剩余 一個頂點,此時所有頂點都被分割到若干獨立集中,即Σ U S1 = V,叉Π & = 0(/' * ./);若頂 點屬于Si,則其rank值為i,最終每個頂點都有確定的rank值。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟(3)具體包括如下子步驟: (3.1) 初始化頂點¥的索弓丨1^(>),將(>,0),(¥,¥〇(¥,¥))并入1^(>),其中¥為¥的鄰接點,呢 (3.2) 假設(shè)頂點抑111^的最大值為11,任意兩點1,7的距離為(1181:(1,7),¥£51(1=11-1,11-2, · · ·,2,l),ueSj(j = i+l,· · ·,h),(u,dist(u,v))eL(v),(w,dist(w,u))eL(u),若L(v) 中未包含(》,(1181:(¥,¥)),則將(¥,(1181:(¥,11)+(1181:(11,¥))插入到集合]^(>)中 ;否則,更新 虹81:(¥,¥)的值為(1181:(¥,¥),(1181:(¥,11)+(1181:(11,¥)兩者中的較小者。4. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟(3)具體包括如下子步驟: (4.1) 對于頂點V的索引L(v),假設(shè)(u,dist(u, V))包含在L(v)中,掃描其余包含在L(v) 中的條目(W,dist(W,V)),若U,W在同一個團(tuán)中,將(¥,(1181:(¥,¥))從]^(>)中移除,轉(zhuǎn)向 (4.2); (4.2) 若頂點1!,《間的距離比1!^的距離小1,則將《放入集合(:"?中,否則放入集合 cyw ;其中C>:Ki = 〇,-1)表示與頂點U在同一個團(tuán)中的頂點集合; (4.3) 形成一條聚合團(tuán)信息的壓縮索弓丨(11,(1181:(11,¥),〇/:,€^柯); (4.4) 重復(fù)步驟(4.1),(4.2),(4.3)直至掃描完所有V中頂點。5. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于子步驟(3)中,在自頂向下的索引構(gòu)建過 程中,每個頂點的索引記錄的是其到其祖先頂點的距離;在擴充圖G',兩個頂點u,w間若存 在序列〈u = vi,V2, · · ·,vn=w>且rank(vi)〈rank(V2)〈. · .〈rank(vn),則w稱為頂點u的祖先。
【文檔編號】G06F17/30GK105893486SQ201610188131
【公開日】2016年8月24日
【申請日】2016年3月29日
【發(fā)明人】謝夏, 李沛洋, 金海
【申請人】華中科技大學(xué)