国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種圖計(jì)算方法及引擎的制作方法

      文檔序號:6619603閱讀:471來源:國知局
      一種圖計(jì)算方法及引擎的制作方法【專利摘要】本發(fā)明公開了一種圖計(jì)算方法及引擎,所述計(jì)算方法為:A.對圖的原始關(guān)系數(shù)據(jù)進(jìn)行索引,獲得索引數(shù)據(jù),所述圖的頂點(diǎn)和邊上對應(yīng)所述的索引數(shù)據(jù);B.選擇所述圖的一個(gè)或多個(gè)頂點(diǎn)為起始節(jié)點(diǎn),進(jìn)行廣度優(yōu)先或深度優(yōu)先的多步游走,獲得包括用于候選的多個(gè)結(jié)束節(jié)點(diǎn)的游走拓?fù)鋱D,基于廣度優(yōu)先或深度優(yōu)先的圖游走算法、根據(jù)游走路徑中參與的頂點(diǎn)和邊對應(yīng)的索引數(shù)據(jù)計(jì)算所述起始節(jié)點(diǎn)到達(dá)所述結(jié)束節(jié)點(diǎn)的到達(dá)概率;C.對計(jì)算出的所述到達(dá)概率進(jìn)行排序。本發(fā)明的圖計(jì)算方法可獲得去流行、強(qiáng)關(guān)系的結(jié)果;圖計(jì)算引擎可對各類圖數(shù)據(jù)進(jìn)行索引,支持多種圖算法,支持自定義圖計(jì)算的拓?fù)鋱D,支持索引數(shù)據(jù)/拓?fù)鋱D/共享庫數(shù)據(jù)的實(shí)時(shí)增加/刪除/修改?!緦@f明】一種圖計(jì)算方法及引擎【
      技術(shù)領(lǐng)域
      】[0001]本發(fā)明涉及圖計(jì)算領(lǐng)域,尤其是涉及一種圖計(jì)算方法及引擎。【
      背景技術(shù)
      】[0002]圖計(jì)算(graphcomputation)對于關(guān)系構(gòu)建、用戶群分析和發(fā)現(xiàn)、屬性傳播等有很重要的作用。在大數(shù)據(jù)時(shí)代,圖的規(guī)模大到一定程度后,單機(jī)就很難解決大規(guī)模的圖計(jì)算了。因此,進(jìn)行大規(guī)模數(shù)據(jù)的圖算法開發(fā)和調(diào)試具有重要意義。目前比較成熟的方案有Graphx和GraphLab。其中GraphLab項(xiàng)目的一個(gè)分支是GraphChi,該框架能夠在單機(jī)上完成大數(shù)據(jù)的圖計(jì)算。[0003]GraphChi可以在個(gè)人計(jì)算機(jī)上高效的進(jìn)行大規(guī)模的圖計(jì)算,它有自己原創(chuàng)的從硬盤獲取圖數(shù)據(jù)的優(yōu)化算法,并且支持流圖(streaminggraph)更新以及在計(jì)算中改變圖的結(jié)構(gòu)。[0004]GraphChi在進(jìn)行大規(guī)模圖計(jì)算的時(shí)候,將圖分成了不同的分片,這些分片可以在內(nèi)存中并行處理,分片的數(shù)據(jù)更新通過連續(xù)寫入來實(shí)現(xiàn),以最小化硬盤上的隨機(jī)操作,合理使用機(jī)器內(nèi)存。[0005]GraphChi利用個(gè)人計(jì)算機(jī)上的海量硬盤,將圖數(shù)據(jù)存儲在硬盤上,為提升硬盤的數(shù)據(jù)存取效率,GraphChi使用了PSW(ParallelSlidingWindow)算法來解決這一關(guān)鍵的性能提升問題。PSW通過sourceshards對1個(gè)分片中所有的vertex進(jìn)行排序,這樣每個(gè)分片本質(zhì)上都被分割成由vertex組成的塊,同時(shí)這些vertex又會(huì)與其它分片關(guān)聯(lián)。[0006]GraphChi和GraphLab-樣也是基于vertex-centric模型來實(shí)現(xiàn)的,并行且異步(邊上數(shù)據(jù)發(fā)生的變化對后續(xù)計(jì)算是立即可見的)。[0007]GraphChi通過vertex拆分來實(shí)現(xiàn)并行,設(shè)置一個(gè)mastervertex,多個(gè)mirrorvertex,各mirrorvertex處理自己分內(nèi)的數(shù)據(jù),最終由mastervertex進(jìn)行匯總,然后mastervertex將匯總后的數(shù)據(jù)對mirrorvertex進(jìn)行更新,同時(shí)也更新相關(guān)邊上的數(shù)據(jù)。[0008]GraphChi的執(zhí)行模型為"Gather-Apply-Scatter",具體介紹如下:[0009]每個(gè)vertex每一輪迭代經(jīng)過"Gather-Apply-Scatter"三個(gè)階段。[0010](l)Gather階段[0011]計(jì)算相關(guān)的vertex從鄰接vertex和自身收集數(shù)據(jù),這一階段,vertex和邊上的數(shù)據(jù)都是只讀的。[0012](2)Apply階段[0013]mirrorvertex將Gather階段計(jì)算的結(jié)果發(fā)給mastervertex,由其進(jìn)行匯總及進(jìn)一步的計(jì)算,然后更新mastervertex的數(shù)據(jù),并同步到mirrorvertex中。這一階段,vertex的數(shù)據(jù)可以修改,邊上的數(shù)據(jù)不可以修改。[0014](3)Scatter階段[0015]vertex數(shù)據(jù)更新完成之后,更新邊上的數(shù)據(jù),這一階段,邊上的數(shù)據(jù)是可寫的,vertex上的數(shù)據(jù)是只讀的。[0016]并行計(jì)算的同步通過mastervertex和mirrorvertex來實(shí)現(xiàn),mirrorvertex相當(dāng)于每個(gè)vertex對外的一個(gè)接口人,這樣就把數(shù)據(jù)通信抽象成了vertex的數(shù)據(jù)交換行為。[0017]雖然GraphChi能夠?qū)崿F(xiàn)在個(gè)人計(jì)算機(jī)上進(jìn)行大規(guī)模的圖計(jì)算,但仍存在一些不足和缺陷:如GraphChi無建立索引模塊,不支持自定義圖計(jì)算的拓?fù)鋱D,不支持插件的熱插拔等。因此,上述現(xiàn)有的圖計(jì)算方法及引擎在使用上仍存在有不便與缺陷,而亟待加以進(jìn)一步改進(jìn)?!?br/>發(fā)明內(nèi)容】[0018]本發(fā)明的目的是提供一種可以獲得去流行、強(qiáng)關(guān)系的結(jié)果的圖計(jì)算方法。[0019]為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:[0020]-種圖計(jì)算方法,主要包括以下步驟:A.對圖的原始關(guān)系數(shù)據(jù)進(jìn)行索引,獲得索引數(shù)據(jù),所述圖的頂點(diǎn)和邊上對應(yīng)所述的索引數(shù)據(jù);B.選擇所述圖的一個(gè)或多個(gè)頂點(diǎn)為起始節(jié)點(diǎn),進(jìn)行廣度優(yōu)先或深度優(yōu)先的多步游走,獲得包括用于候選的多個(gè)結(jié)束節(jié)點(diǎn)的游走拓?fù)鋱D,基于廣度優(yōu)先或深度優(yōu)先的圖游走算法、根據(jù)游走路徑中參與的頂點(diǎn)和邊對應(yīng)的索引數(shù)據(jù)計(jì)算所述起始節(jié)點(diǎn)到達(dá)所述結(jié)束節(jié)點(diǎn)的到達(dá)概率;C.對計(jì)算出的所述到達(dá)概率進(jìn)行排序。[0021]進(jìn)一步地,所述步驟B中對到達(dá)概率的計(jì)算包括兩次取對數(shù)方式的降權(quán)操作。[0022]進(jìn)一步地,所述到達(dá)概率reach_prob的計(jì)算公式為:[0023]【權(quán)利要求】1.一種圖計(jì)算方法,其特征在于,主要包括以下步驟:A.對圖的原始關(guān)系數(shù)據(jù)進(jìn)行索引,獲得索引數(shù)據(jù),所述圖的頂點(diǎn)和邊上對應(yīng)所述的索引數(shù)據(jù);B.選擇所述圖的一個(gè)或多個(gè)頂點(diǎn)為起始節(jié)點(diǎn),進(jìn)行廣度優(yōu)先或深度優(yōu)先的多步游走,獲得包括用于候選的多個(gè)結(jié)束節(jié)點(diǎn)的游走拓?fù)鋱D,基于廣度優(yōu)先或深度優(yōu)先的圖游走算法、根據(jù)游走路徑中參與的頂點(diǎn)和邊對應(yīng)的索引數(shù)據(jù)計(jì)算所述起始節(jié)點(diǎn)到達(dá)所述結(jié)束節(jié)點(diǎn)的到達(dá)概率;C.對計(jì)算出的所述到達(dá)概率進(jìn)行排序。2.根據(jù)權(quán)利要求1所述的圖計(jì)算方法,其特征在于,所述步驟B中對到達(dá)概率的計(jì)算包括兩次取對數(shù)方式的降權(quán)操作。3.根據(jù)權(quán)利要求1所述的圖計(jì)算方法,其特征在于,所述到達(dá)概率reach_prob的計(jì)算公式為:其中,eg_popfactor為游走終點(diǎn)圖的配置參數(shù),為浮點(diǎn)值;rev_eg_candidate_node_size為當(dāng)前的候選節(jié)點(diǎn)在終點(diǎn)圖的反向圖中的出邊的個(gè)數(shù);candidate_value的計(jì)算公式為:I.當(dāng)為兩步游走時(shí),貝1J所述拓?fù)鋱D包括起始圖和終點(diǎn)圖,此時(shí)candidate_value=II.當(dāng)為三步以上游走時(shí),則所述拓?fù)鋱D包括起始圖、中間圖和終點(diǎn)圖,設(shè)有m個(gè)中間圖,m為自然數(shù),此時(shí)其中,walk_prob為本次拓?fù)鋱D游走的配置參數(shù),為浮點(diǎn)值;sg_popfactor為起始圖的配置參數(shù),為浮點(diǎn)值;rgm_popfactor為第m個(gè)中間圖的配置參數(shù),為浮點(diǎn)值;route_value的計(jì)算公式為:其中X的值如下:其中,sg_rp_weight為起始圖中對應(yīng)的邊的權(quán)重,start_node_size為起始節(jié)點(diǎn)在起始圖中的對應(yīng)的邊的出邊的個(gè)數(shù);sg_scalevalue為起始圖的浮點(diǎn)型的配置參數(shù),sg_max_log_value和sg_min_log_value為起始圖的浮點(diǎn)型的配置參數(shù),route_node_size為routenode在起始圖的反向圖中的出邊的個(gè)數(shù);end_value的計(jì)算公式如下:其中X的值如下:其中,eg_rp_weight為終點(diǎn)圖中對應(yīng)的邊的權(quán)重,eg_scalevalue為終點(diǎn)圖的浮點(diǎn)型的配置參數(shù),eg_max_log_value和eg_min_log_value為終點(diǎn)圖的浮點(diǎn)型的配置參數(shù),eg_route_node_size為routenode在終點(diǎn)圖中對應(yīng)的邊的出邊個(gè)數(shù)。4.根據(jù)權(quán)利要求3所述的圖計(jì)算方法,其特征在于,所述計(jì)算的中間結(jié)果使用原子操作存儲于預(yù)先設(shè)定的一個(gè)或多個(gè)數(shù)組中,所述數(shù)組的長度為結(jié)束節(jié)點(diǎn)空間中包含的節(jié)點(diǎn)個(gè)數(shù)。5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的圖計(jì)算方法,其特征在于,計(jì)算所述到達(dá)概率時(shí),首先分離路徑無關(guān)和路徑相關(guān)的計(jì)算,路徑無關(guān)的計(jì)算在計(jì)算初始化的時(shí)候一次性計(jì)算完。6.-種應(yīng)用權(quán)利要求1-5任一項(xiàng)所述的圖計(jì)算方法的圖計(jì)算引擎,其特征在于,包括建立數(shù)據(jù)索引模塊以及圖計(jì)算平臺模塊,所述建立數(shù)據(jù)索引模塊用于對原始關(guān)系數(shù)據(jù)進(jìn)行索引,獲得索引數(shù)據(jù);所述圖計(jì)算平臺模塊包括主體平臺及功能插件,所述功能插件包含執(zhí)行計(jì)算所述到達(dá)概率的函數(shù),所述主體平臺可通過與所述功能插件的接口協(xié)議調(diào)用所述函數(shù)。7.根據(jù)權(quán)利要求6所述的圖計(jì)算引擎,其特征在于,所述功能插件采用可動(dòng)態(tài)加載的共享庫形式,所述主體平臺支持所述功能插件的熱插拔。8.根據(jù)權(quán)利要求7所述的圖計(jì)算引擎,其特征在于,所述主體平臺包括:索引數(shù)據(jù)管理模塊,用于從硬盤載入指定索引數(shù)據(jù)到內(nèi)存、釋放索引數(shù)據(jù)所占內(nèi)存、替換現(xiàn)有的索引數(shù)據(jù);共享庫管理模塊,用于動(dòng)態(tài)載入共享庫文件,獲取共享庫中回調(diào)函數(shù)的函數(shù)指針,釋放、關(guān)閉或替換共享庫,增加、刪除或修改共享庫之間的依賴關(guān)系;拓?fù)鋱D管理模塊,用于增加或刪除游走拓?fù)鋱D、修改游走拓?fù)鋱D的數(shù)據(jù)、鎖住與解鎖拓?fù)鋱D、選擇拓?fù)鋱D按照廣度優(yōu)先游走或深度優(yōu)先游走;線程管理模塊,用于創(chuàng)建線程、初始化線程所需數(shù)據(jù)、回調(diào)共享庫中回調(diào)函數(shù);TCP/IP服務(wù)管理模塊,用于并發(fā)接受TCP/IP的請求、返回結(jié)果;以及平臺配置管理模塊,用于解析所述主體平臺各模塊對應(yīng)的配置文件。9.根據(jù)權(quán)利要求8所述的圖計(jì)算引擎,其特征在于,所述主體平臺數(shù)據(jù)與拓?fù)鋱D均設(shè)置有操作鎖,當(dāng)所述主體平臺數(shù)據(jù)進(jìn)行修改時(shí),或所述拓?fù)鋱D及其相關(guān)數(shù)據(jù)進(jìn)行刪除/修改時(shí),所述操作鎖執(zhí)行鎖定功能。10.根據(jù)權(quán)利要求6-9任一項(xiàng)所述的圖計(jì)算引擎,其特征在于,所述建立數(shù)據(jù)索引模塊采用C++編寫的共享庫,采用hashtable提供查詢服務(wù),采用POSIXsyscall實(shí)現(xiàn)與Linux系統(tǒng)的交互?!疚臋n編號】G06F17/30GK104063507SQ201410324671【公開日】2014年9月24日申請日期:2014年7月9日優(yōu)先權(quán)日:2014年7月9日【發(fā)明者】王緒剛,吳桐,宋磊,張銳申請人:時(shí)趣互動(dòng)(北京)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1