基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)容錯(cuò)的方法
【專利摘要】一種基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)容錯(cuò)的方法,屬于圖像處理技術(shù)領(lǐng)域。本發(fā)明包括如下步驟:基于超像素分割的背景建模,前景檢測(cè),背景更新。本發(fā)明提出了一種在ViBe算法框架下結(jié)合SLIC超像素的背景建模前景檢測(cè)算法。有效的利用了ViBe算法優(yōu)勢(shì)的同時(shí),通過與SLIC超像素結(jié)合來擴(kuò)展像素的鄰域范圍,更充分的利用了背景像素的空間相關(guān)性從而能更好的應(yīng)對(duì)風(fēng)吹草動(dòng)、相機(jī)抖動(dòng)等現(xiàn)象。將ViBe算法對(duì)背景庫(kù)隨機(jī)替換的背景更新方式改為對(duì)高斯分布的更新方式,避免了隨機(jī)替換策略對(duì)算法帶來的不穩(wěn)定性。在實(shí)驗(yàn)部分使用I2R數(shù)據(jù)集中的三組幀序列進(jìn)行背景建模前景檢測(cè)實(shí)驗(yàn),并使用GMM算法、ViBe算法與我們的算法進(jìn)行對(duì)比。
【專利說明】
基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)容錯(cuò)的方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中屯、網(wǎng)絡(luò)容錯(cuò)的方法,屬于計(jì)算機(jī)與數(shù) 學(xué)交叉技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 近年來,隨著云計(jì)算和數(shù)據(jù)密集型計(jì)算機(jī)技術(shù)的飛速發(fā)展,數(shù)據(jù)中屯、網(wǎng)絡(luò)作為底 層基礎(chǔ)設(shè)施發(fā)揮著越來越重要的作用,成為云計(jì)算領(lǐng)域的研究熱點(diǎn)。數(shù)據(jù)中屯、網(wǎng)絡(luò)向上層 的分布式文件系統(tǒng)、結(jié)構(gòu)化數(shù)據(jù)和虛擬化技術(shù)等提供可靠、高效的數(shù)據(jù)通信、計(jì)算和存儲(chǔ)服 務(wù)。一個(gè)大型系統(tǒng)在日常運(yùn)行中,難免會(huì)出現(xiàn)各種錯(cuò)誤,因此對(duì)于好的網(wǎng)絡(luò),不僅要在一切 正常的情況下能保證系統(tǒng)的正常運(yùn)行,而且要在網(wǎng)絡(luò)出現(xiàn)一定錯(cuò)誤后,仍能保證系統(tǒng)剩余 部分能正常運(yùn)行。因此在衡量一個(gè)網(wǎng)絡(luò)時(shí),還要考慮網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的容錯(cuò)性。例如容錯(cuò)泛圈 性、容錯(cuò)泛連通性等。在數(shù)據(jù)中屯、網(wǎng)絡(luò)中,由于組成設(shè)備多、鏈路連接復(fù)雜、網(wǎng)絡(luò)規(guī)模較大, 因此單設(shè)備或單條鏈路故障發(fā)生的頻次比普通的網(wǎng)絡(luò)要多,是否具有較好的容錯(cuò)性是評(píng)價(jià) 數(shù)據(jù)中屯、很重要的標(biāo)準(zhǔn)。
[0003] 根據(jù)目前的研究發(fā)展現(xiàn)狀來看,適用于數(shù)據(jù)中屯、網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)大體分為Ξ種類 型:W交換機(jī)為中屯、的網(wǎng)絡(luò),W服務(wù)器為中屯、的網(wǎng)絡(luò)和不規(guī)則的網(wǎng)絡(luò)。隨著數(shù)據(jù)中屯、的不斷 發(fā)展,傳統(tǒng)的數(shù)據(jù)中屯、網(wǎng)絡(luò),即樹形結(jié)構(gòu)、Fat-tree網(wǎng)絡(luò)結(jié)構(gòu)等,逐漸暴露出越來越多的缺 陷和不足。如樹形結(jié)構(gòu)一般包含兩至Ξ層的網(wǎng)絡(luò)設(shè)備,分別為核屯、層,聚合層和邊緣層。其 中服務(wù)器與底層的邊緣層交換機(jī)連接,邊緣層交換機(jī)與聚合層路由器連接,聚合層路由器 再與核屯、層路由設(shè)備連接。如果聚合層網(wǎng)絡(luò)設(shè)備出現(xiàn)故障,將會(huì)導(dǎo)致失效設(shè)備的下層結(jié)點(diǎn) 與其他結(jié)點(diǎn)失去連接,因此運(yùn)種結(jié)構(gòu)存在明顯的單點(diǎn)失效問題,網(wǎng)絡(luò)容錯(cuò)性較差?;痶-tree 網(wǎng)絡(luò)結(jié)構(gòu)在聚合層引入大量的冗余交換機(jī),因此經(jīng)濟(jì)性問題并沒有得到很好地解決。
【發(fā)明內(nèi)容】
[0004] 為了克服上述的不足,滿足數(shù)據(jù)中屯、新的設(shè)計(jì)要求,提高數(shù)據(jù)中屯、網(wǎng)絡(luò)的可擴(kuò)展 性、可靠性等拓?fù)湫阅?,本發(fā)明提供了一種數(shù)據(jù)中屯、網(wǎng)絡(luò)結(jié)構(gòu)容錯(cuò)的方法。采用交叉立方體 網(wǎng)絡(luò)(CQn),即Wn構(gòu)建高效、容錯(cuò)、可擴(kuò)展的數(shù)據(jù)中屯、網(wǎng)絡(luò)。它是遞歸結(jié)構(gòu)形式,而且具有在 節(jié)點(diǎn)規(guī)模、路徑長(zhǎng)度和容錯(cuò)性上的良好性質(zhì)。
[0005] 本發(fā)明的技術(shù)方案是:
[0006] -種基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中屯、網(wǎng)絡(luò)容錯(cuò)的方法,步驟如下:
[0007] (1)當(dāng)交叉立方體網(wǎng)絡(luò)(U中錯(cuò)誤的邊(IFe I)和錯(cuò)誤的點(diǎn)(IFvI)的個(gè)數(shù)之和IFvI + Fe I 時(shí),對(duì)于交叉立方體網(wǎng)絡(luò)的維數(shù)η ^,Wn中的任意一個(gè)正確邊e都存在長(zhǎng)為6。< 2。-1 Fv I,1辛7的圈包含邊e。由此判斷交叉立方體網(wǎng)絡(luò)(?中是否存在長(zhǎng)Len為(h如en。2) 的圈,包括W下Ξ個(gè)部分:
[000引(a)(U的構(gòu)造:根據(jù)CQn的定義規(guī)則,生成CQn的關(guān)聯(lián)矩陣代碼,得到(U每個(gè)頂點(diǎn)的 鄰接點(diǎn),將頂點(diǎn)間的鄰接關(guān)系保存在關(guān)聯(lián)矩陣(Incidencejnatrix)中;
[0009] (b)生成錯(cuò)誤集,在關(guān)聯(lián)矩陣中剔除錯(cuò)誤集;首先對(duì)CQn中所有邊和點(diǎn)進(jìn)行標(biāo)號(hào),然 后生成所有可能的錯(cuò)誤子集;如6條邊中錯(cuò)2條邊的所有可能錯(cuò)誤子集是{1,2} {1,3} {1,4} (1,引{1,6} {2,3}{2,4},{2,5}{2,6}{3,4}{3,引{3,6}{4,引{4,6}{5,6}。
[0010] (C)對(duì)于剩余子矩陣進(jìn)行深度優(yōu)先遍歷,尋找所需要的路徑即判斷矩陣中是否存 在指定長(zhǎng)度的圈并記錄一個(gè)符合條件的圈。剩余子矩陣為CQn去除錯(cuò)誤子集后的部分。
[00川判斷交叉立方體網(wǎng)絡(luò)CQn中是否存在指定長(zhǎng)Lendl ^en^2)的圈的原則:
[0012] (1)令邊e的一個(gè)端點(diǎn)為路徑起點(diǎn)(Vbegin)及另一個(gè)端點(diǎn)為路徑終點(diǎn)(Vend)。將 Vbegin和Vend放入捜索路徑(path)中去,標(biāo)記路徑起點(diǎn)Vbegin已經(jīng)訪問,路徑終點(diǎn)Vend即 path[0]位置先不標(biāo)記訪問。
[0013] (2)將路徑起點(diǎn)Vbegin作為當(dāng)前訪問節(jié)點(diǎn)QirrenLVertex,即Cu;rrent_Ve;rtex = Vbegin,開始進(jìn)行深度優(yōu)先遍歷。同時(shí)標(biāo)記當(dāng)前點(diǎn)為已經(jīng)訪問節(jié)點(diǎn),保證回溯時(shí)能回到正確 的位置。
[0014] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex的(下一個(gè))沒訪問的鄰接點(diǎn)Vedex,將節(jié) 點(diǎn)Vedex加入到捜索路徑path中去,路徑長(zhǎng)度化thLen加1;
[001引如果當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex的所有鄰接點(diǎn)Vedex都被訪問過且化地Len< Len-1,則做如下回溯操作:
[0016] vis i ted[ QirrenLVertex] = false;//標(biāo)記當(dāng)前節(jié)點(diǎn)沒有訪問過;
[0017] 化thLen-; //當(dāng)前路徑長(zhǎng)度減1;
[001引 Current_Ve;rtex = path[PatliLen-l];//將路徑中的上一個(gè)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn); [0019] Sta;rt[Current_Ve;rtex]++;//當(dāng)前節(jié)點(diǎn)從下一個(gè)節(jié)點(diǎn)開始訪問;
[0020] 回溯結(jié)束后W新的當(dāng)前訪問節(jié)點(diǎn)化rrent_Ve;rtex開始新的訪問。
[0021] 若直到路徑起點(diǎn)Vbegin所有的鄰接點(diǎn)都訪問過,還未找到化thLen = Len-l,則表 示沒有相應(yīng)的圈。
[0022] (4)將當(dāng)前訪問節(jié)點(diǎn)Current_Ve;rtex的鄰接點(diǎn)Ve;rtex作為當(dāng)前訪問節(jié)點(diǎn)Current Vertex,即化1'的111:_¥6的〇義=¥6的〇義,并標(biāo)記為已訪問節(jié)點(diǎn),重復(fù)步驟(3);
[0023] 當(dāng)路徑長(zhǎng)度化thLen = Len-l時(shí),判斷當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex的鄰接節(jié)點(diǎn) V&rtex中是否有路徑終點(diǎn)Vend。
[0024] 如果當(dāng)前訪問節(jié)點(diǎn)Current_Ve;rtex的鄰接節(jié)點(diǎn)Vedex中沒有路徑終點(diǎn)Vend,則 將當(dāng)前節(jié)點(diǎn)CurrenLVertex標(biāo)記為未訪問節(jié)點(diǎn),并將路徑中上一個(gè)節(jié)點(diǎn)標(biāo)記為當(dāng)前節(jié)點(diǎn) QirrenLVertex,路徑長(zhǎng)度化thLen減1,回溯到步驟(3);
[0025] 如果當(dāng)前訪問節(jié)點(diǎn)Current_Ve;rtex的鄰接節(jié)點(diǎn)Ve;rtex中有路徑終點(diǎn)Vend,則該圈 就是要找的圈。
[0026] 當(dāng)交叉立方體網(wǎng)絡(luò)CQn中階數(shù)不是很多時(shí),可W通過算法得出歸納法起點(diǎn)。
[0027] 當(dāng)交叉立方體網(wǎng)絡(luò)Wn中階數(shù)很大時(shí),利用歸納法得出結(jié)論,主要思路是分情形討 論。
[0028] 本發(fā)明研究了交叉立方體網(wǎng)絡(luò)CQn的容錯(cuò)性,即當(dāng)一個(gè)大型網(wǎng)絡(luò)(可建模為交叉立 方體網(wǎng)絡(luò)CQn)在運(yùn)行時(shí)出現(xiàn)各種問題時(shí),它的容錯(cuò)能力是n-2。即當(dāng)網(wǎng)絡(luò)中出現(xiàn)n-2個(gè)錯(cuò)誤 時(shí),仍能保證系統(tǒng)的剩余部分能夠正常運(yùn)行。提高了系統(tǒng)的容錯(cuò)能力。
【具體實(shí)施方式】
[0029] W下結(jié)合技術(shù)方案,進(jìn)一步說明本發(fā)明的【具體實(shí)施方式】。
[0030] (I)C化關(guān)聯(lián)矩陣的構(gòu)造如下所示的C祐關(guān)聯(lián)矩陣。
[0031]
[0032] (Π )生成錯(cuò)誤集。此時(shí),錯(cuò)誤的點(diǎn)是1,2,3,在關(guān)聯(lián)矩陣中剔除錯(cuò)誤集后,C化的關(guān) 聯(lián)矩陣如下所示的剔除錯(cuò)誤集后的C祐的關(guān)聯(lián)矩陣:
[0033]
[0034] (虹)對(duì)于剩余子圖進(jìn)行深度優(yōu)先遍歷(按照剔除錯(cuò)誤集后的CQs的關(guān)聯(lián)矩陣),對(duì) 邊4-10尋找長(zhǎng)為6的圈。
[0035] (1)令Vbegin為點(diǎn)4和Vend為點(diǎn)10。將Vbegin和Vend放入捜索路徑(path)中去,路 徑終點(diǎn)Vend和路徑起點(diǎn)Vbegin都先不標(biāo)記訪問。
[0036] (2)將路徑起點(diǎn)4作為當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex,開始進(jìn)行深度優(yōu)先遍歷。同 時(shí)標(biāo)記當(dāng)前點(diǎn)4為已經(jīng)訪問節(jié)點(diǎn),保證回溯時(shí)能回到正確的位置。
[0037] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex(點(diǎn)4)的沒訪問的鄰接點(diǎn)Ve;rtex(點(diǎn)6),此 時(shí)path中的路徑長(zhǎng)度pathLen為1。
[0038] (4)將Ve;rtex(點(diǎn)6)放入路徑path中,并標(biāo)記Ve;rtex已訪問,然后將Ve;rtex標(biāo)記為 當(dāng)前訪問節(jié)點(diǎn)化rrent_Ve;rtex,回到(3)繼續(xù)訪問。
[0039] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex(點(diǎn)6)的沒訪問的鄰接點(diǎn)Ve;rtex(點(diǎn)5),將 Vert ex (點(diǎn)5)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為2。
[0040] (4)將Vedex標(biāo)記為當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex,并標(biāo)記為已訪問節(jié)點(diǎn),回到 (3)繼續(xù)訪問。
[0041 ] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex(點(diǎn)5)的沒訪問的鄰接點(diǎn)Ve;rtex(點(diǎn)7),將 Vert ex (點(diǎn)7)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為3。
[0042] (4)將Vedex標(biāo)記為當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex,并標(biāo)記為已訪問節(jié)點(diǎn),回到 (3)繼續(xù)訪問。
[0043] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex(點(diǎn)7)的沒訪問的鄰接點(diǎn)Ve;rtex(點(diǎn)8),將 Vert ex (點(diǎn)8)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為4。
[0044] (4)將Vedex標(biāo)記為當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex,并標(biāo)記為已訪問節(jié)點(diǎn),回到 (3)繼續(xù)訪問。
[0045] (3)尋找當(dāng)前訪問節(jié)點(diǎn)化rrent_Ve;rtex(點(diǎn)8)的沒訪問的鄰接點(diǎn)Vedex(點(diǎn)14),將 Vert ex (點(diǎn)14)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為5。
[00響 (4)此時(shí)長(zhǎng)度為L(zhǎng) e η -1,但點(diǎn)10不是點(diǎn)14的鄰接點(diǎn),標(biāo)記點(diǎn)8為當(dāng)前訪問節(jié)點(diǎn) Qirrent_Ve;rtex,此時(shí)path中的路徑長(zhǎng)度pathLen為4,回溯到步驟(3)。
[0047] (3)尋找當(dāng)前訪問節(jié)點(diǎn)Curr ent_Ve;r t ex (點(diǎn)8)的下一個(gè)沒訪問的鄰接點(diǎn)Vedex (點(diǎn) 30),將Ve;rtex(點(diǎn)30)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為5。
[004引(4)此時(shí)pathLen長(zhǎng)度為L(zhǎng)en-1,但點(diǎn)10不是點(diǎn)30的鄰接點(diǎn),標(biāo)記點(diǎn)8為當(dāng)前訪問節(jié) 點(diǎn)Current_Ve;rtex,此時(shí)path中的路徑長(zhǎng)度pathLen為4,回溯到步驟(3)。
[0049] (3)當(dāng)前訪問節(jié)點(diǎn)Curr en t_Ve;r t ex (點(diǎn)8)的所有鄰接點(diǎn)都被訪問過,將節(jié)點(diǎn)8標(biāo)記 為沒訪問過節(jié)點(diǎn),并標(biāo)記點(diǎn)7為當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex,此時(shí)path中的路徑長(zhǎng)度 patliLen為3;尋找當(dāng)前訪問節(jié)點(diǎn)Current_Ve;rtex(點(diǎn)7)的沒訪問的鄰接點(diǎn)Ve;rtex (點(diǎn)15),將 Vert ex (點(diǎn)15)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為4。
[(K)加](4)將Vedex標(biāo)記為當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Vedex,并標(biāo)記為已訪問節(jié)點(diǎn),回到 (3)繼續(xù)訪問。
[0051 ] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVertex(點(diǎn)15)的沒訪問的鄰接點(diǎn)Ve;rtex(點(diǎn)11), 將Vedex (點(diǎn)11)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為5。
[0052] (4)此時(shí)長(zhǎng)度為L(zhǎng)en-1,但點(diǎn)10不是點(diǎn)11的鄰接點(diǎn),標(biāo)記點(diǎn)15為當(dāng)前訪問節(jié)點(diǎn) Qirrent_Ve;rtex,此時(shí)path中的路徑長(zhǎng)度pathLen為4,回溯到步驟(3)。
[0053] (3)尋找當(dāng)前訪問節(jié)點(diǎn)CurrenLVer (點(diǎn)15)的下一個(gè)沒訪問的鄰接點(diǎn)Ve;rtex (點(diǎn) 13),將Vedex(點(diǎn)13)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度為5。
[0054] (4)此時(shí)patliLen長(zhǎng)度為L(zhǎng)en-1,但點(diǎn)10不是點(diǎn)13的鄰接點(diǎn),標(biāo)記點(diǎn)15為當(dāng)前訪問節(jié) 點(diǎn)Current_Ve;rtex,此時(shí)path中的路徑長(zhǎng)度pathLen為4,回溯到步驟(3)。
[0055] (3)尋找當(dāng)前訪問節(jié)點(diǎn)Cu;rrent_Ve;rtex(點(diǎn)15)的下一個(gè)沒訪問的鄰接點(diǎn)Ve;rtex (點(diǎn)16),將Vei·tex(點(diǎn)16)放入路徑path中,此時(shí)path中的路徑長(zhǎng)度pathLen為5。
[0056] (4)此時(shí)長(zhǎng)度為L(zhǎng)en-1,但點(diǎn)10是點(diǎn)16的鄰接點(diǎn),則包含邊4-10長(zhǎng)度為6的圈已找 到。
[0化7 ] 最后得到剩余子矩陣中,包含邊4-10長(zhǎng)為6的圈有4,6,5,7,15,16,10。按照W上步 驟,可W得出CQs中的任意一個(gè)正確邊e,都存在長(zhǎng)為6的圈包含運(yùn)個(gè)正確邊。即當(dāng)交叉立方 體網(wǎng)絡(luò)CQs中錯(cuò)誤的邊(I Fe I )和錯(cuò)誤的點(diǎn)(I Fv I )的個(gè)數(shù)之和即I Fv I + I Fe I如-2 = 3時(shí),C化中 的任意一個(gè)正確邊e,都存在長(zhǎng)為1(1 = 6)的圈包含邊e。接下來,用數(shù)學(xué)歸納法可W得出當(dāng) 交叉立方體網(wǎng)絡(luò)CQn中錯(cuò)誤的邊(I Fe I )和錯(cuò)誤的點(diǎn)(I Fv I )的個(gè)數(shù)之和即I Fv I + I Fe I ^-2時(shí), 對(duì)于η含3(n為交叉立方體網(wǎng)絡(luò)Wn的維數(shù)),Wn中的任意一個(gè)正確邊e,都存在長(zhǎng)為6 < 1 < 2n-|Fv|,1辛7的圈包含邊e。
【主權(quán)項(xiàng)】
1. 一種基于交叉立方體網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)的容錯(cuò)的方法,其特征在于以下步驟: (1 )當(dāng)交叉立方體網(wǎng)絡(luò)CQn中錯(cuò)誤的邊(I Fe I )和錯(cuò)誤的點(diǎn)(I Fv I )的個(gè)數(shù)之和I Fv I + I Fe I < n-2時(shí),對(duì)于交叉立方體網(wǎng)絡(luò)的維數(shù)η 2 5,CQn中的任意一個(gè)正確邊e都存在長(zhǎng)為6 < 1 < 2n-Fv|,1關(guān)7的圈包含邊e;由此判斷交叉立方體網(wǎng)絡(luò)CQn中是否存在長(zhǎng)Len為(ldL en<l2)的 圈,包括以下三個(gè)部分: (a) CQn的構(gòu)造:根據(jù)CQn的定義規(guī)則,生成CQW關(guān)聯(lián)矩陣代碼,得到個(gè)頂點(diǎn)的鄰接 點(diǎn),將頂點(diǎn)間的鄰接關(guān)系保存在關(guān)聯(lián)矩陣(Incidence_matrix)中; (b) 生成錯(cuò)誤集,在關(guān)聯(lián)矩陣中剔除錯(cuò)誤集;首先對(duì)CQn*所有邊和點(diǎn)進(jìn)行標(biāo)號(hào),然后生 成所有可能的錯(cuò)誤子集; (c) 對(duì)于剩余子矩陣進(jìn)行深度優(yōu)先遍歷,尋找所需要的路徑即判斷矩陣中是否存在指 定長(zhǎng)度的圈并記錄一個(gè)符合條件的圈;剩余子矩陣為CQ n去除錯(cuò)誤子集后的部分; 判斷交叉立方體網(wǎng)絡(luò)CQn中是否存在指定長(zhǎng)Lend: < Len < 12)的圈的原則: 1) 令邊e的一個(gè)端點(diǎn)為路徑起點(diǎn)(Vbegiη)及另一個(gè)端點(diǎn)為路徑終點(diǎn)(Vend);將Vbegiη 和Vend放入搜索路徑(path)中去,標(biāo)記路徑起點(diǎn)Vbegin已經(jīng)訪問,路徑終點(diǎn)Vend即path[0] 位置先不標(biāo)記訪問; 2) 將路徑起點(diǎn)Vbegin作為當(dāng)前訪問節(jié)點(diǎn)Current_Vertex,即Current_Vertex = Vbegin,開始進(jìn)行深度優(yōu)先遍歷;同時(shí)標(biāo)記當(dāng)前點(diǎn)為已經(jīng)訪問節(jié)點(diǎn),保證回溯時(shí)能回到正確 的位置; 3) 尋找當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的(下一個(gè))沒訪問的鄰接點(diǎn)Vertex,將節(jié)點(diǎn) Vertex加入到搜索路徑path中去,路徑長(zhǎng)度PathLen加1; 如果當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的所有鄰接點(diǎn)Vertex都被訪問過且PathLen〈Len_ 1,則做如下回溯操作: visited[Current_Vertex] = false;//標(biāo)記當(dāng)前節(jié)點(diǎn)沒有訪問過; PathLen-;//當(dāng)前路徑長(zhǎng)度減1; Current_Vert ex = path [ PathLen-1 ];//將路徑中的上一個(gè)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn); Star t [ Current_Vertex]++;//當(dāng)前節(jié)點(diǎn)從下一個(gè)節(jié)點(diǎn)開始訪問; 回溯結(jié)束后以新的當(dāng)前訪問節(jié)點(diǎn)Current_Vertex開始新的訪問; 若直到路徑起點(diǎn)Vbegin所有的鄰接點(diǎn)都訪問過,還未找到PathLen = Len_l,則表示沒 有相應(yīng)的圈; 4) 將當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的鄰接點(diǎn)\^1^61作為當(dāng)前訪問節(jié)點(diǎn)(:111^6111:_ Vertex,即Current_Vertex = vertex,并標(biāo)記為已訪問節(jié)點(diǎn),重復(fù)步驟(3); 當(dāng)路徑長(zhǎng)度PathLen = Len_l時(shí),判斷當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的鄰接節(jié)點(diǎn)Vertex 中是否有路徑終點(diǎn)Vend; 如果當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的鄰接節(jié)點(diǎn)Vertex中沒有路徑終點(diǎn)Vend,則將當(dāng)前 節(jié)點(diǎn)Current_Vertex標(biāo)記為未訪問節(jié)點(diǎn),并將路徑中上一個(gè)節(jié)點(diǎn)標(biāo)記為當(dāng)前節(jié)點(diǎn)Current_ Vertex,路徑長(zhǎng)度PathLen減1,回溯到步驟(3); 如果當(dāng)前訪問節(jié)點(diǎn)Current_Vertex的鄰接節(jié)點(diǎn)Vertex中有路徑終點(diǎn)Vend,則該圈就是 要找的圈。
【文檔編號(hào)】H04L12/751GK105871714SQ201610159263
【公開日】2016年8月17日
【申請(qǐng)日】2016年3月18日
【發(fā)明人】蘇杭, 徐喜榮, 王凡
【申請(qǐng)人】大連理工大學(xué)