1.一種基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算方法,其特征在于,采用基于消息傳遞的算法并行化方法;
所述基于消息傳遞的算法并行化方法,包括:
步驟1,產(chǎn)生更新消息;
每個(gè)節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)的狀態(tài)信息計(jì)算生成更新消息的內(nèi)容,把鄰居節(jié)點(diǎn)作為消息的目的節(jié)點(diǎn),將更新消息向目的節(jié)點(diǎn)發(fā)送;
步驟2,傳遞消息;
更新消息按照目的節(jié)點(diǎn)被發(fā)送給指定的節(jié)點(diǎn);
步驟3,更新節(jié)點(diǎn)內(nèi)部狀態(tài)信息;
目的節(jié)點(diǎn)收到若干條更新消息,目的節(jié)點(diǎn)對(duì)這些更新消息進(jìn)行解析并更新目的節(jié)點(diǎn)內(nèi)部狀態(tài)信息。
2.根據(jù)權(quán)利要求1所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算方法,其特征在于,所述步驟1,具體為:
步驟1由MapReduce框架中的Map階段完成,Map階段的處理方法由用戶完成;
該Map階段負(fù)責(zé)處理每條存儲(chǔ)節(jié)點(diǎn)信息的文本記錄,根據(jù)需求產(chǎn)生更新消息鍵/值對(duì);其中,鍵是鄰居節(jié)點(diǎn)id,值是更新消息的內(nèi)容;
所述步驟2,具體為:
所述步驟2由MapReduce框架中的partitioner組件自動(dòng)完成,partitioner組件默認(rèn)根據(jù)hash算法把具有相同鍵的消息鍵/值對(duì)和節(jié)點(diǎn)鍵/值對(duì)劃分到一起,使得更新消息達(dá)到了傳遞的效果;
所述步驟3,具體為:
所述步驟3由MapReduce框架中的Reduce階段完成,Reduce階段負(fù)責(zé)接收上一階段傳遞的鍵/值對(duì),把所有具有相同鍵的消息鍵/值對(duì)和節(jié)點(diǎn)鍵/值對(duì)進(jìn)行聚合,得到更新后的節(jié)點(diǎn)鍵/值對(duì)并輸出;
Reduce階段的處理方法由用戶根據(jù)需求自定義完成的。
3.根據(jù)權(quán)利要求1所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算方法,其特征在于,采用利用所述基于消息傳遞的算法并行化方法實(shí)現(xiàn)的基于MapReduce的介數(shù)方法;
所述基于MapReduce的介數(shù)方法,包括:
步驟S1,所有節(jié)點(diǎn)選取自己做為源節(jié)點(diǎn)開(kāi)始計(jì)算節(jié)點(diǎn)介數(shù);
步驟S2,從源節(jié)點(diǎn)出發(fā)進(jìn)行寬度優(yōu)先遍歷;
步驟S3,回溯求解點(diǎn)對(duì)依賴度;
步驟S4,累加點(diǎn)對(duì)依賴度得到介數(shù)。
4.根據(jù)權(quán)利要求3所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算方法,其特征在于,節(jié)點(diǎn)v的介數(shù)被定義為:
其中,B(v)表示節(jié)點(diǎn)v的介數(shù),σst表示節(jié)點(diǎn)s和節(jié)點(diǎn)t之間的最短路徑條數(shù),σst(v)表示節(jié)點(diǎn)s和節(jié)點(diǎn)t之間的最短路徑中經(jīng)過(guò)節(jié)點(diǎn)v的條數(shù);V表示網(wǎng)絡(luò)節(jié)點(diǎn)的集合;
所述步驟2包括:
從所有源節(jié)點(diǎn)同時(shí)出發(fā)寬度優(yōu)先遍歷其余節(jié)點(diǎn),當(dāng)訪問(wèn)到當(dāng)前節(jié)點(diǎn)v時(shí),根據(jù)下式:
計(jì)算節(jié)點(diǎn)v到源節(jié)點(diǎn)s的最短路徑的數(shù)目,并記錄下節(jié)點(diǎn)v的前驅(qū)節(jié)點(diǎn)Ps(v);迭代遍歷過(guò)程,直到所有節(jié)點(diǎn)都被訪問(wèn)到;
其中,σsv表示節(jié)點(diǎn)s到節(jié)點(diǎn)v的最短路徑數(shù)目,Ps(v)表示節(jié)點(diǎn)v以節(jié)點(diǎn)s為源的前驅(qū)節(jié)點(diǎn),σsu表示節(jié)點(diǎn)s到節(jié)點(diǎn)u的最短路徑數(shù)目;
所述步驟3包括:
從距離源節(jié)點(diǎn)最遠(yuǎn)一層的節(jié)點(diǎn)開(kāi)始回溯,按照下式:
計(jì)算當(dāng)前層中節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)的點(diǎn)對(duì)依賴度;不?;厮萦?jì)算前驅(qū)節(jié)點(diǎn)的點(diǎn)對(duì)依賴度,直到回到源節(jié)點(diǎn),得到源節(jié)點(diǎn)對(duì)其他所有節(jié)點(diǎn)的依賴度;
其中,δs·(v)表示節(jié)點(diǎn)s對(duì)節(jié)點(diǎn)v的依賴度,稱為點(diǎn)對(duì)依賴度;
w,v表示網(wǎng)絡(luò)中的節(jié)點(diǎn);
σsw表示節(jié)點(diǎn)s到節(jié)點(diǎn)w的最短路徑數(shù)目;
δs·(w)表示節(jié)點(diǎn)s對(duì)節(jié)點(diǎn)w的依賴度;
所述步驟4包括:
根據(jù)如下公式:
將不同源節(jié)點(diǎn)對(duì)節(jié)點(diǎn)v的依賴度求和得到該節(jié)點(diǎn)v的介數(shù)。
5.根據(jù)權(quán)利要求3所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算方法,其特征在于,所述步驟S2包括:
步驟S21,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)維護(hù)著一個(gè)狀態(tài)記錄表,狀態(tài)記錄表中每條記錄包含當(dāng)前已經(jīng)訪問(wèn)到的源節(jié)點(diǎn)id和相應(yīng)的距離、最短路徑數(shù)目、前驅(qū)節(jié)點(diǎn)這四個(gè)字段;
步驟S22,在Map階段所有節(jié)點(diǎn)都根據(jù)當(dāng)前狀態(tài)表中的每條記錄構(gòu)造更新消息;更新消息是以鍵/值對(duì)的形式處理,其中鍵是需要接受該更新消息的目的節(jié)點(diǎn)的id,值中包含了目的節(jié)點(diǎn)需要的信息,與狀態(tài)記錄表中的記錄包含同樣的四個(gè)字段;到源節(jié)點(diǎn)的距離等于本節(jié)點(diǎn)到源節(jié)點(diǎn)的距離加1,所述最短路徑數(shù)目即為本節(jié)點(diǎn)到源節(jié)點(diǎn)的最短路徑數(shù)目,前驅(qū)節(jié)點(diǎn)則為節(jié)點(diǎn)本身;
步驟S23,Map階段產(chǎn)生的鍵/值對(duì)將通過(guò)MapReduce框架進(jìn)行自動(dòng)劃分,最終相同鍵的鍵/值對(duì)被同一個(gè)Reduce函數(shù)接收,完成消息傳遞的過(guò)程;
步驟S24,在Reduce階段,所有節(jié)點(diǎn)都會(huì)收到來(lái)自鄰居節(jié)點(diǎn)的若干條更新消息;以消息中的源節(jié)點(diǎn)為準(zhǔn)在狀態(tài)記錄表中進(jìn)行匹配,查找該源節(jié)點(diǎn)對(duì)相應(yīng)的狀態(tài)記錄,并根據(jù)更新消息中包含的信息進(jìn)行狀態(tài)更新;
步驟S25,判斷所有源節(jié)點(diǎn)是否完成寬度遍歷,若沒(méi)有則跳轉(zhuǎn)到步驟S23繼續(xù)迭代,若完成了則進(jìn)入步驟S3繼續(xù)執(zhí)行。
6.一種基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算系統(tǒng),其特征在于,包括基于消息傳遞的算法并行化裝置;
所述基于消息傳遞的算法并行化裝置,包括:
裝置M1,產(chǎn)生更新消息;
每個(gè)節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)的狀態(tài)信息計(jì)算生成更新消息的內(nèi)容,把鄰居節(jié)點(diǎn)作為消息的目的節(jié)點(diǎn),將更新消息向目的節(jié)點(diǎn)發(fā)送;
裝置M2,傳遞消息;
更新消息按照目的節(jié)點(diǎn)被發(fā)送給指定的節(jié)點(diǎn);
裝置M3,更新節(jié)點(diǎn)內(nèi)部狀態(tài)信息;
目的節(jié)點(diǎn)收到若干條更新消息,目的節(jié)點(diǎn)對(duì)這些更新消息進(jìn)行解析并更新目的節(jié)點(diǎn)內(nèi)部狀態(tài)信息。
7.根據(jù)權(quán)利要求6所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算系統(tǒng),其特征在于,所述裝置M1,具體為:
裝置M1在MapReduce框架中的Map階段被觸發(fā)執(zhí)行,Map階段的處理方法由用戶完成;
該Map階段負(fù)責(zé)處理每條存儲(chǔ)節(jié)點(diǎn)信息的文本記錄,根據(jù)需求產(chǎn)生更新消息鍵/值對(duì);其中,鍵是鄰居節(jié)點(diǎn)id,值是更新消息的內(nèi)容;
所述裝置M2,具體為:
所述裝置M2在MapReduce框架中的partitioner組件被觸發(fā)執(zhí)行,partitioner組件默認(rèn)根據(jù)hash算法把具有相同鍵的消息鍵/值對(duì)和節(jié)點(diǎn)鍵/值對(duì)劃分到一起,使得更新消息達(dá)到了傳遞的效果;
所述裝置M3,具體為:
所述裝置M3在MapReduce框架中的Reduce階段被觸發(fā)執(zhí)行,Reduce階段負(fù)責(zé)接收上一階段傳遞的鍵/值對(duì),把所有具有相同鍵的消息鍵/值對(duì)和節(jié)點(diǎn)鍵/值對(duì)進(jìn)行聚合,得到更新后的節(jié)點(diǎn)鍵/值對(duì)并輸出;
Reduce階段的處理方法由用戶根據(jù)需求自定義完成的。
8.根據(jù)權(quán)利要求6所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算系統(tǒng),其特征在于,采用利用所述基于消息傳遞的算法并行化裝置實(shí)現(xiàn)的基于MapReduce的介數(shù)裝置;
所述基于MapReduce的介數(shù)裝置,包括:
裝置MS1,令所有節(jié)點(diǎn)選取自己做為源節(jié)點(diǎn)開(kāi)始計(jì)算節(jié)點(diǎn)介數(shù);
裝置MS2,從源節(jié)點(diǎn)出發(fā)進(jìn)行寬度優(yōu)先遍歷;
裝置MS3,回溯求解點(diǎn)對(duì)依賴度;
裝置MS4,累加點(diǎn)對(duì)依賴度得到介數(shù)。
9.根據(jù)權(quán)利要求8所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算系統(tǒng),其特征在于,節(jié)點(diǎn)v的介數(shù)被定義為:
其中,B(v)表示節(jié)點(diǎn)v的介數(shù),σst表示節(jié)點(diǎn)s和節(jié)點(diǎn)t之間的最短路徑條數(shù),σst(v)表示節(jié)點(diǎn)s和節(jié)點(diǎn)t之間的最短路徑中經(jīng)過(guò)節(jié)點(diǎn)v的條數(shù);V表示網(wǎng)絡(luò)節(jié)點(diǎn)的集合;
所述裝置M2具體為:
從所有源節(jié)點(diǎn)同時(shí)出發(fā)寬度優(yōu)先遍歷其余節(jié)點(diǎn),當(dāng)訪問(wèn)到當(dāng)前節(jié)點(diǎn)v時(shí),根據(jù)下式:
計(jì)算節(jié)點(diǎn)v到源節(jié)點(diǎn)s的最短路徑的數(shù)目,并記錄下節(jié)點(diǎn)v的前驅(qū)節(jié)點(diǎn)Ps(v);迭代遍歷過(guò)程,直到所有節(jié)點(diǎn)都被訪問(wèn)到;
其中,σsv表示節(jié)點(diǎn)s到節(jié)點(diǎn)v的最短路徑數(shù)目,Ps(v)表示節(jié)點(diǎn)v以節(jié)點(diǎn)s為源的前驅(qū)節(jié)點(diǎn),σsu表示節(jié)點(diǎn)s到節(jié)點(diǎn)u的最短路徑數(shù)目;
所述裝置M3具體為:
從距離源節(jié)點(diǎn)最遠(yuǎn)一層的節(jié)點(diǎn)開(kāi)始回溯,按照下式:
計(jì)算當(dāng)前層中節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)的點(diǎn)對(duì)依賴度;不?;厮萦?jì)算前驅(qū)節(jié)點(diǎn)的點(diǎn)對(duì)依賴度,直到回到源節(jié)點(diǎn),得到源節(jié)點(diǎn)對(duì)其他所有節(jié)點(diǎn)的依賴度;
其中,δs·(v)表示節(jié)點(diǎn)s對(duì)節(jié)點(diǎn)v的依賴度,稱為點(diǎn)對(duì)依賴度;
w,v表示網(wǎng)絡(luò)中的節(jié)點(diǎn);
σsw表示節(jié)點(diǎn)s到節(jié)點(diǎn)w的最短路徑數(shù)目;
δs·(w)表示節(jié)點(diǎn)s對(duì)節(jié)點(diǎn)w的依賴度;
所述裝置M4具體為:
根據(jù)如下公式:
將不同源節(jié)點(diǎn)對(duì)節(jié)點(diǎn)v的依賴度求和得到該節(jié)點(diǎn)v的介數(shù)。
10.根據(jù)權(quán)利要求8所述的基于MapReduce的復(fù)雜網(wǎng)絡(luò)拓?fù)涮卣鲄?shù)計(jì)算系統(tǒng),其特征在于,所述裝置MS2包括:
裝置MS21,令網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)維護(hù)著一個(gè)狀態(tài)記錄表,狀態(tài)記錄表中每條記錄包含當(dāng)前已經(jīng)訪問(wèn)到的源節(jié)點(diǎn)id和相應(yīng)的距離、最短路徑數(shù)目、前驅(qū)節(jié)點(diǎn)這四個(gè)字段;
裝置MS22,令在Map階段所有節(jié)點(diǎn)都根據(jù)當(dāng)前狀態(tài)表中的每條記錄構(gòu)造更新消息;更新消息是以鍵/值對(duì)的形式處理,其中鍵是需要接受該更新消息的目的節(jié)點(diǎn)的id,值中包含了目的節(jié)點(diǎn)需要的信息,與狀態(tài)記錄表中的記錄包含同樣的四個(gè)字段;到源節(jié)點(diǎn)的距離等于本節(jié)點(diǎn)到源節(jié)點(diǎn)的距離加1,所述最短路徑數(shù)目即為本節(jié)點(diǎn)到源節(jié)點(diǎn)的最短路徑數(shù)目,前驅(qū)節(jié)點(diǎn)則為節(jié)點(diǎn)本身;
裝置MS23,令Map階段產(chǎn)生的鍵/值對(duì)將通過(guò)MapReduce框架進(jìn)行自動(dòng)劃分,最終相同鍵的鍵/值對(duì)被同一個(gè)Reduce函數(shù)接收,完成消息傳遞的過(guò)程;
裝置MS24,令在Reduce階段,所有節(jié)點(diǎn)都會(huì)收到來(lái)自鄰居節(jié)點(diǎn)的若干條更新消息;以消息中的源節(jié)點(diǎn)為準(zhǔn)在狀態(tài)記錄表中進(jìn)行匹配,查找該源節(jié)點(diǎn)對(duì)相應(yīng)的狀態(tài)記錄,并根據(jù)更新消息中包含的信息進(jìn)行狀態(tài)更新;
裝置MS25,判斷所有源節(jié)點(diǎn)是否完成寬度遍歷,若沒(méi)有則跳轉(zhuǎn)觸發(fā)裝置MS23繼續(xù)迭代,若完成了則觸發(fā)裝置MS3繼續(xù)執(zhí)行。