W(s,t) =v
[0052] 步驟3. 2)迭代查找,包括以下步驟:
[0053] 步驟3. 2. 1)更新最優(yōu)隊(duì)列,確定關(guān)鍵節(jié)點(diǎn)v和v所在的子路徑(s',t')。
[0054] 步驟3. 2. 2)輔助查詢,確定關(guān)鍵節(jié)點(diǎn)v在最短路徑SP(s',t')上的前后鄰節(jié)點(diǎn) 乂£和vr
[0055] 步驟 3. 2. 3)拆分路徑,將(s',t')拆分為(s',vf)和(vr,t')。
[0056] 步驟3. 2. 4)重復(fù)步驟3. 1中的調(diào)取標(biāo)簽動(dòng)作,在新的子路徑上調(diào)取標(biāo)簽,并得到 新的關(guān)鍵節(jié)點(diǎn)V'和V",直至得到指定個(gè)數(shù)k個(gè)關(guān)鍵節(jié)點(diǎn),結(jié)束本步驟。 實(shí)施例2
[0057] 本實(shí)施例為優(yōu)化的純標(biāo)簽算法,與實(shí)施例1相比,本實(shí)施例在步驟2中采用改進(jìn)型 剪枝標(biāo)簽構(gòu)造,具體包括:
[0058] 步驟2. 1)設(shè)當(dāng)前處理的節(jié)點(diǎn)為u,以u(píng)為根節(jié)點(diǎn)進(jìn)行剪枝Dijkstra搜索,對(duì)搜索 到的每一個(gè)節(jié)點(diǎn)w,保留一個(gè)u-w最短路徑上關(guān)鍵度最高的非端節(jié)點(diǎn)節(jié)點(diǎn)X,即x辛v且 X-7-W〇
[0059] 步驟2. 2)對(duì)所述的節(jié)點(diǎn)對(duì)(u,w)進(jìn)行HL算法查詢,HL算法查詢HLquery(u,w) 能夠返回由當(dāng)前不完整標(biāo)簽得到的節(jié)點(diǎn)對(duì)(u,w)之間的最短距離d(u,w),并將最 短距離d(u,w)與(u,w)的真正最短距離dist(u,w)相較,如果HLquery(u,w)= d(u,w)彡dist(u,w),且有:返回關(guān)鍵節(jié)點(diǎn)集X= {x|x=argmin{d(u,x)+d(x,w)}},存在 x'GX,r(x')彡r(u),則認(rèn)為對(duì)節(jié)點(diǎn)對(duì)(u,w)的最短路徑樹中w的所有后繼節(jié)點(diǎn)z,節(jié)點(diǎn) 對(duì)(u,z)都已被真覆蓋,可將以u(píng)為根節(jié)點(diǎn)的最短路徑樹中的以w為根節(jié)點(diǎn)的子樹剪枝;經(jīng) 過(guò)剪枝,得到縮減的最短路徑樹SPT* (u)。
[0060] 步驟2. 3)對(duì)最短路徑樹SPT* (u)中的節(jié)點(diǎn)添加標(biāo)簽。
[0061] 定義rKey(u,w)是節(jié)點(diǎn)對(duì)(u,w)上關(guān)鍵度最高的非端節(jié)點(diǎn)節(jié)點(diǎn),即rKey(u,w)= x,x=argxGXminr(x),x辛u,w〇
[0062] 所述的添加標(biāo)簽是指:將u添加進(jìn)SPT* (u)中每個(gè)節(jié)點(diǎn)的標(biāo)簽中,將每個(gè) rKey(u,w)添加進(jìn)u和w的相應(yīng)標(biāo)簽中,以保證圖中每個(gè)節(jié)點(diǎn)對(duì)(u,w)都被真覆蓋。
[0063] 所述的真覆蓋定義為:對(duì)于構(gòu)造完成的標(biāo)簽,滿足對(duì)圖中任一個(gè)節(jié)點(diǎn)對(duì)(s,t), s的前向標(biāo)簽Lf(s)和t的逆向標(biāo)簽Lr(t)的交集中都包含了節(jié)點(diǎn)對(duì)(s,t)的最短路徑 SP(s,t)上關(guān)鍵度最高的非端節(jié)點(diǎn)節(jié)點(diǎn)。
[0064] 步驟3、對(duì)完成標(biāo)簽構(gòu)造的圖中的節(jié)點(diǎn)進(jìn)行關(guān)鍵節(jié)點(diǎn)查詢。
[0065] 本實(shí)施例在構(gòu)造節(jié)點(diǎn)u標(biāo)簽時(shí)保證其真覆蓋,因此在路徑拆分時(shí),就不需再進(jìn)行 HL算法查詢,直接求出關(guān)鍵節(jié)點(diǎn)W'(u,v)即可。
[0066] 如圖2所示,本實(shí)施例與實(shí)施例1相比,關(guān)鍵節(jié)點(diǎn)查詢具體包括:
[0067] 步驟3. 1)輸入查詢節(jié)點(diǎn)對(duì)(s,t),調(diào)取s和t的標(biāo)簽,得到非端節(jié)點(diǎn)的關(guān)鍵節(jié)點(diǎn) W'(s,t) =v〇
[0068] 步驟3. 2)迭代查找,包括以下步驟:
[0069] 步驟3. 2. 1)更新最優(yōu)隊(duì)列,確定關(guān)鍵節(jié)點(diǎn)v和v所在的子路徑(s',t')。
[0070] 步驟3. 2. 2)拆分路徑,將(s',t')拆分為(s',v)和(v,t')。
[0071] 步驟3. 2. 3)重復(fù)步驟3. 1中的調(diào)取標(biāo)簽動(dòng)作,在新的子路徑上調(diào)取標(biāo)簽,并得到 新的關(guān)鍵節(jié)點(diǎn)V'和V",直至得到指定個(gè)數(shù)k個(gè)關(guān)鍵節(jié)點(diǎn),結(jié)束本步驟。
[0072] 如圖4所示,對(duì)于圖3所示的簡(jiǎn)單路網(wǎng),若要查詢SP(vl,v5)上的前k= 3個(gè)關(guān)鍵 節(jié)點(diǎn),第一個(gè)迭代中,對(duì)W(vl,v5) =v0,由于v0不是路徑(vl,v5)的端節(jié)點(diǎn),所以直接將 路徑拆分為(vl,v〇)和(v〇,v5),進(jìn)入第二個(gè)迭代;
[0073] 第二個(gè)迭代中,在兩個(gè)子路徑上求取關(guān)鍵節(jié)點(diǎn),W'(vl,v〇) =V4,W'(v〇,V5) =v2。比較v4、v2和尚未被選擇的端節(jié)點(diǎn){vl,v4,v2,v5},由于vl作為子路徑(vl,vO) 的端節(jié)點(diǎn),關(guān)鍵節(jié)點(diǎn)比v4更高,得到第二個(gè)關(guān)鍵節(jié)點(diǎn)vl,路徑被拆分為(vl,v4),(v4,vO), (v0,v5),進(jìn)入第三個(gè)迭代;
[0074]第三個(gè)迭代中,V(V4,vO〕=E!,W'(v〇,V5) =v2,比較{v4,v2},由于 v2〈v4,得到關(guān)鍵節(jié)點(diǎn)v2。至此,確定了前三個(gè)關(guān)鍵節(jié)點(diǎn)vO,vl和v2并返回。查詢結(jié)束。
[0075] 本實(shí)施例采用 9thDIMACS的Rome99、Fs5313、NWs8324、BAYsl5164、Fs52781、 NWslll729、NewYork或BAY的全圖或子圖作為圖,所述的集中式平臺(tái)采用如下配置: Windows8. 1,8 核處理器,Intel(R)Xeon(R)CPUE5 -2643,每個(gè)CPU3. 30GHz,內(nèi)存 64GB,C++ 語(yǔ)言,編譯語(yǔ)言VisualStudio2012〇
[0076] 對(duì)圖的關(guān)鍵度分別采用覆蓋能力和節(jié)點(diǎn)度進(jìn)行定義,節(jié)點(diǎn)度是圖論中一個(gè)常見的 衡量方式,一個(gè)節(jié)點(diǎn)的度等于它的鄰邊個(gè)數(shù)。得到的預(yù)處理結(jié)果如表1和表2所示。
[0077] 表1覆蓋能力作為關(guān)鍵度定義的預(yù)處理結(jié)果
[0078] 表2節(jié)點(diǎn)度作為關(guān)鍵度定義的預(yù)處理結(jié)果
[0079] 由表1和表2可知,以節(jié)點(diǎn)度為排序標(biāo)準(zhǔn)時(shí),排序過(guò)程非常迅速,但構(gòu)造標(biāo)簽效率 比較慢,這是由于節(jié)點(diǎn)度對(duì)標(biāo)簽構(gòu)造算法中剪枝的匹配性不高,因此無(wú)法進(jìn)行針對(duì)性的剪 枝,最終構(gòu)造的標(biāo)簽也比較大,不太適合進(jìn)行關(guān)鍵節(jié)點(diǎn)查詢。而以覆蓋能力作為關(guān)鍵度定 義,排序過(guò)程比較緩慢,因?yàn)闃?gòu)造遍歷多個(gè)節(jié)點(diǎn)的最短路徑樹耗費(fèi)的時(shí)間較長(zhǎng),但是此后以 此排序來(lái)進(jìn)行PL構(gòu)造標(biāo)簽,就較節(jié)點(diǎn)度排序迅速,且構(gòu)造出的標(biāo)簽也較小,更適合在關(guān)鍵 節(jié)點(diǎn)查詢中使用。
[0080] 采用覆蓋能力作為關(guān)鍵度定義,對(duì)圖以現(xiàn)有技術(shù)的基本預(yù)處理和本實(shí)施例采用的 純標(biāo)簽預(yù)處理進(jìn)行比較,結(jié)果如表3所示。
[0081 ] 表3基本預(yù)處理結(jié)果和純標(biāo)簽預(yù)處理結(jié)果
[0082] 由表3可知,純標(biāo)簽預(yù)處理標(biāo)簽構(gòu)造的時(shí)間較基本預(yù)處理長(zhǎng),標(biāo)簽大小也較大。
[0083] 所述的現(xiàn)有技術(shù)采用的算法是將層次標(biāo)簽算法作為關(guān)鍵節(jié)點(diǎn)查詢的預(yù)處理。在預(yù) 處理中,將關(guān)鍵度作為節(jié)點(diǎn)全序,按照傳統(tǒng)方法構(gòu)造滿足覆蓋屬性的層次標(biāo)簽;在查詢中, 通過(guò)不斷調(diào)取標(biāo)簽,并遞歸進(jìn)行路徑拆分,即可得到指定數(shù)量的關(guān)鍵節(jié)點(diǎn)。
[0084] 指定k= 500,對(duì)每個(gè)實(shí)驗(yàn)圖隨機(jī)生成1000個(gè)最短路徑的關(guān)鍵節(jié)點(diǎn)查詢,取平均查 詢時(shí)間作為關(guān)鍵節(jié)點(diǎn)查詢時(shí)間,采用現(xiàn)有技術(shù)的基本關(guān)鍵節(jié)點(diǎn)查詢和本實(shí)施例的純標(biāo)簽關(guān) 鍵節(jié)點(diǎn)查詢結(jié)果如表4所示。
[0085] 表4k= 500時(shí)的基本關(guān)鍵節(jié)點(diǎn)查詢和純標(biāo)簽關(guān)鍵節(jié)點(diǎn)查詢效率
[0086] 指定k= 20,基本關(guān)鍵節(jié)點(diǎn)查詢和純標(biāo)簽關(guān)鍵節(jié)點(diǎn)查詢效率如圖5所示。
[0087] 由表4和圖5可知,純標(biāo)簽關(guān)鍵節(jié)點(diǎn)查詢較基本關(guān)鍵節(jié)點(diǎn)查詢省去了HL輔助查詢 的時(shí)間,效率有$父為明顯的提尚。
[0088] 對(duì)所述的實(shí)驗(yàn)圖隨機(jī)生成1000個(gè)查詢節(jié)點(diǎn)對(duì),指定不同的k值,返回相同數(shù)量的 關(guān)鍵節(jié)點(diǎn),基本關(guān)鍵節(jié)點(diǎn)查詢和純標(biāo)簽關(guān)鍵節(jié)點(diǎn)查詢效率如圖6 - 11所示。
[0089] 對(duì)圖6 - 11分析可知,初始時(shí),查詢時(shí)間隨著關(guān)鍵節(jié)點(diǎn)個(gè)數(shù)k的增加而線性增加, 因?yàn)殡S著需要查找的關(guān)鍵節(jié)點(diǎn)個(gè)數(shù)越多,需要進(jìn)行的標(biāo)簽調(diào)取和路徑拆分次數(shù)就越多;在k值到達(dá)一定值時(shí),曲線趨于平緩,這是由于路網(wǎng)中遍歷節(jié)點(diǎn)數(shù)大于k的最短路徑數(shù)量逐漸 減少,因此,此時(shí)的關(guān)鍵節(jié)點(diǎn)查詢相當(dāng)于返回完整的最短路徑;此外,隨著需要關(guān)鍵節(jié)點(diǎn)個(gè) 數(shù)的增加,優(yōu)化效果也逐漸增加,這是由于最短路徑上中間關(guān)鍵節(jié)點(diǎn)的越多,在基本關(guān)鍵節(jié) 點(diǎn)查詢中需要進(jìn)行的HL輔助查詢就越多,相應(yīng)的純標(biāo)簽算法節(jié)省的時(shí)間也就越多。
【主權(quán)項(xiàng)】
1. 一種基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,其特征在于,通過(guò)在集中 式平臺(tái)上對(duì)圖中的所有節(jié)點(diǎn)按照關(guān)鍵度由高到低進(jìn)行: a) 剪枝標(biāo)簽構(gòu)造,對(duì)應(yīng)得到每個(gè)節(jié)點(diǎn)的滿足覆蓋性質(zhì)的層次標(biāo)簽,或者是 b) 改進(jìn)型剪枝標(biāo)簽構(gòu)造對(duì)應(yīng)得到每個(gè)節(jié)點(diǎn)的滿足真覆蓋性質(zhì)的層次標(biāo)簽, 然后通過(guò)任意節(jié)點(diǎn)對(duì)間的最短路徑關(guān)鍵節(jié)點(diǎn)查詢,返回最短路徑上指定個(gè)數(shù)的關(guān)鍵節(jié) 點(diǎn)。2. 根據(jù)權(quán)利要求1所述的基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,其特征 是,所述的剪枝標(biāo)簽構(gòu)造是指:對(duì)圖中的每個(gè)節(jié)點(diǎn)進(jìn)行剪枝Di jkstra搜索和HL算法查詢, 得到滿足覆蓋性質(zhì)的層次標(biāo)簽; 所述的覆蓋性質(zhì)是指:對(duì)任意一對(duì)節(jié)點(diǎn)對(duì)<s,t>,其標(biāo)簽Lf (s)和Lr (t)的交集包含該 節(jié)點(diǎn)對(duì)之間最短路徑SP (s, t)上關(guān)鍵度最高的節(jié)點(diǎn)。3. 根據(jù)權(quán)利要求1所述的基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,其特征 是,所述的改進(jìn)型剪枝標(biāo)簽構(gòu)造是指:通過(guò)修改標(biāo)簽構(gòu)造方式,使其滿足真覆蓋性質(zhì)以進(jìn)一 步提高查詢時(shí)的效率; 所述的真覆蓋性質(zhì)是指:對(duì)任意一對(duì)節(jié)點(diǎn)對(duì)<s,t>,其標(biāo)簽Lf (s)和Lr (t)的交集包含 最短路徑SP (s,t)上關(guān)鍵度最高的非端節(jié)點(diǎn)節(jié)點(diǎn)。4. 根據(jù)權(quán)利要求1所述的基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,其特 征是,所述的最短路徑關(guān)鍵節(jié)點(diǎn)查詢,通過(guò)輸入查詢節(jié)點(diǎn)對(duì),經(jīng)過(guò)迭代地進(jìn)行:調(diào)取標(biāo)簽、更 新優(yōu)先隊(duì)列并進(jìn)行路徑拆分的過(guò)程,查找最短路徑中的關(guān)鍵節(jié)點(diǎn)并返回指定個(gè)數(shù)的關(guān)鍵節(jié) 點(diǎn)。5. 根據(jù)權(quán)利要求4所述的基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,其特征 是,針對(duì)剪枝標(biāo)簽構(gòu)造的層次標(biāo)簽,其拆分路徑的具體操作為,將包含關(guān)鍵節(jié)點(diǎn)的子路徑從 關(guān)鍵節(jié)點(diǎn)的前、后相鄰節(jié)點(diǎn)位置拆分為三個(gè)子路徑,并在拆分后的第一個(gè)和第三個(gè)子路徑 中迭代調(diào)取標(biāo)簽并得到新的關(guān)鍵節(jié)點(diǎn); 針對(duì)改進(jìn)型剪枝標(biāo)簽構(gòu)造的層次標(biāo)簽,其拆分路徑的具體操作為,將包含關(guān)鍵節(jié)點(diǎn)的 子路徑從關(guān)鍵節(jié)點(diǎn)位置拆分為兩個(gè)子路徑,并在拆分后的兩個(gè)子路徑中迭代調(diào)取標(biāo)簽并得 到新的關(guān)鍵節(jié)點(diǎn)。
【專利摘要】一種基于集中式平臺(tái)的最短路徑關(guān)鍵節(jié)點(diǎn)基本查詢方法,通過(guò)在集中式平臺(tái)上對(duì)圖中的所有節(jié)點(diǎn)按照關(guān)鍵度由高到低進(jìn)行剪枝標(biāo)簽構(gòu)造或改進(jìn)型剪枝標(biāo)簽構(gòu)造對(duì)應(yīng)得到每個(gè)節(jié)點(diǎn)的層次標(biāo)簽,然后通過(guò)任意節(jié)點(diǎn)對(duì)間的最短路徑關(guān)鍵節(jié)點(diǎn)查詢,返回最短路徑上指定個(gè)數(shù)的關(guān)鍵節(jié)點(diǎn)。本發(fā)明通過(guò)在預(yù)處理階段進(jìn)行關(guān)鍵度排序和層次Hub標(biāo)簽構(gòu)造,得到了具有覆蓋屬性的層次標(biāo)簽,能夠高效地返回關(guān)鍵節(jié)點(diǎn);而在優(yōu)化的純標(biāo)簽算法里,在關(guān)鍵節(jié)點(diǎn)查詢的過(guò)程中不需要再進(jìn)行輔助查詢,可直接進(jìn)行路徑拆分,減少了查詢耗時(shí),提高了查詢效率。
【IPC分類】G06F17/30
【公開號(hào)】CN105005628
【申請(qǐng)?zhí)枴緾N201510478317
【發(fā)明人】姚斌, 馬菁, 過(guò)敏意, 唐飛龍, 周憬宇, 吳晨濤, 薛廣濤
【申請(qǐng)人】上海交通大學(xué)
【公開日】2015年10月28日
【申請(qǐng)日】2015年8月7日