一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法和設(shè)備的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法和設(shè)備。涉及網(wǎng)絡(luò)最大流領(lǐng)域,能夠根據(jù)不同的網(wǎng)絡(luò)流圖確定最優(yōu)的網(wǎng)絡(luò)最大流算法。該方法包括:算法選擇設(shè)備獲取網(wǎng)絡(luò)流圖,并根據(jù)該網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò);獲取操作算法集合,其中,該操作算法集合包括至少兩個(gè)算法,在該第一殘量網(wǎng)絡(luò)中通過(guò)該至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn),得到第二殘量網(wǎng)絡(luò),并在該第二殘量網(wǎng)絡(luò)中確定該至少兩個(gè)算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量,確定該關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為該網(wǎng)絡(luò)流圖的最優(yōu)網(wǎng)絡(luò)最大流算法。本發(fā)明實(shí)施例用于網(wǎng)絡(luò)最大流算法的選擇。
【專利說(shuō)明】一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)最大流領(lǐng)域,尤其涉及一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法和設(shè) 備。
【背景技術(shù)】
[0002] 獲取網(wǎng)絡(luò)最大流問(wèn)題是圖論和組合優(yōu)化中的經(jīng)典問(wèn)題,它具有廣泛的應(yīng)用背景。
[0003] 現(xiàn)有技術(shù)中,預(yù)流推進(jìn)方法是一種常用的獲取網(wǎng)絡(luò)最大流的方法,該方法包括多 種算法,這些算法可以歸納為:根據(jù)獲取的網(wǎng)絡(luò)流圖得到殘量網(wǎng)絡(luò),從殘量網(wǎng)絡(luò)中獲取活 躍結(jié)點(diǎn),并在該殘量網(wǎng)絡(luò)中將活躍結(jié)點(diǎn)對(duì)應(yīng)的盈余流通過(guò)相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn),并在 確定該相鄰結(jié)點(diǎn)為新的活躍結(jié)點(diǎn)后,繼續(xù)在該殘量網(wǎng)絡(luò)將該新的活躍結(jié)點(diǎn)通過(guò)相鄰結(jié)點(diǎn)向 匯點(diǎn)進(jìn)行推進(jìn),直至該殘量網(wǎng)絡(luò)中不存在活躍結(jié)點(diǎn),則確定此時(shí)匯點(diǎn)的流量為網(wǎng)絡(luò)最大流。
[0004] 由上可知,在現(xiàn)有的通過(guò)預(yù)流推進(jìn)方法獲取網(wǎng)絡(luò)最大流的過(guò)程中,只是通過(guò)一種 算法對(duì)網(wǎng)絡(luò)流圖進(jìn)行預(yù)流推進(jìn),也就是說(shuō),無(wú)論獲取的網(wǎng)絡(luò)流圖是哪種類型(例如可以是非 平衡的二分圖),都通過(guò)一種算法進(jìn)行計(jì)算,但是,對(duì)于不同類型的網(wǎng)絡(luò)流圖,該算法對(duì)網(wǎng)絡(luò) 最大流的計(jì)算并不一定是最優(yōu)的,由于不適應(yīng)這個(gè)網(wǎng)絡(luò)流圖的算法冗余操作多,因此無(wú)法 保證該算法對(duì)網(wǎng)絡(luò)流圖的算法性能(如運(yùn)算時(shí)間和運(yùn)算效率等),從而降低了網(wǎng)絡(luò)最大流計(jì) 算的效率。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實(shí)施例提供一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法和設(shè)備,能夠根據(jù)不同 的網(wǎng)絡(luò)流圖確定最優(yōu)的網(wǎng)絡(luò)最大流算法。
[0006] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007] 第一方面,提供一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法,包括:
[0008] 獲取網(wǎng)絡(luò)流圖,并根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò);
[0009] 獲取操作算法集合,其中,所述操作算法集合包括至少兩個(gè)算法;
[0010] 在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn),得到第二殘量 網(wǎng)絡(luò),并在所述第二殘量網(wǎng)絡(luò)中確定所述至少兩個(gè)算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量;
[0011] 確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為所述網(wǎng)絡(luò)流圖的最優(yōu)網(wǎng)絡(luò)最大流 算法。
[0012] 在第一方面第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò) 后,還包括:
[0013] 根據(jù)所述第一殘量網(wǎng)絡(luò)獲取活躍結(jié)點(diǎn);
[0014] 所述獲取操作算法集合包括:
[0015] 根據(jù)算法模板獲取所述活躍結(jié)點(diǎn)對(duì)應(yīng)的算法和數(shù)據(jù)結(jié)構(gòu);其中,所述算法模板包 括用戶配置的管理所述活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和用戶配置的對(duì)應(yīng)所述活躍結(jié)點(diǎn)的算法以及 所述網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu);
[0016] 根據(jù)所述算法和數(shù)據(jù)結(jié)構(gòu)獲得所述操作算法集合。
[0017] 結(jié)合第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0018] 對(duì)所述網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu)加細(xì)粒度鎖。
[0019] 結(jié)合第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式 中,所述在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)包括 :
[0020] 根據(jù)所述至少兩個(gè)算法從所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中獲取對(duì)應(yīng)的活躍結(jié) 占.
[0021] 根據(jù)所述至少兩個(gè)算法并行將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流通過(guò)距離標(biāo)識(shí)比自 己低的相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn),其中,所述盈余流包括所述活躍結(jié)點(diǎn)的入流量與出流量 的正差值。
[0022] 結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述在將所述對(duì)應(yīng)的 活躍結(jié)點(diǎn)的盈余流通過(guò)所述相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn)后,還包括:
[0023] 若所述相鄰結(jié)點(diǎn)存在所述盈余流,則確定所述相鄰結(jié)點(diǎn)為新的活躍結(jié)點(diǎn),并將所 述新的活躍結(jié)點(diǎn)放入所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中。
[0024] 結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,在所述得到第二殘量 網(wǎng)絡(luò)前,還包括:
[0025] 在通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)時(shí),獲取被重標(biāo)識(shí)的邊數(shù);
[0026] 根據(jù)所述算法模板獲取更新參數(shù);
[0027] 在確定所述更新參數(shù)和所述被重標(biāo)識(shí)的邊數(shù)滿足預(yù)設(shè)條件時(shí),更新所有結(jié)點(diǎn)到匯 點(diǎn)的距離標(biāo)識(shí),以得到所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí);
[0028] 所述得到第二殘量網(wǎng)絡(luò)包括:
[0029] 根據(jù)所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí)得到所述第二殘量網(wǎng)絡(luò)。
[0030] 結(jié)合第四種可能的實(shí)現(xiàn)方式或第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式 中,在確定所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不存在活躍結(jié)點(diǎn)時(shí),則確定匯點(diǎn)的流量為所述網(wǎng) 絡(luò)最大流。
[0031] 結(jié)合第一方面至第六種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第七種 可能的實(shí)現(xiàn)方式中,所述在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn) 前,所述方法還包括:
[0032] 獲取總線程數(shù);
[0033] 根據(jù)所述總線程數(shù)配置對(duì)應(yīng)所述至少兩個(gè)算法的線程數(shù),其中,所述線程數(shù)包括 所述總線程數(shù)與所述至少兩個(gè)算法的算法數(shù)量的比值;
[0034] 所述在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)包括:
[0035] 在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法根據(jù)所述對(duì)應(yīng)的線程數(shù)并行進(jìn)行 預(yù)流推進(jìn)。
[0036] 結(jié)合第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,在確定所述關(guān)鍵邊的 數(shù)量的最大值對(duì)應(yīng)的算法為最優(yōu)網(wǎng)絡(luò)最大流算法后,還包括:
[0037] 根據(jù)所述關(guān)鍵邊的數(shù)量為所述至少兩個(gè)算法重新配置線程數(shù)。
[0038] 第二方面,提供一種算法選擇設(shè)備,包括:
[0039] 獲取單元,用于獲取網(wǎng)絡(luò)流圖,并根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò),并獲取操 作算法集合,其中,所述操作算法集合包括至少兩個(gè)算法;
[0040] 處理單元,用于在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推 進(jìn),得到第二殘量網(wǎng)絡(luò),并在預(yù)流推進(jìn)后確定所述至少兩個(gè)算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量,并在 所述第二殘量網(wǎng)絡(luò)中確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為所述網(wǎng)絡(luò)流圖的最優(yōu) 網(wǎng)絡(luò)最大流算法。
[0041] 在第二方面第一種可能的實(shí)現(xiàn)方式中,所述獲取單元還用于,根據(jù)所述網(wǎng)絡(luò)流圖 得到第一殘量網(wǎng)絡(luò)后,根據(jù)所述第一殘量網(wǎng)絡(luò)獲取活躍結(jié)點(diǎn);
[0042] 所述獲取單元具體用于,根據(jù)算法模板獲取所述活躍結(jié)點(diǎn)對(duì)應(yīng)的算法和數(shù)據(jù)結(jié) 構(gòu),并根據(jù)所述算法和數(shù)據(jù)結(jié)構(gòu)獲得所述操作算法集合,其中,所述算法模板包括用戶配置 的管理所述活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和用戶配置的對(duì)應(yīng)所述活躍結(jié)點(diǎn)的算法以及所述網(wǎng)絡(luò)流 圖的數(shù)據(jù)結(jié)構(gòu)。
[0043] 結(jié)合第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述處理單元還用于, 對(duì)所述網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu)加細(xì)粒度鎖。
[0044] 結(jié)合第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式 中,所述處理單元具體用于,根據(jù)所述至少兩個(gè)算法從所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中獲 取對(duì)應(yīng)的活躍結(jié)點(diǎn),并根據(jù)所述至少兩個(gè)算法并行將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流通過(guò)距 離標(biāo)識(shí)比自己低的相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn),其中,所述盈余流包括所述活躍結(jié)點(diǎn)的入流 量與出流量的正差值。
[0045] 結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述處理單元還用于, 在將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流通過(guò)所述相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn)后,若所述相鄰結(jié)點(diǎn) 存在所述盈余流,則確定所述相鄰結(jié)點(diǎn)為新的活躍結(jié)點(diǎn),并將所述新的活躍結(jié)點(diǎn)放入所述 管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中。
[0046] 結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述處理單元還用于, 在通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)時(shí),獲取被重標(biāo)識(shí)的邊數(shù),根據(jù)所述算法模板 獲取更新參數(shù),并在確定所述更新參數(shù)和所述被重標(biāo)識(shí)的邊數(shù)滿足預(yù)設(shè)條件時(shí),更新所有 結(jié)點(diǎn)到匯點(diǎn)的距離標(biāo)識(shí),以得到所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí),并根據(jù)所述所有結(jié) 點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí)得到所述第二殘量網(wǎng)絡(luò)。
[0047] 結(jié)合第四種可能的實(shí)現(xiàn)方式或第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式 中,所述處理單元還用于,在確定所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不存在活躍結(jié)點(diǎn)時(shí),則確定 匯點(diǎn)的流量為所述網(wǎng)絡(luò)最大流。
[0048] 結(jié)合第二方面至第六種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第七種 可能的實(shí)現(xiàn)方式中,所述獲取單元還用于,在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法 并行進(jìn)行預(yù)流推進(jìn)前,獲取總線程數(shù);
[0049] 所述處理單元還用于,配置對(duì)應(yīng)所述至少兩個(gè)算法的線程數(shù),并在所述第一殘量 網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法根據(jù)所述對(duì)應(yīng)的線程數(shù)并行進(jìn)行預(yù)流推進(jìn),其中,所述線程 數(shù)包括所述總線程數(shù)與所述至少兩個(gè)算法的算法數(shù)量的比值。
[0050] 結(jié)合第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述處理單元還用于, 在確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為最優(yōu)網(wǎng)絡(luò)最大流算法后,根據(jù)所述關(guān)鍵邊 的數(shù)量為所述至少兩個(gè)算法重新配置線程數(shù)。
[0051] 采用上述方案,通過(guò)操作算法集合中的多種算法對(duì)網(wǎng)絡(luò)流圖進(jìn)行預(yù)流推進(jìn),并在 預(yù)流推進(jìn)后,將各算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量最多的算法確定為最優(yōu)網(wǎng)絡(luò)最大流算法,使得 在獲取網(wǎng)絡(luò)最大流的計(jì)算過(guò)程中,能夠動(dòng)態(tài)調(diào)整自適應(yīng)不同的網(wǎng)絡(luò)流圖,得到最優(yōu)性能的 算法,從而提1?網(wǎng)絡(luò)最大流計(jì)算的效率。
【專利附圖】
【附圖說(shuō)明】
[0052] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的 附圖。
[0053] 圖1為本發(fā)明實(shí)施例提供的一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法的流程示意圖;
[0054] 圖2為本發(fā)明實(shí)施例提供的另一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法的流程示意 圖;
[0055] 圖3為本發(fā)明實(shí)施例提供的一種算法選擇設(shè)備的結(jié)構(gòu)示意圖;
[0056] 圖4為本發(fā)明實(shí)施例提供的另一種算法選擇設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0057] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0058] 發(fā)明實(shí)施例提供一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法,如圖1所示,該方法的執(zhí) 行主體為算法選擇設(shè)備,包括:
[0059] S101、算法選擇設(shè)備獲取網(wǎng)絡(luò)流圖,并根據(jù)該網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò)。
[0060] 其中,該殘量網(wǎng)絡(luò)是通過(guò)對(duì)網(wǎng)絡(luò)流圖的變換得到的。
[0061] S102、算法選擇設(shè)備獲取操作算法集合。
[0062] 其中,該操作算法集合包括至少兩個(gè)算法。
[0063] 具體地,該算法選擇設(shè)備根據(jù)第一殘量網(wǎng)絡(luò)獲取活躍結(jié)點(diǎn),其中,活躍結(jié)點(diǎn)為入流 量大于出流量的結(jié)點(diǎn),該算法選擇設(shè)備根據(jù)算法模板獲取該活躍結(jié)點(diǎn)對(duì)應(yīng)的算法和數(shù)據(jù)結(jié) 構(gòu),并根據(jù)該算法和數(shù)據(jù)結(jié)構(gòu)獲得該操作算法集合。
[0064] 其中,該算法模板包括用戶配置的管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和用戶配置的對(duì)應(yīng)該 活躍結(jié)點(diǎn)的算法以及該網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu)。
[0065] 示例地,該算法模板包括主控部分,提供算法的框架;算法部分,可以由用戶配置 至少兩個(gè)算法;結(jié)點(diǎn)管理部分,包括獲取的活躍結(jié)點(diǎn)以及用戶配置的對(duì)應(yīng)管理活躍結(jié)點(diǎn)的 數(shù)據(jù)結(jié)構(gòu)(如bucket、FIFO_queue和stack中的任一種);更新事件,用于更新第一殘量網(wǎng)絡(luò) 中各結(jié)點(diǎn)到匯點(diǎn)的距離標(biāo)識(shí);更新參數(shù),由用戶進(jìn)行配置;網(wǎng)絡(luò)流圖數(shù)據(jù)結(jié)構(gòu),用于存放殘 量網(wǎng)絡(luò)。
[0066] 其中,算法部分、結(jié)點(diǎn)管理部分和更新參數(shù)可以由用戶進(jìn)行配置。
[0067] 例如,上述算法框架可以為:
[0068]
【權(quán)利要求】
1. 一種最優(yōu)網(wǎng)絡(luò)最大流算法的選擇方法,其特征在于,包括: 獲取網(wǎng)絡(luò)流圖,并根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò); 獲取操作算法集合,其中,所述操作算法集合包括至少兩個(gè)算法; 在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn),得到第二殘量網(wǎng) 絡(luò),并在所述第二殘量網(wǎng)絡(luò)中確定所述至少兩個(gè)算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量; 確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為所述網(wǎng)絡(luò)流圖的最優(yōu)網(wǎng)絡(luò)最大流算法。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng) 絡(luò)后,還包括: 根據(jù)所述第一殘量網(wǎng)絡(luò)獲取活躍結(jié)點(diǎn); 所述獲取操作算法集合包括: 根據(jù)算法模板獲取所述活躍結(jié)點(diǎn)對(duì)應(yīng)的算法和數(shù)據(jù)結(jié)構(gòu);其中,所述算法模板包括用 戶配置的管理所述活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和用戶配置的對(duì)應(yīng)所述活躍結(jié)點(diǎn)的算法以及所述 網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu); 根據(jù)所述算法和數(shù)據(jù)結(jié)構(gòu)獲得所述操作算法集合。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 對(duì)所述網(wǎng)絡(luò)流圖的數(shù)據(jù)結(jié)構(gòu)加細(xì)粒度鎖。
4. 根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述 至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)包括: 根據(jù)所述至少兩個(gè)算法從所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中獲取對(duì)應(yīng)的活躍結(jié)點(diǎn); 根據(jù)所述至少兩個(gè)算法并行將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流通過(guò)距離標(biāo)識(shí)比自己低 的相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn),其中,所述盈余流包括所述活躍結(jié)點(diǎn)的入流量與出流量的正 差值。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流 通過(guò)所述相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn)后,還包括: 若所述相鄰結(jié)點(diǎn)存在所述盈余流,則確定所述相鄰結(jié)點(diǎn)為新的活躍結(jié)點(diǎn),并將所述新 的活躍結(jié)點(diǎn)放入所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述得到第二殘量網(wǎng)絡(luò)前,還包括: 在通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)時(shí),獲取被重標(biāo)識(shí)的邊數(shù); 根據(jù)所述算法模板獲取更新參數(shù); 在確定所述更新參數(shù)和所述被重標(biāo)識(shí)的邊數(shù)滿足預(yù)設(shè)條件時(shí),更新所有結(jié)點(diǎn)到匯點(diǎn)的 距離標(biāo)識(shí),以得到所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí); 所述得到第二殘量網(wǎng)絡(luò)包括: 根據(jù)所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí)得到所述第二殘量網(wǎng)絡(luò)。
7. 根據(jù)權(quán)利要求5或6所述的方法,其特征在于,在確定所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu) 不存在活躍結(jié)點(diǎn)時(shí),則確定匯點(diǎn)的流量為所述網(wǎng)絡(luò)最大流。
8. 根據(jù)權(quán)利要求1至7任一項(xiàng)所述的方法,其特征在于,所述在所述第一殘量網(wǎng)絡(luò)中通 過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)前,所述方法還包括: 獲取總線程數(shù); 根據(jù)所述總線程數(shù)配置對(duì)應(yīng)所述至少兩個(gè)算法的線程數(shù),其中,所述線程數(shù)包括所述 總線程數(shù)與所述至少兩個(gè)算法的算法數(shù)量的比值; 所述在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)包括: 在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法根據(jù)所述對(duì)應(yīng)的線程數(shù)并行進(jìn)行預(yù)流 推進(jìn)。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,在確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng) 的算法為最優(yōu)網(wǎng)絡(luò)最大流算法后,還包括: 根據(jù)所述關(guān)鍵邊的數(shù)量為所述至少兩個(gè)算法重新配置線程數(shù)。
10. -種算法選擇設(shè)備,其特征在于,包括: 獲取單元,用于獲取網(wǎng)絡(luò)流圖,并根據(jù)所述網(wǎng)絡(luò)流圖得到第一殘量網(wǎng)絡(luò),并獲取操作算 法集合,其中,所述操作算法集合包括至少兩個(gè)算法; 處理單元,用于在所述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn),得 到第二殘量網(wǎng)絡(luò),并在預(yù)流推進(jìn)后確定所述至少兩個(gè)算法對(duì)應(yīng)的關(guān)鍵邊的數(shù)量,并在所述 第二殘量網(wǎng)絡(luò)中確定所述關(guān)鍵邊的數(shù)量的最大值對(duì)應(yīng)的算法為所述網(wǎng)絡(luò)流圖的最優(yōu)網(wǎng)絡(luò) 最大流算法。
11. 根據(jù)權(quán)利要求10所述的設(shè)備,其特征在于,所述獲取單元還用于,根據(jù)所述網(wǎng)絡(luò)流 圖得到第一殘量網(wǎng)絡(luò)后,根據(jù)所述第一殘量網(wǎng)絡(luò)獲取活躍結(jié)點(diǎn); 所述獲取單元具體用于,根據(jù)算法模板獲取所述活躍結(jié)點(diǎn)對(duì)應(yīng)的算法和數(shù)據(jù)結(jié)構(gòu),并 根據(jù)所述算法和數(shù)據(jù)結(jié)構(gòu)獲得所述操作算法集合,其中,所述算法模板包括用戶配置的管 理所述活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和用戶配置的對(duì)應(yīng)所述活躍結(jié)點(diǎn)的算法以及所述網(wǎng)絡(luò)流圖的 數(shù)據(jù)結(jié)構(gòu)。
12. 根據(jù)權(quán)利要求11所述的設(shè)備,其特征在于,所述處理單元還用于,對(duì)所述網(wǎng)絡(luò)流圖 的數(shù)據(jù)結(jié)構(gòu)加細(xì)粒度鎖。
13. 根據(jù)權(quán)利要求11或12所述的設(shè)備,其特征在于,所述處理單元具體用于,根據(jù)所述 至少兩個(gè)算法從所述管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中獲取對(duì)應(yīng)的活躍結(jié)點(diǎn),并根據(jù)所述至少兩 個(gè)算法并行將所述對(duì)應(yīng)的活躍結(jié)點(diǎn)的盈余流通過(guò)距離標(biāo)識(shí)比自己低的相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn) 行推進(jìn),其中,所述盈余流包括所述活躍結(jié)點(diǎn)的入流量與出流量的正差值。
14. 根據(jù)權(quán)利要求13所述的設(shè)備,其特征在于,所述處理單元還用于,在將所述對(duì)應(yīng) 的活躍結(jié)點(diǎn)的盈余流通過(guò)所述相鄰結(jié)點(diǎn)向匯點(diǎn)進(jìn)行推進(jìn)后,若所述相鄰結(jié)點(diǎn)存在所述盈余 流,則確定所述相鄰結(jié)點(diǎn)為新的活躍結(jié)點(diǎn),并將所述新的活躍結(jié)點(diǎn)放入所述管理活躍結(jié)點(diǎn) 的數(shù)據(jù)結(jié)構(gòu)中。
15. 根據(jù)權(quán)利要求14所述的設(shè)備,其特征在于,所述處理單元還用于,在通過(guò)所述至少 兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)時(shí),獲取被重標(biāo)識(shí)的邊數(shù),根據(jù)所述算法模板獲取更新參數(shù),并 在確定所述更新參數(shù)和所述被重標(biāo)識(shí)的邊數(shù)滿足預(yù)設(shè)條件時(shí),更新所有結(jié)點(diǎn)到匯點(diǎn)的距離 標(biāo)識(shí),以得到所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距離標(biāo)識(shí),并根據(jù)所述所有結(jié)點(diǎn)到匯點(diǎn)的新的距 離標(biāo)識(shí)得到所述第二殘量網(wǎng)絡(luò)。
16. 根據(jù)權(quán)利要求14或15所述的設(shè)備,其特征在于,所述處理單元還用于,在確定所述 管理活躍結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不存在活躍結(jié)點(diǎn)時(shí),則確定匯點(diǎn)的流量為所述網(wǎng)絡(luò)最大流。
17. 根據(jù)權(quán)利要求10至16任一項(xiàng)所述的設(shè)備,其特征在于,所述獲取單元還用于,在所 述第一殘量網(wǎng)絡(luò)中通過(guò)所述至少兩個(gè)算法并行進(jìn)行預(yù)流推進(jìn)前,獲取總線程數(shù); 所述處理單元還用于,配置對(duì)應(yīng)所述至少兩個(gè)算法的線程數(shù),并在所述第一殘量網(wǎng)絡(luò) 中通過(guò)所述至少兩個(gè)算法根據(jù)所述對(duì)應(yīng)的線程數(shù)并行進(jìn)行預(yù)流推進(jìn),其中,所述線程數(shù)包 括所述總線程數(shù)與所述至少兩個(gè)算法的算法數(shù)量的比值。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其特征在于,所述處理單元還用于,在確定所述關(guān)鍵 邊的數(shù)量的最大值對(duì)應(yīng)的算法為最優(yōu)網(wǎng)絡(luò)最大流算法后,根據(jù)所述關(guān)鍵邊的數(shù)量為所述至 少兩個(gè)算法重新配置線程數(shù)。
【文檔編號(hào)】G06F17/30GK104376366SQ201310354026
【公開(kāi)日】2015年2月25日 申請(qǐng)日期:2013年8月14日 優(yōu)先權(quán)日:2013年8月14日
【發(fā)明者】王蕾, 崔慧敏, 呂方, 馮曉兵 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所