一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及在網(wǎng)絡(luò)拓撲布局中,通過一系列的計算和操作,實現(xiàn)在一個復(fù)雜的拓 撲圖中找出所有環(huán)狀結(jié)構(gòu)的方法。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的發(fā)展,在各個領(lǐng)域中,種類繁多的信息源產(chǎn)生了大量數(shù)據(jù),遠超出 了人腦分析數(shù)據(jù)的能力范圍。因此,如何利用運些數(shù)據(jù),通過大量數(shù)據(jù)分析手段獲得想要 的信息,越來越為人們所關(guān)注。為此,美國計算機成像專業(yè)委員會提出了解決方法一-可視 化??梢暬褦?shù)據(jù)轉(zhuǎn)換成圖形,給予人們深刻與意想不到的桐察力,在很多領(lǐng)域使科學(xué)家的 研究方式發(fā)生了根本變化??梢暬夹g(shù)的應(yīng)用大至高速飛行模擬,小至分子結(jié)構(gòu)的演示,無 處不在。
[0003] 網(wǎng)絡(luò)拓撲結(jié)構(gòu)由于具有大量的節(jié)點,且節(jié)點之間連接復(fù)雜,中屯、節(jié)點連接關(guān)系無 規(guī)律,導(dǎo)致了網(wǎng)絡(luò)拓撲布局研究的復(fù)雜性。樹形結(jié)構(gòu)的圖由于能夠清晰地找到根節(jié)點W及 每個點的父節(jié)點和子節(jié)點,因此可W呈現(xiàn)較好的連接關(guān)系。而帶有環(huán)狀結(jié)構(gòu)的圖,由于其內(nèi) 部的環(huán)狀結(jié)構(gòu),導(dǎo)致了整體結(jié)構(gòu)的無層次性,是研究網(wǎng)絡(luò)拓撲布局的難點。
[0004] 首先,具有樹形結(jié)構(gòu)的圖,在確定了根節(jié)點之后,每個點都能夠有明確的父節(jié)點和 子節(jié)點。而帶環(huán)狀結(jié)構(gòu)的圖,由于高層的點可能連接低層的點從而形成環(huán)狀結(jié)構(gòu),因此無法 明確表示相連節(jié)點之間的關(guān)系。
[0005] 其次,計算復(fù)雜性的問題。帶環(huán)狀結(jié)構(gòu)的圖由于環(huán)狀結(jié)構(gòu)內(nèi)的點不能依據(jù)其與相 鄰節(jié)點的關(guān)系直接計算,因而只能采用力導(dǎo)向等方式,多次迭代計算,找出一個相對較好的 位置。但大量重復(fù)的計算,不僅浪費系統(tǒng)資源,也使得整體效率降低。在網(wǎng)絡(luò)拓撲較為復(fù)雜, 節(jié)點數(shù)量巨大的結(jié)構(gòu)中,并不適用。
[0006] 最后,拓撲結(jié)構(gòu)的美觀性問題。帶環(huán)狀結(jié)構(gòu)的圖可W看作是樹形圖和環(huán)狀結(jié)構(gòu)的 結(jié)合,對單純樹形結(jié)構(gòu)的排列較為美觀,加入了環(huán)狀結(jié)構(gòu)之后,由于環(huán)狀結(jié)構(gòu)的不確定性, 導(dǎo)致隨機性較大,環(huán)狀結(jié)構(gòu)內(nèi)的點難W控制和確定,對環(huán)狀結(jié)構(gòu)需要分配多大的空間也難 W掌握,可能導(dǎo)致環(huán)內(nèi)的點互相重合,影響整體的美觀。
[0007] 本發(fā)明的目的是解決上述環(huán)狀結(jié)構(gòu)帶來的問題,通過對環(huán)狀結(jié)構(gòu)的檢測和判斷, 使得帶環(huán)狀結(jié)構(gòu)的圖可W使用樹形結(jié)構(gòu)的圖的算法,從而較好的布局環(huán)狀網(wǎng)絡(luò)的拓撲節(jié) 點。
【發(fā)明內(nèi)容】
[0008] 針對上述技術(shù)問題,本發(fā)明提供了一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法,所述 方法不僅能較好的體現(xiàn)原始網(wǎng)絡(luò)拓撲的環(huán)狀結(jié)構(gòu)信息,還解決了帶環(huán)狀結(jié)構(gòu)的復(fù)雜網(wǎng)絡(luò)圖 的布局問題,減少了無數(shù)節(jié)點或連線的交叉和重疊的問題。此外,所述方法時間復(fù)雜度和空 間復(fù)雜度都較低,節(jié)省計算性能,不會耗費過多的時間和占用過多的CPU資源,且應(yīng)用范圍 廣泛,可適用任何帶有環(huán)狀結(jié)構(gòu)的拓撲圖。
[0009] 一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法,包括: 501、 獲取節(jié)點信息,所述節(jié)點信息包括:單個節(jié)點ID、相對應(yīng)的節(jié)點簇; 記錄單個節(jié)點ID及相對應(yīng)的節(jié)點簇,并將單個節(jié)點ID定義為目標父節(jié)點,所述節(jié)點簇 具體形式為[節(jié)點IDm,節(jié)點IDn···.]; 502、 選取任一目標父節(jié)點,繪制樹狀圖; 將所述節(jié)點簇里的節(jié)點列為目標父節(jié)點的子節(jié)點; 503、 遍歷當前層的每一個節(jié)點,判斷當前層的當前節(jié)點的節(jié)點簇中是否包當前層的節(jié) 點或上一層的節(jié)點,如果是,則保持節(jié)點位置不變,否則,列在下一層作為當前節(jié)點的子節(jié) 占 . 遍歷下一層的子節(jié)點; 504、 重復(fù)步驟S03,直到最后一層,繪制完整的樹狀圖; 505、 根據(jù)所述的樹狀圖的結(jié)構(gòu)關(guān)系,記錄所有目標父節(jié)點相對應(yīng)的節(jié)點簇、父節(jié)點、子 節(jié)點及節(jié)點所在層次,所述所在層次N為0到Μ間的整數(shù),Μ為該樹狀圖的層次總數(shù); 506、 依次找出每一目標父節(jié)點的節(jié)點簇中除父節(jié)點與子節(jié)點W外的節(jié)點,將其定義為 異常節(jié)點簇; 507、 將目標父節(jié)點與所在層次Ν的異常節(jié)點簇中的節(jié)點分別組成異常節(jié)點對; 508、 逐一判斷各異常節(jié)點對,若異常節(jié)點對所在層次為同一層,則查找共同的父節(jié)點, 該異常節(jié)點對與父節(jié)點所形成的閉合環(huán),則為所找的環(huán)狀結(jié)構(gòu); 509、 若異常節(jié)點對所在層次為不同層,則查找下層異常節(jié)點的父節(jié)點,該父節(jié)點與異 常節(jié)點對中的另一節(jié)點所在層次為同一層,則按照S08方法找出環(huán)狀結(jié)構(gòu); 510、 判斷所有環(huán)狀結(jié)構(gòu)包含的節(jié)點是否重復(fù),如果是則去掉重復(fù)的節(jié)點,否則合并為 一個節(jié)點簇,則該節(jié)點簇所形成的環(huán)為所找的環(huán)狀結(jié)構(gòu)。
[0010] 一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的系統(tǒng),包括: 存儲信息模塊,用于獲取節(jié)點信息,所述節(jié)點信息包括:單個節(jié)點ID、相對應(yīng)的節(jié)點 簇; 記錄單個節(jié)點ID及相對應(yīng)的節(jié)點簇,并將單個節(jié)點ID定義為目標父節(jié)點,所述節(jié)點簇 具體形式為[節(jié)點IDm,節(jié)點IDn···.]; 繪制樹狀圖模塊,用于繪制樹狀圖,具體包括: 選取任一目標父節(jié)點;將所述節(jié)點簇里的節(jié)點列為目標父節(jié)點的子節(jié)點; 遍歷當前層的每一個節(jié)點,判斷當前層的當前節(jié)點的節(jié)點簇中是否包當前層的節(jié)點或 上一層的節(jié)點,如果是,則保持節(jié)點位置不變,否則,列在下一層作為當前節(jié)點的子節(jié)點; 遍歷下一層的子節(jié)點; 重復(fù)上一步驟,直到最后一層,繪制完整的樹狀圖; 查找模塊,用于查找環(huán)狀結(jié)構(gòu),具體包括:根據(jù)所述的樹狀圖的結(jié)構(gòu)關(guān)系,記錄所有目 標父節(jié)點相對應(yīng)的節(jié)點簇、父節(jié)點、子節(jié)點及節(jié)點所在層次,所述所在層次N為0到Μ間的 整數(shù),Μ為該樹狀圖的層次總數(shù); 依次找出每一目標父節(jié)點的節(jié)點簇中除父節(jié)點與子節(jié)點W外的節(jié)點,將其定義為異常 節(jié)點簇; 將目標父節(jié)點與所在層次Ν的異常節(jié)點簇中的節(jié)點分別組成異常節(jié)點對; 判斷模塊,用于逐一判斷各異常節(jié)點對,若異常節(jié)點對所在層次為同一層,則查找共同 的父節(jié)點,該異常節(jié)點對與父節(jié)點所形成的閉合環(huán),則為所找的環(huán)狀結(jié)構(gòu); 若異常節(jié)點對所在層次為不同層,則查找下層異常節(jié)點的父節(jié)點,該父節(jié)點與異常節(jié) 點對中的另一節(jié)點所在層次為同一層,則按照S08方法找出環(huán)狀結(jié)構(gòu); 判斷所有環(huán)狀結(jié)構(gòu)包含的節(jié)點是否重復(fù),如果是則去掉重復(fù)的節(jié)點,否則合并為一個 節(jié)點簇,則該節(jié)點簇所形成的環(huán)為所找的環(huán)狀結(jié)構(gòu)。
[0011] 本發(fā)明提供了一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法,所述方法不僅能較好的體 現(xiàn)原始網(wǎng)絡(luò)拓撲的環(huán)狀結(jié)構(gòu)信息,還解決了帶環(huán)的復(fù)雜網(wǎng)絡(luò)圖的布局問題,減少了無數(shù)節(jié) 點或連線的交叉和重疊的問題。此外,所述方法時間復(fù)雜度和空間復(fù)雜度都較低。節(jié)省計 算性能,不會耗費過多的時間和占用過多的CPU資源,且應(yīng)用范圍廣泛,可適用任何帶有環(huán) 狀結(jié)構(gòu)的拓撲圖。
【附圖說明】
[0012] 為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡 單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域 普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可W根據(jù)運些附圖獲得其他的附圖。
[0013] 圖1為本發(fā)明提供的一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法流程圖; 圖2為本發(fā)明提供的方法中繪制的完整樹狀圖示意圖; 圖3為本發(fā)明提供的一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的系統(tǒng)結(jié)構(gòu)圖。
【具體實施方式】
[0014] 本發(fā)明給出了一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法的具體實施例,為了使本技 術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu) 點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明中技術(shù)方案作進一步詳細的說明: 本發(fā)明首先提供了一種網(wǎng)絡(luò)拓撲圖中查找環(huán)狀結(jié)構(gòu)的方法,如圖1所示,包括: SOI、獲取節(jié)點信息,節(jié)點信息包括:單個節(jié)點ID、相對應(yīng)的節(jié)點簇、 節(jié)點屬性(如節(jié)點是主機,路由器,防火墻等); 記錄單個節(jié)點ID及相對應(yīng)的節(jié)點簇,并將單個節(jié)點ID定義為目標父節(jié)點,所述節(jié)點簇 具體形式為[節(jié)點IDm,節(jié)點IDn···.]; 例如:假設(shè)節(jié)點信息如下表所示:
502、 選取任一目標父節(jié)點,繪制樹狀圖; 將所述節(jié)點簇里的節(jié)點列為目標父節(jié)點的子節(jié)點; 503、 遍歷當前層的每一個節(jié)點,判斷當前層的當前節(jié)點的節(jié)點簇中是否包含當前層的 節(jié)點或上一層的節(jié)點,如果是,則保持節(jié)點位置不變,否則,列在下一層作為當前節(jié)點的子 節(jié)點; 遍歷下一層的子節(jié)點; 504、 重復(fù)步驟S03,直到最后一層,繪制完整的樹狀圖; 例如,選取節(jié)點ID為0的作為目標父節(jié)點,繪制的完整樹狀圖如圖2所示; 505、 根據(jù)所述的樹狀圖的結(jié)構(gòu)關(guān)系,記錄所有目標父節(jié)點相對應(yīng)的節(jié)點簇、父節(jié)點、子 節(jié)點及節(jié)點所在