国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法

      文檔序號(hào):7779063閱讀:347來源:國知局
      一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法
      【專利摘要】本發(fā)明涉及一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,包括步驟如下:(1)生成拓?fù)鋽?shù)據(jù):遍歷圖形中的網(wǎng)絡(luò)節(jié)點(diǎn),獲取節(jié)點(diǎn)之間的關(guān)聯(lián)信息;(2)執(zhí)行分塊操作:分塊操作共分為一級(jí)分塊和二級(jí)分塊,一級(jí)分塊是根據(jù)節(jié)點(diǎn)之間的連通性來劃分,二級(jí)分塊是根據(jù)設(shè)定的最大節(jié)點(diǎn)數(shù)來劃分;(3)拓?fù)鋲K信息的更新與維護(hù):在動(dòng)態(tài)網(wǎng)絡(luò)中,節(jié)點(diǎn)是允許發(fā)生改變的,因此在編輯網(wǎng)絡(luò)時(shí)要保證相應(yīng)拓?fù)鋲K信息的同步更新;(4)基于兩級(jí)分塊的拓?fù)浞治?。本發(fā)明利用了兩級(jí)分塊的算法有效的控制了拓?fù)浔闅v的數(shù)據(jù)量,避免了拓?fù)浞治鰰r(shí)對(duì)整個(gè)拓?fù)渚W(wǎng)絡(luò)的遍歷,也能很好地解決整個(gè)網(wǎng)絡(luò)都是一個(gè)連通整體時(shí)的情況。
      【專利說明】一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于地理信息系統(tǒng)中海量拓?fù)鋽?shù)據(jù)的分塊操作【技術(shù)領(lǐng)域】,特別是一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法。
      【背景技術(shù)】
      [0002]拓?fù)渚W(wǎng)絡(luò)分析是地理信息系統(tǒng)領(lǐng)域一個(gè)重要的內(nèi)容,一般的分析算法是對(duì)整個(gè)拓?fù)渚W(wǎng)絡(luò)進(jìn)行遍歷分析,然而在實(shí)際生產(chǎn)應(yīng)用環(huán)境中,拓?fù)渚W(wǎng)絡(luò)往往比較復(fù)雜,遍歷整個(gè)拓?fù)渚W(wǎng)絡(luò)不僅占用內(nèi)存大,而且分析效率低下,目前一種常用的拓?fù)渚W(wǎng)絡(luò)優(yōu)化方法是根據(jù)連通性對(duì)拓?fù)浣Y(jié)構(gòu)進(jìn)行分塊,建立一個(gè)個(gè)的孤島來減少遍歷的數(shù)據(jù)量,然而,如果整個(gè)網(wǎng)絡(luò)都是一個(gè)連通的整體,這種分塊方式就失去了優(yōu)勢。

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

      [0003]本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法。
      [0004]本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實(shí)現(xiàn)的:
      [0005]一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,包括步驟如下:
      [0006](I)生成拓?fù)鋽?shù)據(jù):遍歷圖形中的網(wǎng)絡(luò)節(jié)點(diǎn),獲取節(jié)點(diǎn)之間的關(guān)聯(lián)信息;
      [0007](2)執(zhí)行分塊操作:分塊操作共分為一級(jí)分塊和二級(jí)分塊,一級(jí)分塊是根據(jù)節(jié)點(diǎn)之間的連通性來劃分,二級(jí)分塊是根據(jù)設(shè)定的最大節(jié)點(diǎn)數(shù)來劃分;
      [0008](3)拓?fù)鋲K信息的更新與維護(hù):在動(dòng)態(tài)網(wǎng)絡(luò)中,節(jié)點(diǎn)是允許發(fā)生改變的,因此在編輯網(wǎng)絡(luò)時(shí)要保證相應(yīng)拓?fù)鋲K信息的同步更新;
      [0009](4)基于兩級(jí)分塊的拓?fù)浞治觥?br> [0010]而且,所述步驟(I)生成拓?fù)鋽?shù)據(jù)的具體步驟如下:
      [0011]①遍歷整個(gè)網(wǎng)絡(luò),獲取節(jié)點(diǎn)之間的雙向關(guān)聯(lián)關(guān)系;
      [0012]②將節(jié)點(diǎn)之間的所有關(guān)系存儲(chǔ)到內(nèi)存數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)關(guān)系表中,另外,為每一個(gè)節(jié)點(diǎn)創(chuàng)建狀態(tài)標(biāo)識(shí)信息并存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)狀態(tài)表中,并設(shè)定初始值為:未檢測狀態(tài);
      [0013]③創(chuàng)建執(zhí)行分塊操作所需要的變量:
      [0014]—級(jí)塊號(hào),初始值為1,
      [0015]二級(jí)塊號(hào),初始值為I,
      [0016]二級(jí)塊節(jié)點(diǎn)數(shù)目,
      [0017]執(zhí)行分塊操作所需要的變量:
      [0018]二級(jí)塊信息存儲(chǔ)二級(jí)塊號(hào)與二級(jí)塊所包含的節(jié)點(diǎn)數(shù)目的對(duì)應(yīng)關(guān)系信息;塊邊界關(guān)系存放二級(jí)塊與塊之間的邊界信息;鄰接塊信息存放與當(dāng)前二級(jí)塊相連的其他二級(jí)塊的塊號(hào)及節(jié)點(diǎn)數(shù)目的對(duì)應(yīng)關(guān)系;
      [0019]④設(shè)置每個(gè)二級(jí)塊最多包含節(jié)點(diǎn)的數(shù)目為最大塊節(jié)點(diǎn)數(shù)目;
      [0020]⑤判斷節(jié)點(diǎn)狀態(tài)表中是否存在狀態(tài)為未檢測狀態(tài)的節(jié)點(diǎn),若存在則以此節(jié)點(diǎn)為起點(diǎn)開始探測并對(duì)探測到的節(jié)點(diǎn)執(zhí)行分塊操作,,若不存在則表示所有的節(jié)點(diǎn)已經(jīng)探測完成,此時(shí)將每個(gè)節(jié)點(diǎn)的塊信息以及塊與塊之間的邊界信息存儲(chǔ)到數(shù)據(jù)庫中。
      [0021]而且,所述步驟(2)執(zhí)行分塊操作的具體步驟是:
      [0022]①從節(jié)點(diǎn)狀態(tài)表中獲取到狀態(tài)為未檢測狀態(tài)節(jié)點(diǎn),然后將其加入到檢測隊(duì)列中,執(zhí)行步驟②;
      [0023]②判斷檢測隊(duì)列是否為空,若不為空,執(zhí)行步驟③,若為空,執(zhí)行步驟④;
      [0024]③取檢測隊(duì)列第一個(gè)元素,定為當(dāng)前節(jié)點(diǎn),并將其從隊(duì)列中刪除,執(zhí)行步驟⑤;
      [0025]④隊(duì)列為空說明當(dāng)前塊劃分完畢,比較二級(jí)塊節(jié)點(diǎn)數(shù)目與最大塊節(jié)點(diǎn)數(shù)目的一半的大小,若二級(jí)塊節(jié)點(diǎn)數(shù)目小于最大塊節(jié)點(diǎn)數(shù)目的一半,說明當(dāng)前的二級(jí)塊包含的節(jié)點(diǎn)的數(shù)目還不足設(shè)定的最大數(shù)量值的一半,為了防止產(chǎn)生零碎的小塊,需要將當(dāng)前的二級(jí)塊與相鄰的最小的二級(jí)塊進(jìn)行合并,然后使一、二級(jí)塊號(hào)的值各自加1,此時(shí)保存當(dāng)前二級(jí)塊號(hào)及二級(jí)塊節(jié)點(diǎn)數(shù)目到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息中,返回繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表中是否有未檢測狀態(tài)的節(jié)點(diǎn),若二級(jí)塊節(jié)點(diǎn)數(shù)目大于最大塊節(jié)點(diǎn)數(shù)目的一半,首先使一級(jí)塊號(hào),二級(jí)塊號(hào)的值各自加1,此時(shí)保存當(dāng)前二級(jí)塊號(hào)及二級(jí)塊節(jié)點(diǎn)數(shù)目到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息,然后執(zhí)行步驟①,繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表中是否有未檢測狀態(tài)的節(jié)點(diǎn);
      [0026]⑤在節(jié)點(diǎn)關(guān)系表中查找與當(dāng)前節(jié)點(diǎn)直接相連節(jié)點(diǎn)數(shù),執(zhí)行步驟⑥;
      [0027]⑥若直接相連節(jié)點(diǎn)數(shù)大于O,說明存在相連的節(jié)點(diǎn),取出其中一個(gè)鄰接節(jié)點(diǎn)并查看其狀態(tài),若為未檢測狀態(tài),說明此節(jié)點(diǎn)尚未探測,執(zhí)行步驟⑦?’若為已檢測狀態(tài),說明此節(jié)點(diǎn)已經(jīng)被探測過,執(zhí)行步驟⑧,若直接相連節(jié)點(diǎn)數(shù)等于0,說明當(dāng)前節(jié)點(diǎn)的相連節(jié)點(diǎn)已經(jīng)處理完成或者不存在相連節(jié)點(diǎn),設(shè)置當(dāng)前節(jié)點(diǎn)的狀態(tài)為已檢測狀態(tài),設(shè)置當(dāng)前節(jié)點(diǎn)的一級(jí)塊號(hào)和二級(jí)塊號(hào)分別為當(dāng)前一級(jí)塊號(hào)和二級(jí)塊號(hào)的值,執(zhí)行步驟②;
      [0028]⑦比較二級(jí)塊節(jié)點(diǎn)數(shù)目與最大塊節(jié)點(diǎn)數(shù)目的大小;
      [0029]A.若二級(jí)塊節(jié)點(diǎn)數(shù)目小于最大塊節(jié)點(diǎn)數(shù)目,說明當(dāng)前的二級(jí)塊沒有達(dá)到個(gè)數(shù)限制,使直接相連節(jié)點(diǎn)數(shù)減1,并將當(dāng)前節(jié)點(diǎn)加入隊(duì)列中,執(zhí)行步驟⑥;
      [0030]B.若二級(jí)塊節(jié)點(diǎn)數(shù)目大于最大塊節(jié)點(diǎn)數(shù)目,說明當(dāng)前二級(jí)塊已經(jīng)飽和,不能再加入新的節(jié)點(diǎn)元素,執(zhí)行步驟⑧;
      [0031]⑧判斷鄰接節(jié)點(diǎn)的二級(jí)塊號(hào)是否與當(dāng)前二級(jí)塊號(hào)的值一致;
      [0032]A.若不一致,存儲(chǔ)鄰接節(jié)點(diǎn)的二級(jí)塊號(hào)到數(shù)據(jù)結(jié)構(gòu)鄰接塊信息中,并存儲(chǔ)邊界信息存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)塊邊界關(guān)系中,合并當(dāng)前節(jié)點(diǎn)當(dāng)前節(jié)點(diǎn)與鄰接節(jié)點(diǎn)的一級(jí)塊號(hào),使直接相連節(jié)點(diǎn)數(shù)減I,執(zhí)行步驟⑥;
      [0033]B.若一致,使二級(jí)塊號(hào)加1,直接相連節(jié)點(diǎn)數(shù)減1,執(zhí)行步驟⑥。
      [0034]而且,所述步驟(3)拓?fù)鋲K信息的更新與維護(hù)的具體步驟是:
      [0035]①讀取數(shù)據(jù)庫中一級(jí)分塊和二級(jí)分塊的最大值,分別賦值給變量最大一級(jí)塊號(hào)、最大二級(jí)塊號(hào),執(zhí)行步驟②;
      [0036]②若執(zhí)行添加操作,則執(zhí)行步驟③;若執(zhí)行刪除操作,則執(zhí)行步驟⑧;若執(zhí)行修改操作,則先執(zhí)行步驟⑧再執(zhí)行步驟③;
      [0037]③添加一個(gè)新節(jié)點(diǎn),從網(wǎng)絡(luò)中查找與其直接相連節(jié)點(diǎn)數(shù)并獲取數(shù)據(jù)庫中相連節(jié)點(diǎn)的拓?fù)鋲K信息,執(zhí)行步驟④;
      [0038]④判斷直接相連節(jié)點(diǎn)數(shù)的值,若直接相連節(jié)點(diǎn)數(shù)為1,說明在原有的拓?fù)渚W(wǎng)絡(luò)中與新加的節(jié)點(diǎn)直接相連的節(jié)點(diǎn)只有一個(gè),執(zhí)行步驟⑤,若直接相連節(jié)點(diǎn)數(shù)為0,說明新節(jié)點(diǎn)為孤立節(jié)點(diǎn),使最大一級(jí)塊號(hào)、最大二級(jí)塊號(hào)的值各自加I并分別賦值給新節(jié)點(diǎn)的一、二級(jí)塊號(hào),然后保存相關(guān)信息,退出;若鄰接塊信息大于1,說明相連節(jié)點(diǎn)數(shù)目有多個(gè),執(zhí)行步驟⑥;
      [0039]⑤設(shè)置新節(jié)點(diǎn)的一級(jí)塊號(hào)為鄰接節(jié)點(diǎn)的一級(jí)塊號(hào),讀取鄰接節(jié)點(diǎn)的二級(jí)塊節(jié)點(diǎn)數(shù)目;若二級(jí)塊節(jié)點(diǎn)數(shù)目大于1.5X最大塊節(jié)點(diǎn)數(shù)目,說明相連節(jié)點(diǎn)所在的二級(jí)塊不能再添加新的節(jié)點(diǎn),此時(shí)要重新創(chuàng)建一個(gè)新的二級(jí)塊,使最大二級(jí)塊號(hào)的值加I并設(shè)置其為新二級(jí)塊的塊號(hào);若二級(jí)塊節(jié)點(diǎn)數(shù)目小于1.5X最大塊節(jié)點(diǎn)數(shù)目,說明相連節(jié)點(diǎn)所在的二級(jí)塊還可以接受新的節(jié)點(diǎn),設(shè)置新節(jié)點(diǎn)的二級(jí)塊為鄰接節(jié)點(diǎn)的二級(jí)塊號(hào),最后保存到數(shù)據(jù)庫中,退出;
      [0040]⑥首先,判斷與新節(jié)點(diǎn)相連的每個(gè)節(jié)點(diǎn)所在的一級(jí)塊是否相同,若不相同,則合并一級(jí)塊并統(tǒng)一一級(jí)塊號(hào)為之前最大的一級(jí)塊的塊號(hào),然后進(jìn)一步判斷是否需要合并二級(jí)分塊,若需要?jiǎng)t直接合并,若不需要?jiǎng)t存儲(chǔ)兩個(gè)二級(jí)塊之間的邊界信息到塊邊界關(guān)系,并將相關(guān)信息保存到數(shù)據(jù)庫中;退出,若相同,則直接執(zhí)行步驟⑦;
      [0041]⑦判斷與新節(jié)點(diǎn)相連的每個(gè)節(jié)點(diǎn)所在的二級(jí)塊是否相同,若不相同,則獲取所有相鄰節(jié)點(diǎn)的二級(jí)塊中最小塊的二級(jí)塊號(hào),并將其設(shè)為新節(jié)點(diǎn)的二級(jí)塊號(hào),同時(shí),增加若干條由于新節(jié)點(diǎn)導(dǎo)致的塊與塊之間的邊界信息,最后保存到數(shù)據(jù)庫中,退出;若相同,則執(zhí)行步驟④;
      [0042]⑧刪除一個(gè)舊節(jié)點(diǎn),首先,讀取舊節(jié)點(diǎn)的拓?fù)湫畔ⅲ瑒h除舊節(jié)點(diǎn)到其他相鄰節(jié)點(diǎn)的單向關(guān)系信息,然后,查看與舊節(jié)點(diǎn)直接相連的所有節(jié)點(diǎn)鄰接節(jié)點(diǎn)的直接相連節(jié)點(diǎn)數(shù),并從數(shù)據(jù)庫中讀取每個(gè)相連節(jié)點(diǎn)的拓?fù)湫畔ⅲ糁苯酉噙B節(jié)點(diǎn)數(shù)為0,則直接退出;若直接相連節(jié)點(diǎn)數(shù)為1,則更新相鄰節(jié)點(diǎn)到的單向關(guān)聯(lián)關(guān)系,然后退出,若直接相連節(jié)點(diǎn)數(shù)大于1,執(zhí)行步驟⑨;
      [0043]⑨判斷舊節(jié)點(diǎn)與所有直接相連的鄰接節(jié)點(diǎn)是否處在相同二級(jí)塊內(nèi),若是,由于刪除掉節(jié)點(diǎn)可能導(dǎo)致原來的二級(jí)塊不再是一個(gè)連通的整體,所以需要加載此二級(jí)塊的數(shù)據(jù)進(jìn)行重新進(jìn)行探測,重新探測二級(jí)塊,若原來的塊仍然是一個(gè)連通的整體,則直接退出,若原來的塊不再是一個(gè)連通的整體,則需要進(jìn)一步探測所在的一級(jí)塊是否是一個(gè)連通的整體,執(zhí)行步驟⑩,若不是,則刪除掉用舊節(jié)點(diǎn)來標(biāo)識(shí)的二級(jí)塊邊界信息,執(zhí)行步驟⑩;
      [0044]⑩加載當(dāng)前一級(jí)塊數(shù)據(jù),并重新探測當(dāng)前一級(jí)塊是否仍然是一個(gè)連通的整體,若是,則直接退出,若不是,則需要對(duì)當(dāng)前一級(jí)塊單獨(dú)執(zhí)行分塊操作來重新劃分塊。
      [0045]而且,所述步驟(4)基于兩級(jí)分塊的拓?fù)浞治龅木唧w步驟是:
      [0046]①確定分析類型,若基于單節(jié)點(diǎn)分析,則執(zhí)行步驟②;若基于多節(jié)點(diǎn)分析,則執(zhí)行步驟③;
      [0047]②輸入待分析節(jié)點(diǎn)單節(jié)點(diǎn)的信息,查詢數(shù)據(jù)庫讀取單節(jié)點(diǎn)的一級(jí)塊號(hào)和二級(jí)塊號(hào),然后加載整個(gè)一級(jí)塊或者二級(jí)塊的數(shù)據(jù)進(jìn)行分析;
      [0048]③輸入多個(gè)節(jié)點(diǎn)的信息,分別獲取它們的一級(jí)塊號(hào)和二級(jí)塊號(hào),首先,判斷一級(jí)塊號(hào)是否相同,若不相同,則節(jié)點(diǎn)之間肯定不存在拓?fù)潢P(guān)系,若相同,則繼續(xù)判斷一級(jí)塊號(hào)是否相同,若相同,則加載二級(jí)塊號(hào)的塊數(shù)據(jù)進(jìn)行分析或者直接加載一級(jí)塊的數(shù)據(jù)進(jìn)行分析,若不相同,則需要分別加載每個(gè)節(jié)點(diǎn)所在的二級(jí)塊數(shù)據(jù),以及當(dāng)前一級(jí)塊內(nèi)的所有二級(jí)塊之間的邊界信息進(jìn)行拓?fù)浞治龌蛘咧苯蛹虞d一級(jí)塊的數(shù)據(jù)進(jìn)行分析。[0049]本發(fā)明的優(yōu)點(diǎn)和積極效果是
      [0050]本發(fā)明利用了兩級(jí)分塊的算法,通過連通性建立網(wǎng)絡(luò)孤島,對(duì)每個(gè)網(wǎng)絡(luò)孤島又執(zhí)行了進(jìn)一步的劃分。該方法有效的控制了拓?fù)浔闅v的數(shù)據(jù)量,避免了拓?fù)浞治鰰r(shí)對(duì)整個(gè)拓?fù)渚W(wǎng)絡(luò)的遍歷,也能很好地解決整個(gè)網(wǎng)絡(luò)都是一個(gè)連通整體時(shí)的情況。
      【專利附圖】

      【附圖說明】
      [0051 ]圖1是根據(jù)網(wǎng)絡(luò)生成拓?fù)涞牧鞒虉D;
      [0052]圖2是拓?fù)浞謮K的流程圖;
      [0053]圖3是動(dòng)態(tài)拓?fù)渚W(wǎng)絡(luò)中實(shí)時(shí)維護(hù)拓?fù)鋲K信息的流程圖;
      [0054]圖4基于兩級(jí)分塊的拓?fù)渚W(wǎng)絡(luò)分析流程圖;
      [0055]圖5是分塊操作實(shí)例圖;
      [0056]圖6刪除一個(gè)節(jié)點(diǎn)的實(shí)例圖;
      [0057]圖7添加一個(gè)節(jié)點(diǎn)的實(shí)例圖。
      【具體實(shí)施方式】
      [0058]以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例做進(jìn)一步詳述,以下實(shí)施例只是描述性的,不是限定性的,不能以此限定本發(fā)明的保護(hù)范圍。
      [0059]一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,如圖1所示,包括步驟如下:
      [0060](I)生成拓?fù)鋽?shù)據(jù):拓?fù)鋽?shù)據(jù)是根據(jù)圖形數(shù)據(jù)來生成的,需要遍歷圖形中的網(wǎng)絡(luò)節(jié)點(diǎn)來獲取節(jié)點(diǎn)之間的關(guān)聯(lián)信息,具體步驟如下:
      [0061]①遍歷整個(gè)網(wǎng)絡(luò),獲取節(jié)點(diǎn)之間的雙向關(guān)聯(lián)關(guān)系;比如:節(jié)點(diǎn)A與節(jié)點(diǎn)B直接相連,關(guān)系表示為:A, B, info (A) ; B, A, info (B);
      [0062]②將節(jié)點(diǎn)之間的所有關(guān)系存儲(chǔ)到內(nèi)存數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)關(guān)系表RelationTable中,另夕卜,為每一個(gè)節(jié)點(diǎn)創(chuàng)建狀態(tài)標(biāo)識(shí)信息并存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)狀態(tài)表StateTable中,并設(shè)定初始值為:未檢測狀態(tài)Unchecked。
      [0063]③創(chuàng)建執(zhí)行分塊操作所需要的變量:
      [0064]一級(jí)塊號(hào)SectionOneID,初始值為I
      [0065]二級(jí)塊號(hào) SectionTwoID,初始值為 I,
      [0066]二級(jí)塊節(jié)點(diǎn)數(shù)目 SectionTwoSize,
      [0067]執(zhí)行分塊操作所需要的變量:
      [0068]二級(jí)塊信息SectionInfo存儲(chǔ)二級(jí)塊號(hào)與二級(jí)塊所包含的節(jié)點(diǎn)數(shù)目的對(duì)應(yīng)關(guān)系信息;塊邊界關(guān)系BoundaryRelation存放二級(jí)塊與塊之間的邊界信息;鄰接塊信息AbutSection存放與當(dāng)前二級(jí)塊相連的其他二級(jí)塊的塊號(hào)及節(jié)點(diǎn)數(shù)目SectionTwoSize的對(duì)應(yīng)關(guān)系;
      [0069]④為了限制拓?fù)浞治鰰r(shí)加載的數(shù)據(jù)量,提高拓?fù)浞治鲂?,設(shè)置每個(gè)二級(jí)塊最多包含節(jié)點(diǎn)的數(shù)目為最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize。
      [0070]⑤接下來判斷節(jié)點(diǎn)狀態(tài)表StateTable中是否存在狀態(tài)為未檢測狀態(tài)Unchecked的節(jié)點(diǎn),若存在則以此節(jié)點(diǎn)為起點(diǎn)開始探測并對(duì)探測到的節(jié)點(diǎn)執(zhí)行分塊操作,如圖2所示,若不存在則表示所有的節(jié)點(diǎn)已經(jīng)探測完成,此時(shí)將每個(gè)節(jié)點(diǎn)的塊信息以及塊與塊之間的邊界信息存儲(chǔ)到數(shù)據(jù)庫中;
      [0071](2)執(zhí)行分塊操作;分塊操作共分為一級(jí)分塊和二級(jí)分塊,一級(jí)分塊是根據(jù)節(jié)點(diǎn)之間的連通性來劃分,二級(jí)分塊是根據(jù)設(shè)定的最大節(jié)點(diǎn)數(shù)來劃分,整個(gè)分塊過程如圖2所示,此部分承接自圖1中的“執(zhí)行拓?fù)浞謮K操作”,具體步驟如下:
      [0072]①從節(jié)點(diǎn)狀態(tài)表StateTable中獲取到狀態(tài)為未檢測狀態(tài)Unchecked節(jié)點(diǎn),然后將其加入到檢測隊(duì)列CheckingQueue中,等待進(jìn)一步的處理,執(zhí)行步驟②。
      [0073]②判斷檢測隊(duì)列CheckingQueue是否為空,若不為空,執(zhí)行步驟③,若為空,執(zhí)行步驟④;
      [0074]③取檢測隊(duì)列CheckingQueue第一個(gè)元素,賦值給當(dāng)前節(jié)點(diǎn)TempJoint,并將其從隊(duì)列中刪除,執(zhí)行步驟⑤;
      [0075]④隊(duì)列為空說明當(dāng)前塊劃分完畢,比較二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize與最大塊節(jié)點(diǎn)數(shù)目的一半MaxSectionSize/2的大小,若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize〈最大塊節(jié)點(diǎn)數(shù)目的一半MaxSectionSize/2,說明當(dāng)前的二級(jí)塊包含的節(jié)點(diǎn)的數(shù)目還不足設(shè)定的最大數(shù)量值的一半,為了防止產(chǎn)生零碎的小塊,需要將當(dāng)前的二級(jí)塊與相鄰的最小的二級(jí)塊進(jìn)行合并,然后使一級(jí)塊號(hào)SectionOneID, 二級(jí)塊號(hào)SectionTwoID的值各自加I,此時(shí)保存當(dāng)前二級(jí)塊號(hào)SectionTwoID及二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息SectionInfo中,返回繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表StateTable中是否有未檢測狀態(tài)Unchecked的節(jié)點(diǎn),如圖1所示,若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize〉最大塊節(jié)點(diǎn)數(shù)目的一半MaxSectionSize/2,首先使一級(jí)塊號(hào)SectionOneID, 二級(jí)塊號(hào)SectionTwoID的值各自加I,此時(shí)保存當(dāng)前二級(jí)塊號(hào)SectionTwoID及二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息SectionInfo,然后執(zhí)行步驟①,繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表StateTable中是否有未檢測狀態(tài)Unchecked的節(jié)點(diǎn);
      [0076]⑤在節(jié)點(diǎn)關(guān)系表RelationTable中查找與當(dāng)前節(jié)點(diǎn)TempJoint直接相連節(jié)點(diǎn)數(shù)AbutJointNum,執(zhí)行步驟⑥;
      [0077]⑥若直接相連節(jié)點(diǎn)數(shù)AbutJointNum>0,說明存在相連的節(jié)點(diǎn),取出其中一個(gè)鄰接節(jié)點(diǎn)AbutJoint并查看其狀態(tài),若為未檢測狀態(tài)Unchecked,說明此節(jié)點(diǎn)尚未探測,執(zhí)行步驟⑦;若為已檢測狀態(tài)Checked,說明此節(jié)點(diǎn)已經(jīng)被探測過,執(zhí)行步驟⑧,若直接相連節(jié)點(diǎn)數(shù)AbutJointNum=O,說明當(dāng)前節(jié)點(diǎn)TempJoint的相連節(jié)點(diǎn)已經(jīng)處理完成或者不存在相連節(jié)點(diǎn),設(shè)置當(dāng)前節(jié)點(diǎn)TempJoint的狀態(tài)為已檢測狀態(tài)Checked,當(dāng)前節(jié)點(diǎn)TempJoint的一級(jí)塊號(hào)和二級(jí)塊號(hào)分別為當(dāng)前一級(jí)塊號(hào)SectionOneID和二級(jí)塊號(hào)SectionTwoID的值,執(zhí)行步驟②;
      [0078]⑦比較二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize與最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize的大小:
      [0079]A.若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize〈最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize,說明當(dāng)前的二級(jí)塊沒有達(dá)到個(gè)數(shù)限制,使直接相連節(jié)點(diǎn)數(shù)AbutJointNum-1,并將當(dāng)前節(jié)點(diǎn)加入隊(duì)列中,執(zhí)行步驟⑥;
      [0080]B.若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize〉最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize,說明當(dāng)前二級(jí)塊已經(jīng)飽和,不能再加入新的節(jié)點(diǎn)元素,執(zhí)行步驟⑧。
      [0081]⑧判斷鄰接節(jié)點(diǎn)AbutJoint的二級(jí)塊號(hào)是否與當(dāng)前二級(jí)塊號(hào)SectionTwoID的值一致;
      [0082]A.若不一致,存儲(chǔ)鄰接節(jié)點(diǎn)AbutJoint的二級(jí)塊號(hào)SectionTwoID到數(shù)據(jù)結(jié)構(gòu)鄰接塊信息AbutSection中,并存儲(chǔ)邊界信息存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)塊邊界關(guān)系BoundaryRelation中,合并當(dāng)前節(jié)點(diǎn)當(dāng)前節(jié)點(diǎn)TempJoint與鄰接節(jié)點(diǎn)AbutJoint的一級(jí)塊號(hào)SectionOneID,使直接相連節(jié)點(diǎn)數(shù)AbutJointNum-1,執(zhí)行步驟⑥;
      [0083]B.若一致,使二級(jí)塊號(hào)SectionTwoID+1,直接相連節(jié)點(diǎn)數(shù)AbutJointNum-l,執(zhí)行
      步驟⑥;
      [0084](3)拓?fù)鋲K信息的更新與維護(hù);在動(dòng)態(tài)網(wǎng)絡(luò)中,節(jié)點(diǎn)是允許發(fā)生改變的,因此在編輯網(wǎng)絡(luò)的時(shí)候要保證相應(yīng)的拓?fù)鋲K信息的同步更新,如圖3所示,其中修改操作,相當(dāng)于先執(zhí)行刪除,然后再執(zhí)行添加;具體步驟如下:
      [0085]①讀取數(shù)據(jù)庫中一級(jí)分塊和二級(jí)分塊的最大值,分別賦值給變量最大一級(jí)塊號(hào)MaxSectionOnelD、最大二級(jí)塊號(hào) MaxSectionTwoID,執(zhí)行步驟②;
      [0086]②若執(zhí)行“添加”操作,則執(zhí)行步驟③;若執(zhí)行“刪除”操作,則執(zhí)行步驟⑧;若執(zhí)行“修改”操作,則先執(zhí)行⑧再執(zhí)行步驟③。
      [0087]③添加一個(gè)新節(jié)點(diǎn)NewJoint,從網(wǎng)絡(luò)中查找與其直接相連節(jié)點(diǎn)數(shù)AbutJointNum并獲取數(shù)據(jù)庫中相連節(jié)點(diǎn)的拓?fù)鋲K信息,執(zhí)行步驟④;
      [0088]④判斷直接相連節(jié)點(diǎn)數(shù)AbutJointNum的值,若直接相連節(jié)點(diǎn)數(shù)AbutJointNum=I,說明在原有的拓?fù)渚W(wǎng)絡(luò)中與新加的節(jié)點(diǎn)直接相連的節(jié)點(diǎn)只有一個(gè),執(zhí)行步驟⑤,若直接相連節(jié)點(diǎn)數(shù)AbutJointNum=O,說明新節(jié)點(diǎn)NewJoint為孤立節(jié)點(diǎn),使最大一級(jí)塊號(hào)MaxSectionOnelD、最大二級(jí)塊號(hào)MaxSectionTwoID的值各自加I并分別賦值給新節(jié)點(diǎn)NewJoint的一二級(jí)塊號(hào),然后保存相關(guān)信息,退出,若鄰接塊信息AbutSectionNum>l,說明相連節(jié)點(diǎn)數(shù)目有多個(gè),執(zhí)行步驟⑥;
      [0089]⑤設(shè)置新節(jié)點(diǎn)NewJoint的一級(jí)塊號(hào)為鄰接節(jié)點(diǎn)AbutJoint的一級(jí)塊號(hào)SectionOneID,讀取鄰接節(jié)點(diǎn)AbutJoint的二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize ;若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize>l.5X最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize,說明相連節(jié)點(diǎn)所在的二級(jí)塊不能再添加新的節(jié)點(diǎn),此時(shí)要重新創(chuàng)建一個(gè)新的二級(jí)塊,使最大二級(jí)塊號(hào)MaxSectionTwoID的值加I并設(shè)置其為新二級(jí)塊的塊號(hào);若二級(jí)塊節(jié)點(diǎn)數(shù)目SectionTwoSize<l.5X最大塊節(jié)點(diǎn)數(shù)目MaxSectionSize,說明相連節(jié)點(diǎn)所在的二級(jí)塊還可以接受新的節(jié)點(diǎn),設(shè)置新節(jié)點(diǎn)NewJoint的二級(jí)塊ID為鄰接節(jié)點(diǎn)AbutJoint的二級(jí)塊ID,最后保存到數(shù)據(jù)庫中,退出;
      [0090]⑥首先,判斷與新節(jié)點(diǎn)NewJoint相連的每個(gè)節(jié)點(diǎn)所在的一級(jí)塊是否相同,若不相同,則合并一級(jí)塊并統(tǒng)一一級(jí)塊號(hào)為之前最大的一級(jí)塊的塊號(hào),然后進(jìn)一步判斷是否需要合并二級(jí)分塊,若需要?jiǎng)t直接合并,若不需要?jiǎng)t存儲(chǔ)兩個(gè)二級(jí)塊之間的邊界信息到塊邊界關(guān)系BoundaryRelation,并將相關(guān)信息保存到數(shù)據(jù)庫中,退出,若相同,則直接執(zhí)行步驟⑦。
      [0091]⑦判斷與新節(jié)點(diǎn)NewJoint相連的每個(gè)節(jié)點(diǎn)所在的二級(jí)塊是否相同,若不相同,則獲取所有相鄰節(jié)點(diǎn)的二級(jí)塊中最小塊的二級(jí)塊號(hào)SectionTwoID,并將其設(shè)為新節(jié)點(diǎn)NewJoint的二級(jí)塊號(hào),同時(shí),增加若干條由于新節(jié)點(diǎn)NewJoint導(dǎo)致的塊與塊之間的邊界信息,最后保存到數(shù)據(jù)庫中,退出,若相同,則執(zhí)行步驟④;
      [0092]⑧刪除一個(gè)舊節(jié)點(diǎn)OldJoint,首先,讀取舊節(jié)點(diǎn)OldJoint的拓?fù)湫畔?刪除舊節(jié)點(diǎn)OldJoint到其他相鄰節(jié)點(diǎn)的單向關(guān)系信息,然后,查看與舊節(jié)點(diǎn)OldJoint直接相連的所有節(jié)點(diǎn)鄰接節(jié)點(diǎn)AbutJoint的直接相連節(jié)點(diǎn)數(shù)AbutJointNum,并從數(shù)據(jù)庫中讀取每個(gè)相連節(jié)點(diǎn)的拓?fù)湫畔?,若直接相連節(jié)點(diǎn)數(shù)AbutJointNum=O,則直接退出;若直接相連節(jié)點(diǎn)數(shù)AbutJointNum=I,則更新相鄰節(jié)點(diǎn)到OldJoint的單向關(guān)聯(lián)關(guān)系,然后退出,若直接相連節(jié)點(diǎn)數(shù)AbutJointNum>l,執(zhí)行步驟⑨;
      [0093]⑨判斷舊節(jié)點(diǎn)OldJoint與所有直接相連的鄰接節(jié)點(diǎn)AbutJoint是否處在相同二級(jí)塊內(nèi),若是,由于刪除掉節(jié)點(diǎn)可能導(dǎo)致原來的二級(jí)塊不再是一個(gè)連通的整體,所以需要加載此二級(jí)塊的數(shù)據(jù)進(jìn)行重新進(jìn)行探測,重新探測二級(jí)塊,若原來的塊仍然是一個(gè)連通的整體,則直接退出,若原來的塊不再是一個(gè)連通的整體,則需要進(jìn)一步探測所在的一級(jí)塊是否是一個(gè)連通的整體,執(zhí)行步驟⑩,若不是,則刪除掉用舊節(jié)點(diǎn)OldJoint來標(biāo)識(shí)的二級(jí)塊邊界信息,執(zhí)行步驟⑩;
      [0094]⑩加載當(dāng)前一級(jí)塊數(shù)據(jù),并重新探測當(dāng)前一級(jí)塊是否仍然是一個(gè)連通的整體,若是,則直接退出,若不是,則需要對(duì)當(dāng)前一級(jí)塊單獨(dú)執(zhí)行分塊操作來重新劃分塊;
      [0095](4)基于兩級(jí)分塊的拓?fù)浞治?;兩?jí)分塊使得拓?fù)浞治鲎兊酶臃奖愫涂旖?,在一定程度上,不僅節(jié)省了內(nèi)存而且提高了分析效率,具體步驟為:
      [0096]①確定分析類型,若基于單節(jié)點(diǎn)分析,則執(zhí)行步驟②;若基于多節(jié)點(diǎn)分析,則執(zhí)行步驟③;
      [0097]②輸入待分析節(jié)點(diǎn)單節(jié)點(diǎn)SingleJoint的信息,查詢數(shù)據(jù)庫讀取單節(jié)點(diǎn)SingleJoint的一級(jí)塊號(hào)SectionOneID和二級(jí)塊號(hào)SectionTwoID,然后根據(jù)需求加載整個(gè)一級(jí)塊或者二級(jí)塊的數(shù)據(jù)進(jìn)行分析;
      [0098]③輸入多個(gè)節(jié)點(diǎn)的信息,分別獲取它們的一級(jí)塊號(hào)SectionOneID和二級(jí)塊號(hào)SectionTwoID,首先,判斷一級(jí)塊號(hào)SecionOneID是否相同,若不相同,貝U節(jié)點(diǎn)之間肯定不存在拓?fù)潢P(guān)系,若相同,則繼續(xù)判斷一級(jí)塊號(hào)SectionTwoID是否相同,若相同,則加載二級(jí)塊號(hào)SectionTwoID的塊數(shù)據(jù)進(jìn)行分析或者根據(jù)不同的需求直接加載一級(jí)塊的數(shù)據(jù)進(jìn)行分析,若不相同,則需要分別加載每個(gè)節(jié)點(diǎn)所在的二級(jí)塊數(shù)據(jù),以及當(dāng)前一級(jí)塊內(nèi)的所有二級(jí)塊之間的邊界信息進(jìn)行拓?fù)浞治龌蛘吒鶕?jù)不同的需求直接加載一級(jí)塊的數(shù)據(jù)進(jìn)行分析。
      [0099]實(shí)例
      [0100]為了清晰描述本發(fā)明的內(nèi)容,選取一個(gè)簡單的拓?fù)渚W(wǎng)絡(luò)來詳細(xì)說明執(zhí)行步驟,如圖5所示,網(wǎng)絡(luò)中總共有16個(gè)節(jié)點(diǎn),
      [0101](I)生成拓?fù)鋽?shù)據(jù);
      [0102]①獲取網(wǎng)絡(luò)中節(jié)點(diǎn)之間的雙向關(guān)聯(lián)關(guān)系,假設(shè)從Jl開始遍歷,依次獲取每個(gè)節(jié)點(diǎn)之間的雙向關(guān)聯(lián)關(guān)系,存儲(chǔ)到節(jié)點(diǎn)關(guān)系表RelationTable中,如表1,同時(shí)為每一個(gè)節(jié)點(diǎn)創(chuàng)建狀態(tài)信息存儲(chǔ)到節(jié)點(diǎn)狀態(tài)表StateTable ;
      [0103]表1從網(wǎng)絡(luò)中獲取的節(jié)點(diǎn)關(guān)系表RelationTable表
      [0104]
      【權(quán)利要求】
      1.一種拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,其特征在于:包括步驟如下: (1)生成拓?fù)鋽?shù)據(jù):遍歷圖形中的網(wǎng)絡(luò)節(jié)點(diǎn),獲取節(jié)點(diǎn)之間的關(guān)聯(lián)信息; (2)執(zhí)行分塊操作:分塊操作共分為一級(jí)分塊和二級(jí)分塊,一級(jí)分塊是根據(jù)節(jié)點(diǎn)之間的連通性來劃分,二級(jí)分塊是根據(jù)設(shè)定的最大節(jié)點(diǎn)數(shù)來劃分; (3)拓?fù)鋲K信息的更新與維護(hù):在動(dòng)態(tài)網(wǎng)絡(luò)中,節(jié)點(diǎn)是允許發(fā)生改變的,因此在編輯網(wǎng)絡(luò)時(shí)要保證相應(yīng)拓?fù)鋲K信息的同步更新; (4)基于兩級(jí)分塊的拓?fù)浞治觥?br> 2.根據(jù)權(quán)利要求1所述的拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,其特征在于:所述步驟(1)生成拓?fù)鋽?shù)據(jù)的具體步驟如下: ①遍歷整個(gè)網(wǎng)絡(luò),獲取節(jié)點(diǎn)之間的雙向關(guān)聯(lián)關(guān)系; ②將節(jié)點(diǎn)之間的所有關(guān)系存儲(chǔ)到內(nèi)存數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)關(guān)系表中,另外,為每一個(gè)節(jié)點(diǎn)創(chuàng)建狀態(tài)標(biāo)識(shí)信息并存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)狀態(tài)表中,并設(shè)定初始值為:未檢測狀態(tài); ③創(chuàng)建執(zhí)行分塊操作所需要的變量: 一級(jí)塊號(hào),初始值為1, 二級(jí)塊號(hào),初始值為1, 二級(jí)塊節(jié)點(diǎn)數(shù)目, 執(zhí)行分塊操作所需要的變量:` 二級(jí)塊信息存儲(chǔ)二級(jí)塊號(hào)與二級(jí)塊所包含的節(jié)點(diǎn)數(shù)目的對(duì)應(yīng)關(guān)系信息;塊邊界關(guān)系存放二級(jí)塊與塊之間的邊界信息;鄰接塊信息存放與當(dāng)前二級(jí)塊相連的其他二級(jí)塊的塊號(hào)及節(jié)點(diǎn)數(shù)目的對(duì)應(yīng)關(guān)系; ④設(shè)置每個(gè)二級(jí)塊最多包含節(jié)點(diǎn)的數(shù)目為最大塊節(jié)點(diǎn)數(shù)目; ⑤判斷節(jié)點(diǎn)狀態(tài)表中是否存在狀態(tài)為未檢測狀態(tài)的節(jié)點(diǎn),若存在則以此節(jié)點(diǎn)為起點(diǎn)開始探測并對(duì)探測到的節(jié)點(diǎn)執(zhí)行分塊操作,,若不存在則表示所有的節(jié)點(diǎn)已經(jīng)探測完成,此時(shí)將每個(gè)節(jié)點(diǎn)的塊信息以及塊與塊之間的邊界信息存儲(chǔ)到數(shù)據(jù)庫中。
      3.根據(jù)權(quán)利要求1所述的拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,其特征在于:所述步驟(2)執(zhí)行分塊操作的具體步驟是: ①從節(jié)點(diǎn)狀態(tài)表中獲取到狀態(tài)為未檢測狀態(tài)節(jié)點(diǎn),然后將其加入到檢測隊(duì)列中,執(zhí)行步驟②; ②判斷檢測隊(duì)列是否為空,若不為空,執(zhí)行步驟③,若為空,執(zhí)行步驟④; ③取檢測隊(duì)列第一個(gè)元素,定為當(dāng)前節(jié)點(diǎn),并將其從隊(duì)列中刪除,執(zhí)行步驟⑤; ④隊(duì)列為空說明當(dāng)前塊劃分完畢,比較二級(jí)塊節(jié)點(diǎn)數(shù)目與最大塊節(jié)點(diǎn)數(shù)目的一半的大小,若二級(jí)塊節(jié)點(diǎn)數(shù)目小于最大塊節(jié)點(diǎn)數(shù)目的一半,說明當(dāng)前的二級(jí)塊包含的節(jié)點(diǎn)的數(shù)目還不足設(shè)定的最大數(shù)量值的一半,為了防止產(chǎn)生零碎的小塊,需要將當(dāng)前的二級(jí)塊與相鄰的最小的二級(jí)塊進(jìn)行合并,然后使一、二級(jí)塊號(hào)的值各自加1,此時(shí)保存當(dāng)前二級(jí)塊號(hào)及二級(jí)塊節(jié)點(diǎn)數(shù)目到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息中,返回繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表中是否有未檢測狀態(tài)的節(jié)點(diǎn),若二級(jí)塊節(jié)點(diǎn)數(shù)目大于最大塊節(jié)點(diǎn)數(shù)目的一半,首先使一級(jí)塊號(hào),二級(jí)塊號(hào)的值各自加1,此時(shí)保存當(dāng)前二級(jí)塊號(hào)及二級(jí)塊節(jié)點(diǎn)數(shù)目到數(shù)據(jù)結(jié)構(gòu)二級(jí)塊信息,然后執(zhí)行步驟①,繼續(xù)判斷節(jié)點(diǎn)狀態(tài)表中是否有未檢測狀態(tài)的節(jié)點(diǎn); ⑤在節(jié)點(diǎn)關(guān)系表中查找與當(dāng)前節(jié)點(diǎn)直接相連節(jié)點(diǎn)數(shù),執(zhí)行步驟⑥;⑥若直接相連節(jié)點(diǎn)數(shù)大于O,說明存在相連的節(jié)點(diǎn),取出其中一個(gè)鄰接節(jié)點(diǎn)并查看其狀態(tài),若為未檢測狀態(tài),說明此節(jié)點(diǎn)尚未探測,執(zhí)行步驟⑦?’若為已檢測狀態(tài),說明此節(jié)點(diǎn)已經(jīng)被探測過,執(zhí)行步驟⑧,若直接相連節(jié)點(diǎn)數(shù)等于O,說明當(dāng)前節(jié)點(diǎn)的相連節(jié)點(diǎn)已經(jīng)處理完成或者不存在相連節(jié)點(diǎn),設(shè)置當(dāng)前節(jié)點(diǎn)的狀態(tài)為已檢測狀態(tài),設(shè)置當(dāng)前節(jié)點(diǎn)的一級(jí)塊號(hào)和二級(jí)塊號(hào)分別為當(dāng)前一級(jí)塊號(hào)和二級(jí)塊號(hào)的值,執(zhí)行步驟②; ⑦比較二級(jí)塊節(jié)點(diǎn)數(shù)目與最大塊節(jié)點(diǎn)數(shù)目的大??; A.若二級(jí)塊節(jié)點(diǎn)數(shù)目小于最大塊節(jié)點(diǎn)數(shù)目,說明當(dāng)前的二級(jí)塊沒有達(dá)到個(gè)數(shù)限制,使直接相連節(jié)點(diǎn)數(shù)減1,并將當(dāng)前節(jié)點(diǎn)加入隊(duì)列中,執(zhí)行步驟⑥; B.若二級(jí)塊節(jié)點(diǎn)數(shù)目大于最大塊節(jié)點(diǎn)數(shù)目,說明當(dāng)前二級(jí)塊已經(jīng)飽和,不能再加入新的節(jié)點(diǎn)元素,執(zhí)行步驟⑧; ⑧判斷鄰接節(jié)點(diǎn)的二級(jí)塊號(hào)是否與當(dāng)前二級(jí)塊號(hào)的值一致; A.若不一致,存儲(chǔ)鄰接節(jié)點(diǎn)的二級(jí)塊號(hào)到數(shù)據(jù)結(jié)構(gòu)鄰接塊信息中,并存儲(chǔ)邊界信息存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)塊邊界關(guān)系中,合并當(dāng)前節(jié)點(diǎn)當(dāng)前節(jié)點(diǎn)與鄰接節(jié)點(diǎn)的一級(jí)塊號(hào),使直接相連節(jié)點(diǎn)數(shù)減I,執(zhí)行步驟⑥; B.若一致,使二級(jí)塊號(hào)加1,直接相連節(jié)點(diǎn)數(shù)減1,執(zhí)行步驟⑥。
      4.根據(jù)權(quán)利要求1所述的拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,其特征在于:所述步驟(3)拓?fù)鋲K信息的更新與維護(hù)的具體步驟是: ①讀取數(shù)據(jù)庫中一級(jí)分塊和二級(jí)分塊的最大值,分別賦值給變量最大一級(jí)塊號(hào)、最大二級(jí)塊號(hào),執(zhí)行步 驟②; ②若執(zhí)行添加操作,則執(zhí)行步驟③;若執(zhí)行刪除操作,則執(zhí)行步驟⑧;若執(zhí)行修改操作,則先執(zhí)行步驟⑧再執(zhí)行步驟③; ③添加一個(gè)新節(jié)點(diǎn),從網(wǎng)絡(luò)中查找與其直接相連節(jié)點(diǎn)數(shù)并獲取數(shù)據(jù)庫中相連節(jié)點(diǎn)的拓?fù)鋲K信息,執(zhí)行步驟④; ④判斷直接相連節(jié)點(diǎn)數(shù)的值,若直接相連節(jié)點(diǎn)數(shù)為1,說明在原有的拓?fù)渚W(wǎng)絡(luò)中與新加的節(jié)點(diǎn)直接相連的節(jié)點(diǎn)只有一個(gè),執(zhí)行步驟⑤,若直接相連節(jié)點(diǎn)數(shù)為O,說明新節(jié)點(diǎn)為孤立節(jié)點(diǎn),使最大一級(jí)塊號(hào)、最大二級(jí)塊號(hào)的值各自加I并分別賦值給新節(jié)點(diǎn)的一、二級(jí)塊號(hào),然后保存相關(guān)信息,退出;若鄰接塊信息大于1,說明相連節(jié)點(diǎn)數(shù)目有多個(gè),執(zhí)行步驟⑥; ⑤設(shè)置新節(jié)點(diǎn)的一級(jí)塊號(hào)為鄰接節(jié)點(diǎn)的一級(jí)塊號(hào),讀取鄰接節(jié)點(diǎn)的二級(jí)塊節(jié)點(diǎn)數(shù)目;若二級(jí)塊節(jié)點(diǎn)數(shù)目大于1.5X最大塊節(jié)點(diǎn)數(shù)目,說明相連節(jié)點(diǎn)所在的二級(jí)塊不能再添加新的節(jié)點(diǎn),此時(shí)要重新創(chuàng)建一個(gè)新的二級(jí)塊,使最大二級(jí)塊號(hào)的值加I并設(shè)置其為新二級(jí)塊的塊號(hào);若二級(jí)塊節(jié)點(diǎn)數(shù)目小于1.5 X最大塊節(jié)點(diǎn)數(shù)目,說明相連節(jié)點(diǎn)所在的二級(jí)塊還可以接受新的節(jié)點(diǎn),設(shè)置新節(jié)點(diǎn)的二級(jí)塊為鄰接節(jié)點(diǎn)的二級(jí)塊號(hào),最后保存到數(shù)據(jù)庫中,退出; ⑥首先,判斷與新節(jié)點(diǎn)相連的每個(gè)節(jié)點(diǎn)所在的一級(jí)塊是否相同,若不相同,則合并一級(jí)塊并統(tǒng)一一級(jí)塊號(hào)為之前最大的一級(jí)塊的塊號(hào),然后進(jìn)一步判斷是否需要合并二級(jí)分塊,若需要?jiǎng)t直接合并,若不需要?jiǎng)t存儲(chǔ)兩個(gè)二級(jí)塊之間的邊界信息到塊邊界關(guān)系,并將相關(guān)信息保存到數(shù)據(jù)庫中;退出,若相同,則直接執(zhí)行步驟⑦; ⑦判斷與新節(jié)點(diǎn)相連的每個(gè)節(jié)點(diǎn)所在的二級(jí)塊是否相同,若不相同,則獲取所有相鄰節(jié)點(diǎn)的二級(jí)塊中最小塊的二級(jí)塊號(hào),并將其設(shè)為新節(jié)點(diǎn)的二級(jí)塊號(hào),同時(shí),增加若干條由于新節(jié)點(diǎn)導(dǎo)致的塊與塊之間的邊界信息,最后保存到數(shù)據(jù)庫中,退出;若相同,則執(zhí)行步驟④; ⑧刪除一個(gè)舊節(jié)點(diǎn),首先,讀取舊節(jié)點(diǎn)的拓?fù)湫畔?,刪除舊節(jié)點(diǎn)到其他相鄰節(jié)點(diǎn)的單向關(guān)系信息,然后,查看與舊節(jié)點(diǎn)直接相連的所有節(jié)點(diǎn)鄰接節(jié)點(diǎn)的直接相連節(jié)點(diǎn)數(shù),并從數(shù)據(jù)庫中讀取每個(gè)相連節(jié)點(diǎn)的拓?fù)湫畔?,若直接相連節(jié)點(diǎn)數(shù)為O,則直接退出;若直接相連節(jié)點(diǎn)數(shù)為1,則更新相鄰節(jié)點(diǎn)到的單向關(guān)聯(lián)關(guān)系,然后退出,若直接相連節(jié)點(diǎn)數(shù)大于1,執(zhí)行步驟⑨; ⑨判斷舊節(jié)點(diǎn)與所有直接相連的鄰接節(jié)點(diǎn)是否處在相同二級(jí)塊內(nèi),若是,由于刪除掉節(jié)點(diǎn)可能導(dǎo)致原來的二級(jí)塊不再是一個(gè)連通的整體,所以需要加載此二級(jí)塊的數(shù)據(jù)進(jìn)行重新進(jìn)行探測,重新探測二級(jí)塊,若原來的塊仍然是一個(gè)連通的整體,則直接退出,若原來的塊不再是一個(gè)連通的整體,則需要進(jìn)一步探測所在的一級(jí)塊是否是一個(gè)連通的整體,執(zhí)行步驟⑩,若不是,則刪除掉用舊節(jié)點(diǎn)來標(biāo)識(shí)的二級(jí)塊邊界信息,執(zhí)行步驟⑩; ⑩加載當(dāng)前一級(jí)塊數(shù)據(jù),并重新探測當(dāng)前一級(jí)塊是否仍然是一個(gè)連通的整體,若是,則直接退出,若不是,則需要對(duì)當(dāng)前一級(jí)塊單獨(dú)執(zhí)行分塊操作來重新劃分塊。
      5.根據(jù)權(quán)利要求1所述的拓?fù)渚W(wǎng)絡(luò)的兩級(jí)分塊方法,其特征在于:所述步驟(4)基于兩級(jí)分塊的拓?fù)浞治龅木唧w步驟是: ①確定分析類型,若基于單節(jié)點(diǎn)分析,則執(zhí)行步驟②;若基于多節(jié)點(diǎn)分析,則執(zhí)行步驟③; ②輸入待分析節(jié)點(diǎn)單節(jié)點(diǎn)的信息,查詢數(shù)據(jù)庫讀取單節(jié)點(diǎn)的一級(jí)塊號(hào)和二級(jí)塊號(hào),然后加載整個(gè)一級(jí)塊或者二級(jí)塊的數(shù)據(jù)進(jìn)行分析; ③輸入多個(gè)節(jié)點(diǎn)的信息,分別獲取它們的一級(jí)塊號(hào)和二級(jí)塊號(hào),首先,判斷一級(jí)塊號(hào)是否相同,若不相同,則節(jié)點(diǎn)之間肯定不存在拓?fù)潢P(guān)系,若相同,則繼續(xù)判斷一級(jí)塊號(hào)是否相同,若相同,則加載二級(jí)塊號(hào)的塊數(shù)據(jù)進(jìn)行分析或者直接加載一級(jí)塊的數(shù)據(jù)進(jìn)行分析,若不相同,則需要分別加載每個(gè)節(jié)點(diǎn)所在的二級(jí)塊數(shù)據(jù),以及當(dāng)前一級(jí)塊內(nèi)的所有二級(jí)塊之間的邊界信息進(jìn)行拓?fù)浞治龌蛘咧苯蛹虞d一級(jí)塊的數(shù)據(jù)進(jìn)行分析。
      【文檔編號(hào)】H04L12/28GK103684942SQ201310648160
      【公開日】2014年3月26日 申請(qǐng)日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
      【發(fā)明者】李寬榮, 韓雙立, 高勇, 趙光俊, 劉哲甫, 陸通 申請(qǐng)人:天津市普迅電力信息技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1