本發(fā)明涉及數(shù)據(jù)結(jié)構(gòu)處理技術(shù)領(lǐng)域,尤其涉及一種響應(yīng)快速的有向網(wǎng)絡(luò)快速查詢算法。
背景技術(shù):
真實(shí)世界中很多自然、社會(huì)系統(tǒng)都可以用復(fù)雜網(wǎng)絡(luò)來描述,如生物信息網(wǎng)、鏈接跳轉(zhuǎn)網(wǎng),社交媒體轉(zhuǎn)發(fā)網(wǎng),科研協(xié)作網(wǎng)等。網(wǎng)絡(luò)研究的基礎(chǔ)是節(jié)點(diǎn)間具有相關(guān)關(guān)系,其關(guān)系可以是無向的,也可以是有向的。無向網(wǎng)中邊只表示兩節(jié)點(diǎn)相關(guān),而有向網(wǎng)中的邊所聯(lián)系的兩個(gè)節(jié)點(diǎn)在一個(gè)相關(guān)關(guān)系中存在發(fā)出者和接收者的區(qū)別。在已有的有向網(wǎng)的節(jié)點(diǎn)關(guān)系研究中,研究人員主要是從一系列具有相同屬性的節(jié)點(diǎn)的集合角度發(fā)現(xiàn)網(wǎng)絡(luò)中隱藏著的有用信息,即從子群識(shí)別的方向?qū)W(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行研究。
子群識(shí)別有助于更好的理解網(wǎng)絡(luò)結(jié)構(gòu),尤其是以層次聚類分析為主要切入點(diǎn)的子群識(shí)別在對全局進(jìn)行節(jié)點(diǎn)劃分的同時(shí)也對子群內(nèi)部節(jié)點(diǎn)間層次關(guān)系進(jìn)行了還原,最終生成若干子群樹結(jié)構(gòu)或樹圖,對于研究子群結(jié)構(gòu)、網(wǎng)絡(luò)結(jié)構(gòu)的進(jìn)化和演變具有重要意義。因此,網(wǎng)絡(luò)層次結(jié)構(gòu)識(shí)別技術(shù)在信息檢索、社會(huì)化分析、知識(shí)圖譜、系統(tǒng)安全領(lǐng)域具有重要意義,其常見應(yīng)用有(但不僅限于)知識(shí)庫領(lǐng)域本體、知識(shí)元定位,限制用戶的系統(tǒng)安全作用域,社交群體快速查找等。
用于有向網(wǎng)節(jié)點(diǎn)層次關(guān)系識(shí)別的算法有g(shù)-n算法、radicchi算法及快速凝聚算法,由于其主要以節(jié)點(diǎn)邊的復(fù)雜計(jì)算為主,時(shí)間復(fù)雜度較高。以g-n算法為例,計(jì)算一個(gè)包含m個(gè)節(jié)點(diǎn)n條邊的網(wǎng)絡(luò),運(yùn)行一次的時(shí)間復(fù)雜程度為o(m2n),通常節(jié)點(diǎn)數(shù)量超過1000就可能出現(xiàn)響應(yīng)速度過慢的情況,不適用于大規(guī)模網(wǎng)絡(luò)的節(jié)點(diǎn)結(jié)構(gòu)層次分析。
另一方面,隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,傳統(tǒng)的網(wǎng)絡(luò)服務(wù)架構(gòu)己經(jīng)由單一的網(wǎng)站逐漸向分布式發(fā)展。微服務(wù)就是指可以部署在單個(gè)或多個(gè)服務(wù)器上的單個(gè)小型但有業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和輕量通訊機(jī)制。微服務(wù)架構(gòu)風(fēng)格是一類將單一應(yīng)用程序作為由眾多小型服務(wù)構(gòu)成之套件加以開發(fā)的方式,其中各項(xiàng)服務(wù)都擁有自己的進(jìn)程并利用輕量化機(jī)制實(shí)現(xiàn)通信。這些服務(wù)圍繞業(yè)務(wù)功能建立而成,且憑借自動(dòng)化部署機(jī)制實(shí)現(xiàn)獨(dú)立部署。微服務(wù)的優(yōu)勢在于弱耦合,在開發(fā)階段或部署階段相對獨(dú)立,能部署中低端配置的服務(wù)器上,實(shí)現(xiàn)起來復(fù)雜程度低且易于理解、修改和維護(hù),方便即時(shí)擴(kuò)展。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的缺點(diǎn),而提出的一種有向網(wǎng)絡(luò)快速查詢算法。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用了如下技術(shù)方案:
一種有向網(wǎng)絡(luò)快速查詢算法,其包括如下四大模塊:
有向網(wǎng)節(jié)點(diǎn)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)定義模塊,包含節(jié)點(diǎn)(id,pid,name)單元;
層次關(guān)系提取模塊,包含循環(huán)處置單元、子群重疊處置單元、最短路徑提取單元、層次樹結(jié)構(gòu)索引構(gòu)建單元和層次關(guān)系索引構(gòu)建單元;
其中,最短路徑提取單元的最短路徑選取步驟是,
給一個(gè)包含n個(gè)點(diǎn),m條邊的有向連通圖,遍歷所有節(jié)點(diǎn)并返回,對應(yīng)特定一個(gè)節(jié)點(diǎn),選擇總長度最短的路徑,若有多條長度最短的路徑,則選擇經(jīng)過的頂點(diǎn)序列距離最小的那條路徑,到達(dá)該點(diǎn)后按原路返回,然后往其他點(diǎn)走,直到所有點(diǎn)都走過;
層次關(guān)系索引構(gòu)建單元,包含節(jié)點(diǎn)增加子單元add(pid,節(jié)點(diǎn)子群)、節(jié)點(diǎn)刪除子單元del(pid,節(jié)點(diǎn)子群)、節(jié)點(diǎn)修改子單元modify(pid,節(jié)點(diǎn)子群)和節(jié)點(diǎn)創(chuàng)建子單元create(節(jié)點(diǎn)子群);
最短路徑并行編碼模塊;
節(jié)點(diǎn)子群數(shù)據(jù)檢索模塊,包括節(jié)點(diǎn)子群查詢單元subset(pid)、域查詢單元search(pid,name)、路徑查詢單元path(id)。
應(yīng)用該技術(shù),使有向網(wǎng)絡(luò)查詢轉(zhuǎn)換為二級(jí)索引查詢,計(jì)算效率和速度大大提升。
本發(fā)明的有益效果:本發(fā)明公開了一種適用于分布式并行計(jì)算的有向網(wǎng)節(jié)點(diǎn)層次結(jié)構(gòu)重建及快速查詢算法,屬于數(shù)據(jù)處理技術(shù),數(shù)據(jù)結(jié)構(gòu)與算法創(chuàng)新領(lǐng)域。此算法查詢效率高,處理速度快,可支持10億級(jí)實(shí)體及關(guān)系的精確檢索和毫秒級(jí)響應(yīng),可廣泛應(yīng)用于有網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的數(shù)據(jù)層次關(guān)系抽取和檢索需求的各類真實(shí)場景。適用于分布式并行計(jì)算的有向網(wǎng)節(jié)點(diǎn)層次結(jié)構(gòu)查詢算法,用以支持大規(guī)模數(shù)據(jù)集(10億級(jí))節(jié)點(diǎn)層次結(jié)構(gòu)的識(shí)別抽取及精確檢索,響應(yīng)速度相比傳統(tǒng)遞歸遍歷方法有大幅提升。
附圖說明
圖1為本發(fā)明的進(jìn)行快速查詢的流程圖。
圖2為本發(fā)明有向網(wǎng)絡(luò)查詢轉(zhuǎn)換為二級(jí)索引查詢的原理圖。
具體實(shí)施方式:
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。
本發(fā)明提供了一種有向網(wǎng)絡(luò)快速查詢算法,其包括如下四大模塊:
有向網(wǎng)節(jié)點(diǎn)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)定義模塊,包含節(jié)點(diǎn)(id,pid,name)單元;
層次關(guān)系提取模塊,包含循環(huán)處置單元、子群重疊處置單元、最短路徑提取單元、層次樹結(jié)構(gòu)索引構(gòu)建單元和層次關(guān)系索引構(gòu)建單元;
其中,最短路徑提取單元的最短路徑選取步驟是,
如圖2所示,給一個(gè)包含n個(gè)點(diǎn),m條邊的有向連通圖,遍歷所有節(jié)點(diǎn)并返回,對應(yīng)特定一個(gè)節(jié)點(diǎn),選擇總長度最短的路徑,若有多條長度最短的路徑,則選擇經(jīng)過的頂點(diǎn)序列距離最小的那條路徑,到達(dá)該點(diǎn)后按原路返回,然后往其他點(diǎn)走,直到所有點(diǎn)都走過;
層次關(guān)系索引構(gòu)建單元,包含節(jié)點(diǎn)增加子單元add(pid,節(jié)點(diǎn)子群)、節(jié)點(diǎn)刪除子單元del(pid,節(jié)點(diǎn)子群)、節(jié)點(diǎn)修改子單元modify(pid,節(jié)點(diǎn)子群)和節(jié)點(diǎn)創(chuàng)建子單元create(節(jié)點(diǎn)子群);
最短路徑并行編碼模塊;
節(jié)點(diǎn)子群數(shù)據(jù)檢索模塊,包括節(jié)點(diǎn)子群查詢單元subset(pid)、域查詢單元search(pid,name)、路徑查詢單元path(id)。
如圖1所示,為本發(fā)明進(jìn)行快速查詢的流程圖。具體實(shí)施時(shí),可進(jìn)行大規(guī)模知識(shí)圖譜的快速查找,基于知識(shí)圖譜構(gòu)建技術(shù),用戶畫像分析生成500萬用戶的近億節(jié)點(diǎn)-關(guān)系的特征畫像知識(shí)圖譜,能自適應(yīng)生成最短路徑樹結(jié)構(gòu)數(shù)據(jù)集。在基于用戶標(biāo)簽協(xié)同過濾的導(dǎo)醫(yī)推薦任務(wù)中,基于該算法的自適應(yīng)子群查找和快速檢索優(yōu)化特性,大大提高了實(shí)時(shí)性和檢索效率。
本發(fā)明公開了一種有向網(wǎng)絡(luò)快速查詢算法,適用于分布式并行計(jì)算的有向網(wǎng)節(jié)點(diǎn)層次結(jié)構(gòu)重建,屬于數(shù)據(jù)處理技術(shù),數(shù)據(jù)結(jié)構(gòu)與算法創(chuàng)新領(lǐng)域。此算法查詢效率高,處理速度快,可支持10億級(jí)實(shí)體及關(guān)系的精確檢索和毫秒級(jí)響應(yīng),可廣泛應(yīng)用于有網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的數(shù)據(jù)層次關(guān)系抽取和檢索需求的各類真實(shí)場景。適用于分布式并行計(jì)算的有向網(wǎng)節(jié)點(diǎn)層次結(jié)構(gòu)查詢算法,用以支持大規(guī)模數(shù)據(jù)集(10億級(jí))節(jié)點(diǎn)層次結(jié)構(gòu)的識(shí)別抽取及精確檢索,響應(yīng)速度相比傳統(tǒng)遞歸遍歷方法有大幅提升。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。