欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

隨機(jī)圖的生成方法和系統(tǒng)的制作方法

文檔序號(hào):10665679閱讀:341來源:國(guó)知局
隨機(jī)圖的生成方法和系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)?zhí)岢鲆环N隨機(jī)圖的生成方法和系統(tǒng),該方法包括:輸入原始圖結(jié)構(gòu);從原始圖結(jié)構(gòu)中任意選兩條邊,并在原始圖結(jié)構(gòu)中不存在第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊且第一條邊的發(fā)出節(jié)點(diǎn)與第二條邊的結(jié)束節(jié)點(diǎn)不是同一節(jié)點(diǎn)時(shí),對(duì)根據(jù)第一條邊和第二條邊對(duì)原始圖進(jìn)行換邊,即將第一條邊和第二條邊刪除,并添加由第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊和由第二條邊的發(fā)出節(jié)點(diǎn)到第一條邊的結(jié)束節(jié)點(diǎn)的邊,并重復(fù)選邊-換邊的過程,直至執(zhí)行預(yù)設(shè)迭代次數(shù)。由此,能夠得到與原始圖結(jié)構(gòu)節(jié)點(diǎn)數(shù)、邊數(shù)一致,且每個(gè)節(jié)點(diǎn)的出度和入度也一致的隨機(jī)圖。此外,可大大降低時(shí)間復(fù)雜度和圖結(jié)構(gòu)的存儲(chǔ)能力,更便于大數(shù)據(jù)量圖結(jié)構(gòu)的隨機(jī)圖生成。
【專利說明】
隨機(jī)圖的生成方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及隨機(jī)圖的生成方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,各種復(fù)雜網(wǎng)絡(luò),如神經(jīng)網(wǎng)絡(luò)、社交網(wǎng)絡(luò)、引用網(wǎng)絡(luò)等逐步出現(xiàn)并快速發(fā)展。在對(duì)這些復(fù)雜網(wǎng)絡(luò)進(jìn)行研究分析時(shí),經(jīng)常需要了解復(fù)雜網(wǎng)絡(luò)中某一個(gè)模塊特性是否顯著。但是,由于每個(gè)復(fù)雜網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量、邊數(shù)量、度分布等不盡相同,不同復(fù)雜網(wǎng)絡(luò)之間模塊特性缺乏可比性。而單個(gè)復(fù)雜網(wǎng)絡(luò)的模塊特性可以與其唯一對(duì)應(yīng)的隨機(jī)網(wǎng)絡(luò)進(jìn)行對(duì)比,從而得到該復(fù)雜網(wǎng)絡(luò)的模塊特性的絕對(duì)指標(biāo),由此,即可實(shí)現(xiàn)在不同復(fù)雜網(wǎng)絡(luò)之間進(jìn)行對(duì)比。
[0003]與真實(shí)網(wǎng)絡(luò)唯一對(duì)應(yīng)的隨機(jī)網(wǎng)絡(luò),即與真實(shí)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的出度和入度相同的隨機(jī)網(wǎng)絡(luò),也被叫做隨機(jī)圖,能夠用于對(duì)真實(shí)網(wǎng)絡(luò)進(jìn)行特征表征。對(duì)于小數(shù)據(jù)圖來說,可通過眾多低時(shí)間復(fù)雜度的隨機(jī)算法生成隨機(jī)圖,但是,當(dāng)數(shù)據(jù)圖的數(shù)據(jù)量達(dá)到億級(jí)時(shí),傳統(tǒng)的算法框架則因受限于時(shí)間復(fù)雜度和無法存儲(chǔ)海量圖結(jié)構(gòu)的問題,則無法承載生成隨機(jī)圖的功能。因此,一種針對(duì)大數(shù)據(jù)量復(fù)雜網(wǎng)絡(luò)的低時(shí)間復(fù)雜度且可存儲(chǔ)海量圖結(jié)構(gòu)的隨機(jī)圖的生成方法有待提出。

【發(fā)明內(nèi)容】

[0004]本申請(qǐng)旨在至少在一定程度上解決上述技術(shù)問題。
[0005]為此,本申請(qǐng)的第一個(gè)目的在于提出一種隨機(jī)圖的生成方法,。
[0006]本申請(qǐng)的第二個(gè)目的在于提出一種隨機(jī)圖的生成系統(tǒng)。
[0007]為達(dá)上述目的,根據(jù)本申請(qǐng)第一方面實(shí)施例提出了一種隨機(jī)圖的生成方法,包括以下步驟:S1、輸入原始圖結(jié)構(gòu),其中,所述原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù);S2、從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),所述M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送所述Q條第一出邊信息,以及將Q條出邊鎖定;S3、所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足所述預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將所述第二出邊信息反饋至發(fā)送所述第一出邊信息的節(jié)點(diǎn);S4、所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令,并將所述第二交換指令發(fā)送至發(fā)送所述第二出邊信息的節(jié)點(diǎn);S5、接收所述第二出邊信息的節(jié)點(diǎn)執(zhí)行所述第一交換指令,接收到所述第二交換指令的節(jié)點(diǎn)執(zhí)行所述第二交換指令;S6、對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖;以及S7、重復(fù)執(zhí)行所述步驟S2-S6,直至達(dá)到預(yù)設(shè)迭代次數(shù)。
[0008]本申請(qǐng)實(shí)施例的隨機(jī)圖的生成方法,通過對(duì)輸入的原始圖結(jié)構(gòu),通過從原始圖結(jié)構(gòu)中任意選兩條邊,并在原始圖結(jié)構(gòu)中不存在第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊且第一條邊的發(fā)出節(jié)點(diǎn)與第二條邊的結(jié)束節(jié)點(diǎn)不是同一節(jié)點(diǎn)時(shí),即將第一條邊和第二條邊刪除,并添加由第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊和由第二條邊的發(fā)出節(jié)點(diǎn)到第一條邊的結(jié)束節(jié)點(diǎn)的邊,以對(duì)原始圖結(jié)構(gòu)進(jìn)行換邊,并重復(fù)選邊-換邊的過程,直至執(zhí)行預(yù)設(shè)迭代次數(shù),由此能夠得到與原始圖結(jié)構(gòu)節(jié)點(diǎn)數(shù)、邊數(shù)一致,且每個(gè)節(jié)點(diǎn)的出度和入度也一致的隨機(jī)圖。
[0009]此外,在每次重復(fù)過程中的選邊-換邊中的任務(wù)都可并行執(zhí)行,大大降低了執(zhí)行時(shí)間,經(jīng)過多次迭代后,時(shí)間復(fù)雜度也僅為分鐘級(jí)。并且并行處理可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。相對(duì)于傳統(tǒng)的隨機(jī)圖生成方法,大大降低了時(shí)間復(fù)雜度和圖結(jié)構(gòu)的存儲(chǔ)能力,更便于大數(shù)據(jù)量圖結(jié)構(gòu)的隨機(jī)圖生成。
[0010]本申請(qǐng)第二方面實(shí)施例提供了一種隨機(jī)圖的生成系統(tǒng),包括:輸入裝置,用于輸入原始圖結(jié)構(gòu),其中,所述原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù);以及控制裝置,用于控制所述N個(gè)節(jié)點(diǎn)重復(fù)執(zhí)行步驟S2-S6,直至達(dá)到預(yù)設(shè)迭代次數(shù),其中,S2、從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),所述M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送所述Q條第一出邊信息,以及將Q條出邊鎖定;S3、所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足所述預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將所述第二出邊信息反饋至發(fā)送所述第一出邊信息的節(jié)點(diǎn);S4、所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令,并將所述第二交換指令發(fā)送至發(fā)送所述第二出邊信息的節(jié)點(diǎn);S5、接收所述第二出邊信息的節(jié)點(diǎn)執(zhí)行所述第一交換指令,接收到所述第二交換指令的節(jié)點(diǎn)執(zhí)行所述第二交換指令;S6、對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖。
[0011]本申請(qǐng)實(shí)施例的隨機(jī)圖的生成系統(tǒng),通過從原始圖結(jié)構(gòu)中任意選兩條邊,并在原始圖結(jié)構(gòu)中不存在第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊且第一條邊的發(fā)出節(jié)點(diǎn)與第二條邊的結(jié)束節(jié)點(diǎn)不是同一節(jié)點(diǎn)時(shí),即將第一條邊和第二條邊刪除,并添加由第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊和由第二條邊的發(fā)出節(jié)點(diǎn)到第一條邊的結(jié)束節(jié)點(diǎn)的邊,以對(duì)原始圖結(jié)構(gòu)進(jìn)行換邊,并重復(fù)選邊-換邊的過程,直至執(zhí)行預(yù)設(shè)迭代次數(shù),由此能夠得到與原始圖結(jié)構(gòu)節(jié)點(diǎn)數(shù)、邊數(shù)一致,且每個(gè)節(jié)點(diǎn)的出度和入度也一致的隨機(jī)圖。
[0012]此外,在每次重復(fù)過程中的選邊-換邊中的任務(wù)都可并行執(zhí)行,大大降低了執(zhí)行時(shí)間,經(jīng)過多次迭代后,時(shí)間復(fù)雜度也僅為分鐘級(jí)。并且并行處理可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。相對(duì)于傳統(tǒng)的隨機(jī)圖生成方法,大大降低了時(shí)間復(fù)雜度和圖結(jié)構(gòu)的存儲(chǔ)能力,更便于大數(shù)據(jù)量圖結(jié)構(gòu)的隨機(jī)圖生成。
[0013]本申請(qǐng)的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請(qǐng)的實(shí)踐了解到。
【附圖說明】
[0014]本申請(qǐng)的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
[0015]圖1為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的隨機(jī)圖的生成方法的流程圖;
[0016]圖2a為根據(jù)本申請(qǐng)一個(gè)實(shí)施例所使用的BSP架構(gòu)的示意圖;
[0017]圖2b為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的BSP架構(gòu)的超步組成示意圖;
[0018]圖2c為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步所包含的階段示意圖;
[0019]圖3a為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的原始圖結(jié)構(gòu)的示意圖;
[0020]圖3b為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步O的處理示意圖;
[0021]圖3c為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步I的處理示意圖;
[0022]圖3d為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步2的處理示意圖;
[0023]圖3e為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步3的處理示意圖;
[0024]圖3f為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的超步4的處理示意圖;
[0025]圖4為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的隨機(jī)圖的生成系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026]下面詳細(xì)描述本申請(qǐng)的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本申請(qǐng),而不能理解為對(duì)本申請(qǐng)的限制。
[0027]在本申請(qǐng)的描述中,需要理解的是,術(shù)語“中心”、“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本申請(qǐng)和簡(jiǎn)化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本申請(qǐng)的限制。此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。
[0028]在本申請(qǐng)的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本申請(qǐng)中的具體含義。
[0029]下面參考附圖描述根據(jù)本申請(qǐng)實(shí)施例的隨機(jī)圖的生成方法和系統(tǒng)。
[0030]圖1為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的隨機(jī)圖的生成方法的流程圖。
[0031]如圖1所示,根據(jù)本申請(qǐng)實(shí)施例的隨機(jī)圖的生成方法,包括以下步驟。
[0032]SI,輸入原始圖結(jié)構(gòu),其中,原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù)。
[0033]本申請(qǐng)實(shí)施例中的原始結(jié)構(gòu)圖可以是任意網(wǎng)絡(luò)圖結(jié)構(gòu),特別是復(fù)雜網(wǎng)絡(luò)圖結(jié)構(gòu),例如,可以是但不限于神經(jīng)網(wǎng)絡(luò)圖結(jié)構(gòu)、社交網(wǎng)絡(luò)圖結(jié)構(gòu)和引用網(wǎng)絡(luò)圖結(jié)構(gòu)等。
[0034]經(jīng)過SI的初始化操作之后,可通過S2-S7生成原始圖結(jié)構(gòu)對(duì)應(yīng)的隨機(jī)圖。在本申請(qǐng)的一個(gè)實(shí)施例中,可通過 BSP (Bulk Synchronous Parallel Computing Model,整體同步并行計(jì)算模型)結(jié)構(gòu)執(zhí)行S2-S6以生成隨機(jī)圖。
[0035]BSP結(jié)構(gòu)是由Valiant在1990年提出,該模型基于一個(gè)Master控制協(xié)調(diào),多個(gè)Worker工作機(jī)同步執(zhí)行,數(shù)據(jù)從輸入的隊(duì)列中讀取,該模型的架構(gòu)如圖2a所示,其中,Client客戶端將數(shù)據(jù)輸入Worker,并通知Master開始工作,然后等待Master完成工作,并從Worker提取處理結(jié)束后的數(shù)據(jù)。Master接收Client客戶端發(fā)送的啟動(dòng)消息,不斷迭代直至沒有活躍(active)的節(jié)點(diǎn)進(jìn)行工作(此過程中首先啟動(dòng)所有active的Worker節(jié)點(diǎn)進(jìn)行工作,并等待所有Worker完成工作后更新active的Worker的數(shù)量),迭代完成后通知Client完成任務(wù)。Worker在接收到Client輸入的數(shù)據(jù)后被設(shè)置為active狀態(tài),然后不斷迭代直至為inactive狀態(tài)(此過程中先等待Master發(fā)送的啟動(dòng)消息,然后從In-Q中讀取消息,并進(jìn)行消息處理等工作,以及發(fā)送消息,并對(duì)是否為active狀態(tài)進(jìn)行更新,在迭代完成時(shí)通知Master完成該輪迭代工作),其中,當(dāng)有消息發(fā)送給Worker時(shí),Worker被設(shè)置為active 狀態(tài)。
[0036]BSP結(jié)構(gòu)不僅是一種體系結(jié)構(gòu)模型,也是設(shè)計(jì)并行程序的一種方法。BSP程序設(shè)計(jì)準(zhǔn)則是整體同步(bulk synchrony),其獨(dú)特之處在于超步(super step)概念的引入。一個(gè)BSP程序同時(shí)具有水平和垂直兩個(gè)方面的結(jié)構(gòu)。從垂直上看,如圖2b所示,一個(gè)BSP程序由一系列串行的超步(super step)組成,這種結(jié)構(gòu)類似于一個(gè)串行程序結(jié)構(gòu)。從水平上看,在每個(gè)超步中,所有的進(jìn)程并行執(zhí)行局部計(jì)算。
[0037]如圖2c所示,每個(gè)超步可分為以下三個(gè)階段。
[0038]I)本地計(jì)算階段,每個(gè)處理器只對(duì)存儲(chǔ)本地內(nèi)存中的數(shù)據(jù)進(jìn)行本地計(jì)算。
[0039]2)全局通信階段,對(duì)任何非本地?cái)?shù)據(jù)進(jìn)行操作(交互操作)。
[0040]3)柵欄同步階段,等待所有通信行為的結(jié)束。
[0041]由此,S2-S6可分別通過BSP結(jié)構(gòu)的超步0_4實(shí)現(xiàn),具體如下。
[0042]S2,從N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送Q條第一出邊信息,以及將Q條出邊鎖定。
[0043]在本申請(qǐng)的一個(gè)實(shí)施例中,從N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn)具體包括:將N個(gè)節(jié)點(diǎn)中具有出邊的節(jié)點(diǎn)作為種子節(jié)點(diǎn)。并且,M個(gè)種子節(jié)點(diǎn)通過以下公式選取Q條出邊:
[0044]Q = ceil (I Out ⑴ I/2) (I)
[0045]其中,|0ut(i) I為節(jié)點(diǎn)i的出邊數(shù)量,ceil O為向上取整函數(shù)。
[0046]具體地,步驟S2可通過BSP結(jié)構(gòu)中的超步0,即super step = 0,來實(shí)現(xiàn)。
[0047]當(dāng)super step = O時(shí),對(duì)于原始圖結(jié)構(gòu)的N個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn),如果其存在出邊,貝Ij可將該節(jié)點(diǎn)作為種子節(jié)點(diǎn)。從每個(gè)種子節(jié)點(diǎn)的出邊中隨機(jī)選取Q =ceil (I Out (i) I/2)條出邊,并根據(jù)每條出邊生成一條第一出邊信息。然后將Q條第一出邊信息分分別發(fā)送至除第一出邊信息發(fā)出節(jié)點(diǎn)之外的、隨機(jī)選取的Q個(gè)節(jié)點(diǎn)。其中,第一出邊信息包括出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn),可表示為[srcVertexIdl, destVertexIdl],其中,srcVertexIdl為出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)ID (Identity,身份標(biāo)識(shí)),destVertexIdl為出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)ID。
[0048]在本申請(qǐng)的實(shí)施例中,在輸入原始圖結(jié)構(gòu)時(shí),原始圖結(jié)構(gòu)中的邊的初始狀態(tài)被設(shè)置為未鎖定狀態(tài),即邊的值設(shè)置為O。當(dāng)M個(gè)種子節(jié)點(diǎn)選取出Q條邊,并向除自身指紋的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)生Q條第一出邊信息后,可將選取的Q條出邊鎖定,即將選取的Q條出邊的值設(shè)置為I。
[0049]舉例來說,對(duì)于已輸入的如圖3a所示的原始結(jié)構(gòu)圖,具有8個(gè)節(jié)點(diǎn),分別為1,2,3,4,5,6,7,8,以及如圖3a所示的6條邊。其中,節(jié)點(diǎn)I, 4,5,7,8具有出邊,因此,節(jié)點(diǎn)1,4,5,7,8可選取為種子節(jié)點(diǎn),其出邊的數(shù)量分別為1,1,1,1,2。根據(jù)公式⑴可得:節(jié)點(diǎn)1,4,5,7,8可選取出的出邊數(shù)量分別為1,I, I, I, 1然后,如圖3b所示,以節(jié)點(diǎn)8和節(jié)點(diǎn)5為例進(jìn)行說明,可隨機(jī)從節(jié)點(diǎn)8的出邊中選擇一條出邊8->5,并生成該出邊的第一出邊信息[8,5](灰色虛線表示發(fā)送過程),并發(fā)送至除節(jié)點(diǎn)8之外的任意一個(gè)節(jié)點(diǎn)(例如向節(jié)點(diǎn)4發(fā)送),并將該8->5邊的值設(shè)置為1,進(jìn)行鎖定。還可隨機(jī)從節(jié)點(diǎn)5的出邊中選擇一條出邊5->2,并生成該出邊的第一出邊信息[5,2],并發(fā)送至除節(jié)點(diǎn)5之外的任意一個(gè)節(jié)點(diǎn)(例如向節(jié)點(diǎn)6發(fā)送),并將該5->2邊的值設(shè)置為1,進(jìn)行鎖定。其中,被鎖定的邊用灰色實(shí)線表不。
[0050]S3,N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將第二出邊信息反饋至發(fā)送第一出邊信息的節(jié)點(diǎn)。
[0051]在本申請(qǐng)的一個(gè)實(shí)施例中,N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)根據(jù)第一出邊信息判斷是否滿足預(yù)設(shè)條件具體包括:N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)判斷自身是否具有出邊;如果接收到第一出邊信息的節(jié)點(diǎn)具有出邊,則進(jìn)一步判斷第一出邊信息中的終點(diǎn)節(jié)點(diǎn)是否在自身的出邊中存在或自身為第一出邊信息中的終點(diǎn)節(jié)點(diǎn);以及如果第一出邊信息中的終點(diǎn)節(jié)點(diǎn)在自身的出邊中不存在且自身不為第一出邊信息中的終點(diǎn)節(jié)點(diǎn)(destVertexIdl不等于4),則判斷滿足預(yù)設(shè)條件。
[0052]具體地,步驟S3可通過BSP結(jié)構(gòu)中的超步1,即super step = 1,來實(shí)現(xiàn)。
[0053]當(dāng)super step = I時(shí),對(duì)于原始圖結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn),在該super step=I中維護(hù)一個(gè)List,用于存放該節(jié)點(diǎn)所有的出邊,以下即用List簡(jiǎn)稱。如果一個(gè)節(jié)點(diǎn)收到第一出邊信息,并且該節(jié)點(diǎn)存在出邊,則判斷接收到的第一出邊信息[srcVertexIdl, destVertexIdl]中的destVertexIdl是否在該節(jié)點(diǎn)的出邊中存在或者destVertexIdl等于該節(jié)點(diǎn)ID。如果destVertexIdl在該節(jié)點(diǎn)的出邊中不存在,且destVertexIdl不等于該節(jié)點(diǎn)的ID,則判滿足條件,并從List中隨機(jī)選取一條邊(此單向邊的終點(diǎn)節(jié)點(diǎn)ID為destVertexId2),并向ID為srcVertexIdl的節(jié)點(diǎn)(發(fā)送第一出邊信息的發(fā)出)傳遞第二出邊信息。
[0054]其中,第二出邊信息可包括接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn)以及第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn),可表示為:[srcVertexId2, destVertexId2, destVertexIdl],其中,srcVertexId2為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn),destVertexId2為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),destVertexIdl為第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn)。
[0055]舉例來說,圖3b中節(jié)點(diǎn)4接收到節(jié)點(diǎn)8發(fā)送的第一出邊信息[8,5],節(jié)點(diǎn)6接收到節(jié)點(diǎn)5發(fā)送的第一出邊信息[5,2],則節(jié)點(diǎn)4和6分別判斷自身是否有出邊。由于節(jié)點(diǎn)6沒有出邊,則節(jié)點(diǎn)6不滿足預(yù)設(shè)條件,節(jié)點(diǎn)6對(duì)應(yīng)的變換過程結(jié)束。而節(jié)點(diǎn)4有一條出邊4->3,且節(jié)點(diǎn)4接收到的第一出邊信息[8,5]中的發(fā)出節(jié)點(diǎn)不在該出邊4->3中,且節(jié)點(diǎn)4不是第一出邊信息[8,5]的終點(diǎn)節(jié)點(diǎn),因此,節(jié)點(diǎn)4滿足預(yù)設(shè)條件。
[0056]進(jìn)而,如圖3c所示,隨機(jī)選擇節(jié)點(diǎn)4的一條出邊4_>3,并生成第二出邊信息[4,3,5],而節(jié)點(diǎn)4接收到的第一出邊信息時(shí)節(jié)點(diǎn)8發(fā)送的,因此,節(jié)點(diǎn)4向節(jié)點(diǎn)8反饋第二出邊信息[4,3,5] ο
[0057]S4,N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)根據(jù)第二出邊信息生成第一交換指令和第二交換指令,并將第二交換指令發(fā)送至發(fā)送第二出邊信息的節(jié)點(diǎn)。
[0058]在本發(fā)明的一個(gè)實(shí)施例中,N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)根據(jù)第二出邊信息生成第一交換指令和第二交換指令具體包括:N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)檢查自身的出邊中是否存在接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)或自身為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn);以及如果接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)不存在且自身不為接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),則生成第一交換指令和第二交換指令。
[0059]其中,第一交換指令和第二交換指令用于控制換邊,即將兩個(gè)節(jié)點(diǎn)的出邊進(jìn)行交換,由此,雖然生成的網(wǎng)絡(luò)圖的邊發(fā)生了變化,但是每個(gè)節(jié)點(diǎn)的出度和入度仍然與原圖結(jié)構(gòu)一致。具體地,步驟S4可通過BSP結(jié)構(gòu)中的超步2,即super step = 2,來實(shí)現(xiàn)。
[0060]當(dāng)super step = 2時(shí),對(duì)于原始圖結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn),如果節(jié)點(diǎn)srcVertexIdl收到反饋的第二出邊信息為[srcVertexId2, destVertexId2, destVertexIdl],貝丨J節(jié)點(diǎn)srcVertexIdl檢查其出邊中是否存在destVertexId2節(jié)點(diǎn),并檢查節(jié)點(diǎn)srcVertexId2是否為destVertexId2節(jié)點(diǎn),若節(jié)點(diǎn)srcVertexIdl的出邊中不存在destVertexId2節(jié)點(diǎn)且節(jié)點(diǎn)srcVertexId2與destVertexId2節(jié)點(diǎn)不是同一節(jié)點(diǎn),則開始交換邊,即:傳遞第一交換指令[_,destVertexIdl]和[+,destVertexId2]至節(jié)點(diǎn) srcVertexIdl (即將第一交換指令發(fā)送給自己),并將第二交換指令[_,destVertexId2]和[+,destVertexIdl]發(fā)送至節(jié)點(diǎn)srcVertexId2 (發(fā)送第二出邊信息的節(jié)點(diǎn))。
[0061]舉例來說,對(duì)于圖3c所示的當(dāng)節(jié)點(diǎn)8接收到第二出邊信息[4,3,5]時(shí),節(jié)點(diǎn)8檢查節(jié)點(diǎn)8的出邊中是否存在節(jié)點(diǎn)4所選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)(即出邊4->3的終點(diǎn)節(jié)點(diǎn)3),由于8的出邊為8->6和8->5,不存在節(jié)點(diǎn)3,并且節(jié)點(diǎn)4與節(jié)點(diǎn)3不是同一節(jié)點(diǎn),因此,如圖3d所示,可生成第一交換指令[-,5]和[+,3],并發(fā)送至節(jié)點(diǎn)8,以及生成第二交換指令[_,3]和[+,5],并發(fā)送至節(jié)點(diǎn)4。
[0062]S5,接收第二出邊信息的節(jié)點(diǎn)執(zhí)行第一交換指令,接收到第二交換指令的節(jié)點(diǎn)執(zhí)行第二交換指令。
[0063]具體地,步驟S5可通過BSP結(jié)構(gòu)中的超步3,即super step = 3,來實(shí)現(xiàn)。
[0064]當(dāng)super step = 3時(shí),接收第二出邊信息的節(jié)點(diǎn)(也就是生成第一交換指令的節(jié)點(diǎn))執(zhí)行第一交換指令,接收到第二交換指令的節(jié)點(diǎn)執(zhí)行第二交換指令。
[0065]舉例來說,如圖3e所示,節(jié)點(diǎn)8執(zhí)行自己生成的第一交換指令[-,5]和[+,3],即刪除8->5這條邊同時(shí)添加8->3這條邊;節(jié)點(diǎn)4收到了第二交換指令[_,3]和[+,5],則刪除4->3這條邊同時(shí)添加4->5這條邊。
[0066]S6,對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖。
[0067]具體地,步驟S6可通過BSP結(jié)構(gòu)中的超步4,即super step = 4,來實(shí)現(xiàn)。
[0068]當(dāng)super step = 4時(shí),對(duì)于每個(gè)節(jié)點(diǎn),將其出邊的值設(shè)為0,即解鎖。舉例來說,如圖3f所示,,節(jié)點(diǎn)5的5->2這條邊的值重設(shè)未O進(jìn)行解鎖(由圖3e中的灰色變?yōu)閳D3f中的黑色)。
[0069]S7,判斷步驟S2-S6的執(zhí)行次數(shù)是否達(dá)到預(yù)設(shè)迭代次數(shù),如果達(dá)到預(yù)設(shè)迭代次數(shù),則結(jié)束,否則重復(fù)執(zhí)行步驟S2-S6。
[0070]也就是說不斷重復(fù)以上超步super stepO-4,當(dāng)執(zhí)行次數(shù)達(dá)到預(yù)設(shè)迭代次數(shù)時(shí),結(jié)束,并輸出最后一次執(zhí)行得到的圖結(jié)構(gòu)。
[0071]由此,通過超步中的并行執(zhí)行局部計(jì)算策略分別對(duì)S2-S6中每個(gè)步驟中的任務(wù)進(jìn)行處理,經(jīng)過多次迭代重復(fù),可大大降低的執(zhí)行時(shí)間,實(shí)現(xiàn)分鐘級(jí)別的時(shí)間復(fù)雜度,并且可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。
[0072]其中,預(yù)設(shè)迭代次數(shù)PN可為:PN = n*M,其中,M為原始圖結(jié)構(gòu)中邊的數(shù)量,η正整數(shù)。經(jīng)試驗(yàn)驗(yàn)證,η為100時(shí)生成的圖結(jié)構(gòu)已經(jīng)充分隨機(jī)。
[0073]本申請(qǐng)實(shí)施例的隨機(jī)圖的生成方法,通過從原始圖結(jié)構(gòu)中任意選兩條邊,并在原始圖結(jié)構(gòu)中不存在第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊且第一條邊的發(fā)出節(jié)點(diǎn)與第二條邊的結(jié)束節(jié)點(diǎn)不是同一節(jié)點(diǎn)時(shí),即將第一條邊和第二條邊刪除,并添加由第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊和由第二條邊的發(fā)出節(jié)點(diǎn)到第一條邊的結(jié)束節(jié)點(diǎn)的邊,以對(duì)原始圖結(jié)構(gòu)進(jìn)行換邊,并重復(fù)選邊-換邊的過程,直至執(zhí)行預(yù)設(shè)迭代次數(shù),由此能夠得到與原始圖結(jié)構(gòu)節(jié)點(diǎn)數(shù)、邊數(shù)一致,且每個(gè)節(jié)點(diǎn)的出度和入度也一致的隨機(jī)圖。
[0074]此外,在每次重復(fù)過程中的選邊-換邊中的任務(wù)都可并行執(zhí)行,大大降低了執(zhí)行時(shí)間,經(jīng)過多次迭代后,時(shí)間復(fù)雜度也僅為分鐘級(jí)。并且并行處理可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。相對(duì)于傳統(tǒng)的隨機(jī)圖生成方法,大大降低了時(shí)間復(fù)雜度和圖結(jié)構(gòu)的存儲(chǔ)能力,更便于大數(shù)據(jù)量圖結(jié)構(gòu)的隨機(jī)圖生成。
[0075]為了實(shí)現(xiàn)上述實(shí)施例,本申請(qǐng)還提出一種隨機(jī)圖的生成系統(tǒng)。
[0076]圖4為根據(jù)本申請(qǐng)一個(gè)實(shí)施例的隨機(jī)圖的生成系統(tǒng)的結(jié)構(gòu)示意圖。
[0077]如圖4所示,根據(jù)本申請(qǐng)實(shí)施例的隨機(jī)圖的生成系統(tǒng),包括:輸入裝置10和控制裝置20。
[0078]具體地,輸入裝置10用于輸入原始圖結(jié)構(gòu),其中,原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù)。
[0079]本申請(qǐng)實(shí)施例中的原始結(jié)構(gòu)圖可以是任意網(wǎng)絡(luò)圖結(jié)構(gòu),特別是復(fù)雜網(wǎng)絡(luò)圖結(jié)構(gòu),例如,可以是但不限于神經(jīng)網(wǎng)絡(luò)圖結(jié)構(gòu)、社交網(wǎng)絡(luò)圖結(jié)構(gòu)和引用網(wǎng)絡(luò)圖結(jié)構(gòu)等。
[0080]控制裝置20用于控制N個(gè)節(jié)點(diǎn)重復(fù)執(zhí)行步驟S2-S6,直至達(dá)到預(yù)設(shè)迭代次數(shù)結(jié)束。
[0081]在本申請(qǐng)的一個(gè)實(shí)施例中,控制裝置20可通過整體同步并行計(jì)算模型BSP結(jié)構(gòu)的超步0-4實(shí)現(xiàn)步驟S2-S6以生成隨機(jī)圖。更具體地,控制裝置20不斷重復(fù)以上超步superstepO-4,以重復(fù)執(zhí)行S2-S6,當(dāng)執(zhí)行次數(shù)達(dá)到預(yù)設(shè)迭代次數(shù)時(shí),結(jié)束,并輸出最后一次執(zhí)行得到的圖結(jié)構(gòu),作為生成的隨機(jī)圖。
[0082]BSP結(jié)構(gòu)是由Valiant在1990年提出,該模型基于一個(gè)Master控制協(xié)調(diào),多個(gè)Worker工作機(jī)同步執(zhí)行,數(shù)據(jù)從輸入的隊(duì)列中讀取,該模型的架構(gòu)如圖2a所示,其中,Client客戶端將數(shù)據(jù)輸入Worker,并通知Master開始工作,然后等待Master完成工作,并從Worker提取處理結(jié)束后的數(shù)據(jù)。Master接收Client客戶端發(fā)送的啟動(dòng)消息,不斷迭代直至沒有活躍(active)的節(jié)點(diǎn)進(jìn)行工作(此過程中首先啟動(dòng)所有active的Worker節(jié)點(diǎn)進(jìn)行工作,并等待所有Worker完成工作后更新active的Worker的數(shù)量),迭代完成后通知Client完成任務(wù)。Worker在接收到Client輸入的數(shù)據(jù)后被設(shè)置為active狀態(tài),然后不斷迭代直至為inactive狀態(tài)(此過程中先等待Master發(fā)送的啟動(dòng)消息,然后從In-Q中讀取消息,并進(jìn)行消息處理等工作,以及發(fā)送消息,并對(duì)是否為active狀態(tài)進(jìn)行更新,在迭代完成時(shí)通知Master完成該輪迭代工作),其中,當(dāng)有消息發(fā)送給Worker時(shí),Worker被設(shè)置為active 狀態(tài)。
[0083]BSP結(jié)構(gòu)不僅是一種體系結(jié)構(gòu)模型,也是設(shè)計(jì)并行程序的一種方法。BSP程序設(shè)計(jì)準(zhǔn)則是整體同步(bulk synchrony),其獨(dú)特之處在于超步(super step)概念的引入。一個(gè)BSP程序同時(shí)具有水平和垂直兩個(gè)方面的結(jié)構(gòu)。從垂直上看,如圖2b所示,一個(gè)BSP程序由一系列串行的超步(super step)組成,這種結(jié)構(gòu)類似于一個(gè)串行程序結(jié)構(gòu)。從水平上看,在每個(gè)超步中,所有的進(jìn)程并行執(zhí)行局部計(jì)算。
[0084]如圖2c所示,每個(gè)超步可分為以下三個(gè)階段。
[0085]I)本地計(jì)算階段,每個(gè)處理器只對(duì)存儲(chǔ)本地內(nèi)存中的數(shù)據(jù)進(jìn)行本地計(jì)算。
[0086]2)全局通信階段,對(duì)任何非本地?cái)?shù)據(jù)進(jìn)行操作(交互操作)。
[0087]3)柵欄同步階段,等待所有通信行為的結(jié)束。
[0088]由此,通過超步中的并行執(zhí)行局部計(jì)算策略分別對(duì)S2-S6中每個(gè)步驟中的任務(wù)進(jìn)行處理,經(jīng)過多次迭代重復(fù),可大大降低的執(zhí)行時(shí)間,實(shí)現(xiàn)分鐘級(jí)別的時(shí)間復(fù)雜度,并且可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。
[0089]其中,預(yù)設(shè)迭代次數(shù)PN可為:PN = n*M,其中,M為原始圖結(jié)構(gòu)中邊的數(shù)量,η正整數(shù)。經(jīng)試驗(yàn)驗(yàn)證,η為100時(shí)生成的圖結(jié)構(gòu)已經(jīng)充分隨機(jī)。
[0090]其中,S2、從N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送Q條第一出邊信息,以及將Q條出邊鎖定。
[0091 ] 在本申請(qǐng)的一個(gè)實(shí)施例中,控制裝置從N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn)時(shí),具體用于:將N個(gè)節(jié)點(diǎn)中具有出邊的節(jié)點(diǎn)作為種子節(jié)點(diǎn),并具體用于控制M個(gè)種子節(jié)點(diǎn)通過以下公式選取Q條出邊:
[0092]Q = ceil (I Out ⑴ I/2) (I)
[0093]其中,|0ut(i) I為節(jié)點(diǎn)i的出邊數(shù)量,ceil O為向上取整函數(shù)。
[0094]更具體地,步驟S2可通過BSP結(jié)構(gòu)中的超步0,即super step = 0,來實(shí)現(xiàn)。
[0095]當(dāng)super step = O時(shí),對(duì)于原始圖結(jié)構(gòu)的N個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn),如果其存在出邊,貝Ij可將該節(jié)點(diǎn)作為種子節(jié)點(diǎn)。從每個(gè)種子節(jié)點(diǎn)的出邊中隨機(jī)選取Q =ceil (I Out (i) I/2)條出邊,并根據(jù)每條出邊生成一條第一出邊信息。然后將Q條第一出邊信息分分別發(fā)送至除第一出邊信息發(fā)出節(jié)點(diǎn)之外的、隨機(jī)選取的Q個(gè)節(jié)點(diǎn)。其中,第一出邊信息包括出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn),可表示為[srcVertexIdl, destVertexIdl],其中,srcVertexIdl為出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)ID (Identity,身份標(biāo)識(shí)),destVertexIdl為出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)ID。
[0096]在本申請(qǐng)的實(shí)施例中,在輸入原始圖結(jié)構(gòu)時(shí),原始圖結(jié)構(gòu)中的邊的初始狀態(tài)被設(shè)置為未鎖定狀態(tài),即邊的值設(shè)置為O。當(dāng)M個(gè)種子節(jié)點(diǎn)選取出Q條邊,并向除自身指紋的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)生Q條第一出邊信息后,可將選取的Q條出邊鎖定,即將選取的Q條出邊的值設(shè)置為I。
[0097]舉例來說,對(duì)于已輸入的如圖3a所示的原始結(jié)構(gòu)圖,具有8個(gè)節(jié)點(diǎn),分別為1,2,3,4,5,6,7,8,以及如圖3a所示的6條邊。其中,節(jié)點(diǎn)I, 4,5,7,8具有出邊,因此,節(jié)點(diǎn)1,4,5,7,8可選取為種子節(jié)點(diǎn),其出邊的數(shù)量分別為1,1,1,1,2。根據(jù)公式⑴可得:節(jié)點(diǎn)1,4,5,7,8可選取出的出邊數(shù)量分別為1,I, I, I, 1然后,如圖3b所示,以節(jié)點(diǎn)8和節(jié)點(diǎn)5為例進(jìn)行說明,可隨機(jī)從節(jié)點(diǎn)8的出邊中選擇一條出邊8->5,并生成該出邊的第一出邊信息[8,5](灰色虛線表示發(fā)送過程),并發(fā)送至除節(jié)點(diǎn)8之外的任意一個(gè)節(jié)點(diǎn)(例如向節(jié)點(diǎn)4發(fā)送),并將該8->5邊的值設(shè)置為1,進(jìn)行鎖定。還可隨機(jī)從節(jié)點(diǎn)5的出邊中選擇一條出邊5->2,并生成該出邊的第一出邊信息[5,2],并發(fā)送至除節(jié)點(diǎn)5之外的任意一個(gè)節(jié)點(diǎn)(例如向節(jié)點(diǎn)6發(fā)送),并將該5->2邊的值設(shè)置為1,進(jìn)行鎖定。其中,被鎖定的邊用灰色實(shí)線表不。
[0098]S3、N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將第二出邊信息反饋至發(fā)送第一出邊信息的節(jié)點(diǎn)。
[0099]在本申請(qǐng)的一個(gè)實(shí)施例中,控制裝置20在控制N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)根據(jù)第一出邊信息判斷是否滿足預(yù)設(shè)條件時(shí),具體用于:N個(gè)節(jié)點(diǎn)中接收到第一出邊信息的節(jié)點(diǎn)判斷自身是否具有出邊;如果接收到第一出邊信息的節(jié)點(diǎn)具有出邊,則進(jìn)一步判斷第一出邊信息中的終點(diǎn)節(jié)點(diǎn)是否在自身的出邊中存在或自身為第一出邊信息中的終點(diǎn)節(jié)點(diǎn);以及如果第一出邊信息中的終點(diǎn)節(jié)點(diǎn)在自身的出邊中不存在且自身不為第一出邊信息中的終點(diǎn)節(jié)點(diǎn)(destVertexIdl不等于4),貝Ij判斷滿足預(yù)設(shè)條件。
[0100]更具體地,步驟S3可通過BSP結(jié)構(gòu)中的超步1,即super step = 1,來實(shí)現(xiàn)。
[0101]當(dāng)super step = I時(shí),對(duì)于原始圖結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn),在該super step=I中維護(hù)一個(gè)List,用于存放該節(jié)點(diǎn)所有的出邊,以下即用U過簡(jiǎn)稱。如果一個(gè)節(jié)點(diǎn)收到第一出邊信息,并且該節(jié)點(diǎn)存在出邊,則判斷接收到的第一出邊信息[srcVertexIdl, destVertexIdl]中的destVertexIdl是否在該節(jié)點(diǎn)的出邊中存在或者destVertexIdl等于該節(jié)點(diǎn)ID。如果destVertexIdl在該節(jié)點(diǎn)的出邊中不存在,且destVertexIdl不等于該節(jié)點(diǎn)的ID,則判滿足條件,并從List中隨機(jī)選取一條邊(此單向邊的終點(diǎn)節(jié)點(diǎn)ID為destVertexId2),并向ID為srcVertexIdl的節(jié)點(diǎn)(發(fā)送第一出邊信息的發(fā)出)傳遞第二出邊信息。
[0102]其中,第二出邊信息可包括接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn)以及第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn),可表示為:[srcVertexId2, destVertexId2, destVertexIdl],其中,srcVertexId2為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn),destVertexId2為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),destVertexIdl為第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn)。
[0103]舉例來說,圖3b中節(jié)點(diǎn)4接收到節(jié)點(diǎn)8發(fā)送的第一出邊信息[8,5],節(jié)點(diǎn)6接收到節(jié)點(diǎn)5發(fā)送的第一出邊信息[5,2],則節(jié)點(diǎn)4和6分別判斷自身是否有出邊。由于節(jié)點(diǎn)6沒有出邊,則節(jié)點(diǎn)6不滿足預(yù)設(shè)條件,節(jié)點(diǎn)6對(duì)應(yīng)的變換過程結(jié)束。而節(jié)點(diǎn)4有一條出邊4->3,且節(jié)點(diǎn)4接收到的第一出邊信息[8,5]中的發(fā)出節(jié)點(diǎn)不在該出邊4->3中,且節(jié)點(diǎn)4不是第一出邊信息[8,5]的終點(diǎn)節(jié)點(diǎn),因此,節(jié)點(diǎn)4滿足預(yù)設(shè)條件。
[0104]進(jìn)而,如圖3c所示,隨機(jī)選擇節(jié)點(diǎn)4的一條出邊4_>3,并生成第二出邊信息[4,3,5],而節(jié)點(diǎn)4接收到的第一出邊信息時(shí)節(jié)點(diǎn)8發(fā)送的,因此,節(jié)點(diǎn)4向節(jié)點(diǎn)8反饋第二出邊信息[4,3,5] ο
[0105]S4、N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)根據(jù)第二出邊信息生成第一交換指令和第二交換指令,并將第二交換指令發(fā)送至發(fā)送第二出邊信息的節(jié)點(diǎn)。
[0106]在本發(fā)明的一個(gè)實(shí)施例中,控制裝置20在控制N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)根據(jù)第二出邊信息生成第一交換指令和第二交換指令時(shí),具體用于:N個(gè)節(jié)點(diǎn)中接收到第二出邊信息的節(jié)點(diǎn)檢查自身的出邊中是否存在接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)或自身為接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn);以及如果接收到第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)不存在且自身不為接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),則生成第一交換指令和第二交換指令。
[0107]其中,第一交換指令和第二交換指令用于控制換邊,即將兩個(gè)節(jié)點(diǎn)的出邊進(jìn)行交換,由此,雖然生成的網(wǎng)絡(luò)圖的邊發(fā)生了變化,但是每個(gè)節(jié)點(diǎn)的出度和入度仍然與原圖結(jié)構(gòu)一致。具體地,步驟S4可通過BSP結(jié)構(gòu)中的超步2,即super step = 2,來實(shí)現(xiàn)。
[0108]當(dāng)super step = 2時(shí),對(duì)于原始圖結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn),如果節(jié)點(diǎn)srcVertexIdl收到反饋的第二出邊信息為[srcVertexId2, destVertexId2, destVertexIdl],貝丨J節(jié)點(diǎn)srcVertexIdl檢查其出邊中是否存在destVertexId2節(jié)點(diǎn),并檢查節(jié)點(diǎn)srcVertexId2是否為destVertexId2節(jié)點(diǎn),若節(jié)點(diǎn)srcVertexIdl的出邊中不存在destVertexId2節(jié)點(diǎn)且節(jié)點(diǎn)srcVertexId2與destVertexId2節(jié)點(diǎn)不是同一節(jié)點(diǎn),則開始交換邊,即:傳遞第一交換指令[_,destVertexIdl]和[+,destVertexId2]至節(jié)點(diǎn) srcVertexIdl (即將第一交換指令發(fā)送給自己),并將第二交換指令[_,destVertexId2]和[+,destVertexIdl]發(fā)送至節(jié)點(diǎn)srcVertexId2 (發(fā)送第二出邊信息的節(jié)點(diǎn))。
[0109]舉例來說,對(duì)于圖3c所示的當(dāng)節(jié)點(diǎn)8接收到第二出邊信息[4,3,5]時(shí),節(jié)點(diǎn)8檢查節(jié)點(diǎn)8的出邊中是否存在節(jié)點(diǎn)4所選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)(即出邊4->3的終點(diǎn)節(jié)點(diǎn)3),由于8的出邊為8->6和8->5,不存在節(jié)點(diǎn)3,并且節(jié)點(diǎn)4與節(jié)點(diǎn)3不是同一節(jié)點(diǎn),因此,如圖3d所示,可生成第一交換指令[-,5]和[+,3],并發(fā)送至節(jié)點(diǎn)8,以及生成第二交換指令[_,3]和[+,5],并發(fā)送至節(jié)點(diǎn)4。
[0110]S5、接收第二出邊信息的節(jié)點(diǎn)執(zhí)行第一交換指令,接收到第二交換指令的節(jié)點(diǎn)執(zhí)行第二交換指令。
[0111]更具體地,步驟S5可通過BSP結(jié)構(gòu)中的超步3,即super step = 3,來實(shí)現(xiàn)。
[0112]當(dāng)super step = 3時(shí),接收第二出邊信息的節(jié)點(diǎn)(也就是生成第一交換指令的節(jié)點(diǎn))執(zhí)行第一交換指令,接收到第二交換指令的節(jié)點(diǎn)執(zhí)行第二交換指令。
[0113]舉例來說,如圖3e所示,節(jié)點(diǎn)8執(zhí)行自己生成的第一交換指令[-,5]和[+,3],即刪除8->5這條邊同時(shí)添加8->3這條邊;節(jié)點(diǎn)4收到了第二交換指令[_,3]和[+,5],則刪除4->3這條邊同時(shí)添加4->5這條邊。
[0114]S6、對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖。
[0115]更具體地,步驟S6可通過BSP結(jié)構(gòu)中的超步4,即super step = 4,來實(shí)現(xiàn)。
[0116]當(dāng)super step = 4時(shí),對(duì)于每個(gè)節(jié)點(diǎn),將其出邊的值設(shè)為0,即解鎖。舉例來說,如圖3f所示,節(jié)點(diǎn)5的5->2這條邊的值重設(shè)未O進(jìn)行解鎖(由圖3e中的灰色變?yōu)閳D3f中的黑色)。
[0117]本申請(qǐng)實(shí)施例的隨機(jī)圖的生成系統(tǒng),通過從原始圖結(jié)構(gòu)中任意選兩條邊,并在原始圖結(jié)構(gòu)中不存在第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊且第一條邊的發(fā)出節(jié)點(diǎn)與第二條邊的結(jié)束節(jié)點(diǎn)不是同一節(jié)點(diǎn)時(shí),即將第一條邊和第二條邊刪除,并添加由第一條邊的發(fā)出節(jié)點(diǎn)到第二條邊的結(jié)束節(jié)點(diǎn)的邊和由第二條邊的發(fā)出節(jié)點(diǎn)到第一條邊的結(jié)束節(jié)點(diǎn)的邊,以對(duì)原始圖結(jié)構(gòu)進(jìn)行換邊,并重復(fù)選邊-換邊的過程,直至執(zhí)行預(yù)設(shè)迭代次數(shù),由此能夠得到與原始圖結(jié)構(gòu)節(jié)點(diǎn)數(shù)、邊數(shù)一致,且每個(gè)節(jié)點(diǎn)的出度和入度也一致的隨機(jī)圖。
[0118]此外,在每次重復(fù)過程中的選邊-換邊中的任務(wù)都可并行執(zhí)行,大大降低了執(zhí)行時(shí)間,經(jīng)過多次迭代后,時(shí)間復(fù)雜度也僅為分鐘級(jí)。并且并行處理可大大增加執(zhí)行過程中的信息傳遞量的負(fù)載能力,從而能夠?qū)崿F(xiàn)十億級(jí)別的數(shù)據(jù)量上任務(wù)處理。相對(duì)于傳統(tǒng)的隨機(jī)圖生成方法,大大降低了時(shí)間復(fù)雜度和圖結(jié)構(gòu)的存儲(chǔ)能力,更便于大數(shù)據(jù)量圖結(jié)構(gòu)的隨機(jī)圖生成。
[0119]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請(qǐng)的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本申請(qǐng)的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
[0120]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,〃計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(R0M),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(chǔ)器(CDROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對(duì)紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
[0121]應(yīng)當(dāng)理解,本申請(qǐng)的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(FPGA)等。
[0122]本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
[0123]此外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
[0124]上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
[0125]在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請(qǐng)的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
[0126]盡管已經(jīng)示出和描述了本申請(qǐng)的實(shí)施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本申請(qǐng)的原理和宗旨的情況下可以對(duì)這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本申請(qǐng)的范圍由權(quán)利要求及其等同限定。
【主權(quán)項(xiàng)】
1.一種隨機(jī)圖的生成方法,其特征在于,包括以下步驟: 51、輸入原始圖結(jié)構(gòu),其中,所述原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù); 52、從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),所述M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送所述Q條第一出邊信息,以及將Q條出邊鎖定; 53、所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足所述預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將所述第二出邊信息反饋至發(fā)送所述第一出邊信息的節(jié)點(diǎn); 54、所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令,并將所述第二交換指令發(fā)送至發(fā)送所述第二出邊信息的節(jié)點(diǎn); 55、接收所述第二出邊信息的節(jié)點(diǎn)執(zhí)行所述第一交換指令,接收到所述第二交換指令的節(jié)點(diǎn)執(zhí)行所述第二交換指令; 56、對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖;以及 57、重復(fù)執(zhí)行所述步驟S2-S6,直至達(dá)到預(yù)設(shè)迭代次數(shù)。2.如權(quán)利要求1所述的隨機(jī)圖的生成方法,其特征在于,所述從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn)具體包括: 將所述N個(gè)節(jié)點(diǎn)中具有出邊的節(jié)點(diǎn)作為種子節(jié)點(diǎn)。3.如權(quán)利要求1所述的隨機(jī)圖的生成方法,其特征在于,所述M個(gè)種子節(jié)點(diǎn)通過以下公式選取Q條出邊: Q = ceil (I Out⑴I/2),其中,Out (i) |為節(jié)點(diǎn)i的出邊數(shù)量,ceil O為向上取整函數(shù)。4.如權(quán)利要求1所述的隨機(jī)圖的生成方法,其特征在于,所述第一出邊信息包括出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn),所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件具體包括: 所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)判斷自身是否具有出邊; 如果所述接收到所述第一出邊信息的節(jié)點(diǎn)具有出邊,則進(jìn)一步判斷所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn)是否在自身的出邊中存在或自身為所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn);以及 如果所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn)在自身的出邊中不存在且自身不為所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn),則判斷滿足所述預(yù)設(shè)條件。5.如權(quán)利要求4所述的隨機(jī)圖的生成方法,其特征在于,所述第二出邊信息包括接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn)以及所述第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn),其中,所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令具體包括: 所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)檢查自身的出邊中是否存在所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),并檢查自身是否為所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn);以及 如果所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)不存在且自身不為所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),則生成所述第一交換指令和第二交換指令。6.如權(quán)利要求1所述的隨機(jī)圖的生成方法,其特征在于,所述步驟S2-S6通過整體同步并行計(jì)算模型BSP結(jié)構(gòu)的超步0-4實(shí)現(xiàn)。7.一種隨機(jī)圖的生成系統(tǒng),其特征在于,包括: 輸入裝置,用于輸入原始圖結(jié)構(gòu),其中,所述原始圖結(jié)構(gòu)中包括N個(gè)節(jié)點(diǎn),其中,N為正整數(shù);以及 控制裝置,用于控制所述N個(gè)節(jié)點(diǎn)重復(fù)執(zhí)行步驟S2-S6,直至達(dá)到預(yù)設(shè)迭代次數(shù),其中, 52、從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn),所述M個(gè)種子節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)分別選取Q條出邊并生成Q條第一出邊信息,并分別向除自身之外的任意Q個(gè)其他節(jié)點(diǎn)分別發(fā)送所述Q條第一出邊信息,以及將Q條出邊鎖定; 53、所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)接收到的第一出邊信息判斷是否滿足預(yù)設(shè)條件,如滿足所述預(yù)設(shè)條件,則從自身選擇任一條出邊并生成第二出邊信息,以及將所述第二出邊信息反饋至發(fā)送所述第一出邊信息的節(jié)點(diǎn); 54、所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令,并將所述第二交換指令發(fā)送至發(fā)送所述第二出邊信息的節(jié)點(diǎn); 55、接收所述第二出邊信息的節(jié)點(diǎn)執(zhí)行所述第一交換指令,接收到所述第二交換指令的節(jié)點(diǎn)執(zhí)行所述第二交換指令; 56、對(duì)所有節(jié)點(diǎn)的出邊進(jìn)行解鎖。8.如權(quán)利要求7所述的隨機(jī)圖的生成系統(tǒng),其特征在于,所述控制裝置從所述N個(gè)節(jié)點(diǎn)之中選擇出M個(gè)種子節(jié)點(diǎn)時(shí),具體用于: 將所述N個(gè)節(jié)點(diǎn)中具有出邊的節(jié)點(diǎn)作為種子節(jié)點(diǎn)。9.如權(quán)利要求7所述的隨機(jī)圖的生成系統(tǒng),其特征在于,所述控制裝置控制所述M個(gè)種子節(jié)點(diǎn)通過以下公式選取Q條出邊: Q = ceil (I Out⑴I/2),其中,Out (i) |為節(jié)點(diǎn)i的出邊數(shù)量,ceil O為向上取整函數(shù)。10.如權(quán)利要求7所述的隨機(jī)圖的生成系統(tǒng),其特征在于,所述第一出邊信息包括出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn),所述控制裝置在控制所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)根據(jù)所述第一出邊信息判斷是否滿足預(yù)設(shè)條件時(shí),具體用于: 所述N個(gè)節(jié)點(diǎn)中接收到所述第一出邊信息的節(jié)點(diǎn)判斷自身是否具有出邊; 如果所述接收到所述第一出邊信息的節(jié)點(diǎn)具有出邊,則進(jìn)一步判斷所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn)是否在自身的出邊中存在或自身為所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn);以及 如果所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn)在自身的出邊中不存在且自身不為所述第一出邊信息中的終點(diǎn)節(jié)點(diǎn),則判斷滿足所述預(yù)設(shè)條件。11.如權(quán)利要求10所述的隨機(jī)圖的生成系統(tǒng),其特征在于,所述第二出邊信息包括接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的發(fā)出節(jié)點(diǎn)和終點(diǎn)節(jié)點(diǎn)以及所述第一出邊信息中所包括的終點(diǎn)節(jié)點(diǎn),其中,所述控制裝置在控制所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)根據(jù)所述第二出邊信息生成第一交換指令和第二交換指令時(shí),具體用于: 所述N個(gè)節(jié)點(diǎn)中接收到所述第二出邊信息的節(jié)點(diǎn)檢查自身的出邊中是否存在所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),并檢查自身是否為所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn);以及 如果所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn)不存在且自身不為所述接收到所述第一出邊信息的節(jié)點(diǎn)從自身選擇的出邊對(duì)應(yīng)的終點(diǎn)節(jié)點(diǎn),則生成所述第一交換指令和第二交換指令。12.如權(quán)利要求7所述的隨機(jī)圖的生成系統(tǒng),其特征在于,所述控制裝置通過整體同步并行計(jì)算模型BSP結(jié)構(gòu)的超步0-4實(shí)現(xiàn)步驟S2-S6。
【文檔編號(hào)】G06F9/44GK106033342SQ201510115386
【公開日】2016年10月19日
【申請(qǐng)日】2015年3月17日
【發(fā)明人】毛仁歆, 何慧梅, 王峰偉, 何帝君
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武城县| 衡阳县| 依兰县| 南乐县| 奎屯市| 星座| 静乐县| 柯坪县| 竹北市| 福建省| 白河县| 任丘市| 绿春县| 克拉玛依市| 娄底市| 兴安县| 三穗县| 天柱县| 龙门县| 怀远县| 体育| 台州市| 奉贤区| 岳阳县| 顺义区| 固镇县| 界首市| 辽源市| 化德县| 梓潼县| 个旧市| 绥中县| 辽宁省| 射阳县| 临海市| 曲松县| 彰武县| 米泉市| 聂拉木县| 融水| 台山市|