專利名稱:通信網(wǎng)絡(luò)和在該網(wǎng)絡(luò)內(nèi)路由消息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)間發(fā)送消息的通信網(wǎng)絡(luò),所述網(wǎng)絡(luò)包括一個(gè)服務(wù)器單元。本發(fā)明還涉及在通信網(wǎng)絡(luò)內(nèi)路由消息的方法。
先有技術(shù)例如在分組交換網(wǎng)領(lǐng)域中,信息分組從發(fā)送節(jié)點(diǎn)經(jīng)數(shù)個(gè)中間節(jié)點(diǎn)路由到接收節(jié)點(diǎn)。這種操作的基本問(wèn)題是使發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)之間的路徑長(zhǎng)度最小化即最短路徑問(wèn)題。該問(wèn)題的理論最佳解決方案被稱為Djikstra算法。但是這個(gè)理想的數(shù)學(xué)解決方案不能按其理論形式來(lái)實(shí)現(xiàn)。
先有技術(shù)解決方案可能涉及使用分布式路由樹信息,其中每個(gè)節(jié)點(diǎn)都具有一個(gè)表示到所有相連節(jié)點(diǎn)的最短路徑的路由樹,見US4.987.536。其他解決方案可能包括一個(gè)中央路由-確定節(jié)點(diǎn),見US5.608.721。先有技術(shù)的解決方案的成本效率不太高。
發(fā)明概要本發(fā)明的一個(gè)目的是在單向或雙向網(wǎng)絡(luò)中尋找從一個(gè)任意節(jié)點(diǎn)到另一個(gè)任意節(jié)點(diǎn)的最短路徑,而每個(gè)節(jié)點(diǎn)的存儲(chǔ)信息是最小的。
解決方案為實(shí)現(xiàn)該目的,根據(jù)本發(fā)明的通信網(wǎng)絡(luò)的特征在于每個(gè)節(jié)點(diǎn)具有存儲(chǔ)所述節(jié)點(diǎn)的所有相鄰(即可直達(dá))節(jié)點(diǎn)的第一存儲(chǔ)設(shè)備,包含登記一個(gè)節(jié)點(diǎn)標(biāo)識(shí)的數(shù)據(jù)域的第二存儲(chǔ)設(shè)備,和在中央單元提供的、構(gòu)成臨時(shí)隊(duì)列的第三存儲(chǔ)設(shè)備。
在通信網(wǎng)絡(luò)的具體實(shí)施方案中,第二存儲(chǔ)設(shè)備的數(shù)據(jù)域構(gòu)成一個(gè)索引網(wǎng)絡(luò)中的所有節(jié)點(diǎn)的單元數(shù)組,所述數(shù)組大小正比于網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù),且其中每個(gè)單元被安排成包含一個(gè)節(jié)點(diǎn)的標(biāo)識(shí)。
本發(fā)明的一種有利的實(shí)施方案中,每個(gè)節(jié)點(diǎn)對(duì)之間的距離由多個(gè)假設(shè)的虛節(jié)點(diǎn)表示,其中所述虛節(jié)點(diǎn)的數(shù)目正比于所述距離。
另外,兩個(gè)節(jié)點(diǎn)之間的業(yè)務(wù)量負(fù)荷由多個(gè)假設(shè)的虛節(jié)點(diǎn)表示,其中所述虛節(jié)點(diǎn)的數(shù)目正比于所述業(yè)務(wù)量負(fù)荷。
一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)之間發(fā)送消息的通信網(wǎng)絡(luò)內(nèi)路由消息的方法,用于計(jì)算第一和第二節(jié)點(diǎn)之間的最短路徑,其特征在于步驟構(gòu)成一個(gè)所述第一節(jié)點(diǎn)的相鄰且可直達(dá)的所有節(jié)點(diǎn)的標(biāo)識(shí)列表,將第二節(jié)點(diǎn)的標(biāo)識(shí)放入一個(gè)隊(duì)列,在登記第二個(gè)節(jié)點(diǎn)標(biāo)識(shí)的數(shù)據(jù)域中寫一條停止命令,取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域,除非在這個(gè)數(shù)據(jù)域中已經(jīng)有一項(xiàng),每次將一項(xiàng)寫入一個(gè)節(jié)點(diǎn)的數(shù)據(jù)域中時(shí),將此節(jié)點(diǎn)標(biāo)識(shí)放入隊(duì)列,在訪問(wèn)完所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí),并重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域中的步驟,直到被訪問(wèn)節(jié)點(diǎn)是第一節(jié)點(diǎn)。
檢查網(wǎng)絡(luò)查看已從某節(jié)點(diǎn)斷開的節(jié)點(diǎn)是有利的。
最好是所述檢查包括步驟將所述節(jié)點(diǎn)(n)的標(biāo)識(shí)放入隊(duì)列并標(biāo)記所述節(jié)點(diǎn),取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居,每次標(biāo)記一個(gè)新節(jié)點(diǎn)的標(biāo)識(shí)時(shí),將其放入隊(duì)列,在訪問(wèn)完隊(duì)列前面所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)標(biāo)識(shí)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除所述節(jié)點(diǎn)將其并放入一個(gè)集合,重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其所有未標(biāo)記的鄰居的步驟,直到隊(duì)列為空,且從所述節(jié)點(diǎn)知道的所有節(jié)點(diǎn)集合中減去得到的集合,其中得到的結(jié)果是從前面提到的節(jié)點(diǎn)斷開的節(jié)點(diǎn)集合。
一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)之間發(fā)送消息的通信網(wǎng)絡(luò)內(nèi)路由消息的方法,用于計(jì)算網(wǎng)絡(luò)中所有節(jié)點(diǎn)對(duì)之間的最短路徑,其特征在于步驟構(gòu)成一個(gè)節(jié)點(diǎn)的相鄰且可直達(dá)的所有節(jié)點(diǎn)的標(biāo)識(shí)列表,將該節(jié)點(diǎn)的標(biāo)識(shí)放入一個(gè)隊(duì)列,在索引網(wǎng)絡(luò)中所有節(jié)點(diǎn)標(biāo)識(shí)的登記的數(shù)組數(shù)據(jù)域中為此節(jié)點(diǎn)寫一條停止命令,取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域中,除非在這個(gè)數(shù)據(jù)域中已經(jīng)有一項(xiàng),每次將一項(xiàng)寫入一個(gè)節(jié)點(diǎn)的數(shù)據(jù)域中時(shí),將被訪問(wèn)節(jié)點(diǎn)標(biāo)識(shí)放入隊(duì)列,在訪問(wèn)完所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí),重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域中的步驟,直到隊(duì)列為空,并對(duì)網(wǎng)絡(luò)中的所有節(jié)點(diǎn)重復(fù)上述步驟。
檢查網(wǎng)絡(luò)是否一個(gè)節(jié)點(diǎn)與所有其他節(jié)點(diǎn)有連接是有利的。
最好是,所述檢查包括步驟將所述節(jié)點(diǎn)的標(biāo)識(shí)放入隊(duì)列并標(biāo)記所述節(jié)點(diǎn),取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居,每次標(biāo)記一個(gè)新節(jié)點(diǎn)的標(biāo)識(shí)時(shí),將其放入隊(duì)列,在訪問(wèn)完隊(duì)列前面所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)標(biāo)識(shí)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除所述節(jié)點(diǎn)并將其放入一個(gè)集合,重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其所有未標(biāo)記的鄰居的步驟,直到隊(duì)列為空,且從所述節(jié)點(diǎn)知道的所有節(jié)點(diǎn)集合中減去得到的集合,其中得到的結(jié)果是斷開節(jié)點(diǎn)的節(jié)點(diǎn)集合。
附圖簡(jiǎn)述下面參考以下附圖以非限制的方式更詳細(xì)地描述本發(fā)明。
圖1示意性地說(shuō)明根據(jù)本發(fā)明計(jì)算得到的一個(gè)節(jié)點(diǎn)與另一個(gè)節(jié)點(diǎn)之間的最短路徑,圖2表示根據(jù)圖1計(jì)算路徑期間所使用的一個(gè)隊(duì)列,圖3示意性說(shuō)明在所有節(jié)點(diǎn)對(duì)之間計(jì)算得到的最短路徑,以及圖4為說(shuō)明計(jì)算從網(wǎng)絡(luò)中的所有節(jié)點(diǎn)到某一節(jié)點(diǎn)n的最短路徑的算法的流程圖。
發(fā)明詳述本發(fā)明的目的是在雙向網(wǎng)絡(luò)中找到從一個(gè)任意節(jié)點(diǎn)n1到另一個(gè)任意節(jié)點(diǎn)n2的最短路徑。
每個(gè)節(jié)點(diǎn)應(yīng)該保留以下信息●一個(gè)節(jié)點(diǎn)1的所有鄰居的“鄰居列表”。該列表是算法的輸入。每個(gè)節(jié)點(diǎn)需要一個(gè)實(shí)例。
●登記一個(gè)節(jié)點(diǎn)標(biāo)識(shí)的“至目標(biāo)下一個(gè)”數(shù)據(jù)域2。該域由算法填寫并將包含路由所需的信息。每個(gè)節(jié)點(diǎn)需要這個(gè)域的實(shí)例。
服務(wù)器單元維護(hù)一個(gè)“隊(duì)列”3,這是一個(gè)當(dāng)算法結(jié)束時(shí)要?jiǎng)h除的臨時(shí)隊(duì)列。計(jì)算從節(jié)點(diǎn)n1到節(jié)點(diǎn)n2的最短路徑算法包括以下步驟●步驟1將n2(非n1)放入隊(duì)列3。在節(jié)點(diǎn)n2的“至目標(biāo)下一個(gè)”中寫一條停止命令,即“-”。
●步驟2取出隊(duì)列前面的節(jié)點(diǎn)并且如果其所有鄰居(在它的鄰居列表中的節(jié)點(diǎn))的“至目標(biāo)下一個(gè)”列表還未被寫入,則在該單元中寫入其標(biāo)識(shí)。如果該單元已被寫,則不重寫它。如果被訪問(wèn)節(jié)點(diǎn)是節(jié)點(diǎn)n1,則算法完成。如果隊(duì)列空而節(jié)點(diǎn)n1未被訪問(wèn),則意味著節(jié)點(diǎn)n1沒(méi)有連接到n2。
●步驟3每次在節(jié)點(diǎn)的“至目標(biāo)下一個(gè)”中寫(僅當(dāng)寫)時(shí),將節(jié)點(diǎn)放入隊(duì)列3。
●步驟4在訪問(wèn)完該節(jié)點(diǎn)(在隊(duì)列前面)的“鄰居列表”中的所有節(jié)點(diǎn)后,將其從隊(duì)列中刪除。
●步驟5到步驟2●結(jié)束在算法結(jié)束后,通過(guò)從n1到n2的最短路徑●到節(jié)點(diǎn)n1的“至目標(biāo)下一個(gè)”2所指的節(jié)點(diǎn)1。
●以同樣的方式繼續(xù)直到到達(dá)節(jié)點(diǎn)n2。
上述算法實(shí)際將網(wǎng)絡(luò)的圖形表示轉(zhuǎn)換到以目的節(jié)點(diǎn)為根的樹模型,其中該樹是圖形可以轉(zhuǎn)換成的最淺(短)樹。圖1顯示計(jì)算完從節(jié)點(diǎn)1到節(jié)點(diǎn)8的最短路徑后算法的結(jié)果。圖2表示在獲得所述最短路徑的過(guò)程中使用的隊(duì)列。
可能檢查已經(jīng)從節(jié)點(diǎn)n斷開的節(jié)點(diǎn)。每次從隊(duì)列中從刪除一個(gè)節(jié)點(diǎn)時(shí),應(yīng)該使其進(jìn)入“已訪問(wèn)的節(jié)點(diǎn)”集合●步驟1將n放入隊(duì)列3并標(biāo)記該節(jié)點(diǎn),●步驟2取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記它的未標(biāo)記的鄰居。
●步驟3每次標(biāo)記一個(gè)新節(jié)點(diǎn)時(shí),將其放入隊(duì)列。
●步驟4在訪問(wèn)完該節(jié)點(diǎn)(隊(duì)列前面的)的“鄰居列表”中的所有節(jié)點(diǎn)后,將其從隊(duì)列移到“已訪問(wèn)的節(jié)點(diǎn)”集合。
●步驟5到步驟2直到隊(duì)列3為空。
●結(jié)束當(dāng)算法結(jié)束時(shí),從節(jié)點(diǎn)n知道的所有節(jié)點(diǎn)集合中減去“已訪問(wèn)集合”。結(jié)果就是斷開的節(jié)點(diǎn)集合。
當(dāng)一個(gè)節(jié)點(diǎn)想要向目的節(jié)點(diǎn)(圖1中的節(jié)點(diǎn)8)發(fā)送一條消息時(shí),它只具有到根的一條路徑,且該路徑是最短的。根據(jù)圖1首先節(jié)點(diǎn)n8被放在根(將其放在隊(duì)列的前面),然后節(jié)點(diǎn)n4放在節(jié)點(diǎn)n8下面,作為唯一可能的一個(gè)(將其放在隊(duì)列中節(jié)點(diǎn)n8的后面),然后是節(jié)點(diǎn)n9、n6和n3放在節(jié)點(diǎn)n4下面(將它們緊接著放在隊(duì)列中),最后將節(jié)點(diǎn)n7放在節(jié)點(diǎn)n6下面、節(jié)點(diǎn)n5放在節(jié)點(diǎn)n3下面(將它們放在隊(duì)列中的下一個(gè))。這樣從節(jié)點(diǎn)n1到節(jié)點(diǎn)n8的最短路徑是n1到n5到n3到n4到n8。
本發(fā)明還可能獲得求出在雙向網(wǎng)絡(luò)中從任意節(jié)點(diǎn)n1到另一任意節(jié)點(diǎn)n2的最短路徑所需信息最少的網(wǎng)絡(luò)。
每個(gè)節(jié)點(diǎn)應(yīng)該保留以下信息●一個(gè)節(jié)點(diǎn)的所有鄰居的“鄰居列表”。所有節(jié)點(diǎn)的“鄰居列表”一起描述了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。該列表是算法的輸入。每個(gè)節(jié)點(diǎn)需要一個(gè)實(shí)例。
●索引網(wǎng)絡(luò)中所有節(jié)點(diǎn)的登記的“至目標(biāo)下一個(gè)”數(shù)組數(shù)據(jù)域4。該數(shù)組的大小應(yīng)為N。數(shù)組中的每個(gè)單元5應(yīng)該具有一個(gè)節(jié)點(diǎn)1的標(biāo)識(shí)的空間(如一個(gè)號(hào)碼)。例如整數(shù)數(shù)組[1…N]。該數(shù)據(jù)域由算法填寫并且只包含路由所需的信息。每個(gè)節(jié)點(diǎn)需要該域的一個(gè)實(shí)例。
服務(wù)器單元維護(hù)一個(gè)“隊(duì)列”3,它是當(dāng)算法結(jié)束時(shí)要?jiǎng)h除的臨時(shí)隊(duì)列。
計(jì)算網(wǎng)絡(luò)中所有節(jié)點(diǎn)對(duì)之間最短路徑的算法見圖4并且對(duì)每個(gè)節(jié)點(diǎn)n(n=1…N)包括以下步驟;●步驟1將n放入隊(duì)列。在該節(jié)點(diǎn)的“至目標(biāo)下一個(gè)[n]”中寫一條停止命令即“-”。
●步驟2取出隊(duì)列前面的節(jié)點(diǎn)并且如果其所有鄰居(其鄰居列表中的節(jié)點(diǎn))的“至目標(biāo)下一個(gè)[n]”列表還未被寫入,則在該單元中寫入其標(biāo)識(shí)。如果該單元已經(jīng)寫入,則不再重寫它。
●步驟3每次訪問(wèn)一個(gè)節(jié)點(diǎn)并在該節(jié)點(diǎn)的“至目標(biāo)下一個(gè)[n]”中寫入(僅當(dāng)寫入)時(shí),將被訪問(wèn)節(jié)點(diǎn)的標(biāo)識(shí)放入隊(duì)列。
●步驟4在訪問(wèn)完該節(jié)點(diǎn)的“鄰居列表”中的所有節(jié)點(diǎn)后,將其從隊(duì)列中刪除。
●步驟5如果隊(duì)列為空,節(jié)點(diǎn)n結(jié)束,否則到步驟2。
●結(jié)束*)圖4中,表示“未訪問(wèn)”用于描述其至目標(biāo)下一個(gè)[n]中未被寫入的節(jié)點(diǎn),其中n是第一個(gè)放在隊(duì)列中的節(jié)點(diǎn)。
內(nèi)部循環(huán)的結(jié)果是從所有節(jié)點(diǎn)到節(jié)點(diǎn)n的最短路徑。外部循環(huán)的結(jié)果是從所有節(jié)點(diǎn)到所有其他節(jié)點(diǎn)的最短路徑。當(dāng)算法結(jié)束和網(wǎng)絡(luò)更新時(shí),求從節(jié)點(diǎn)n1到節(jié)點(diǎn)n2的最短路徑●讀節(jié)點(diǎn)n1的“至目標(biāo)下一個(gè)”單元[n2],稱之為p。
●到p,然后訪問(wèn)它的“至目標(biāo)下一個(gè)”單元[n2]并以同樣的方式繼續(xù)直到到達(dá)節(jié)點(diǎn)n2。節(jié)點(diǎn)n2的“至目標(biāo)下一個(gè)”單元[n2]是“-”。
當(dāng)在內(nèi)部循環(huán)時(shí),計(jì)算到節(jié)點(diǎn)1的最短路徑,可能檢查是否節(jié)點(diǎn)與所有其他節(jié)點(diǎn)有連接(它清楚其的存在)。為了這一目的,每次從隊(duì)列中刪除節(jié)點(diǎn)時(shí),應(yīng)該將其放入一個(gè)集合。當(dāng)對(duì)節(jié)點(diǎn)n實(shí)現(xiàn)算法時(shí),減去節(jié)點(diǎn)n知道的所有節(jié)點(diǎn)集合。得到的結(jié)果是斷開節(jié)點(diǎn)的集合。
圖3表示更新所有節(jié)點(diǎn)的“至目標(biāo)下一個(gè)”列表后算法的結(jié)果。
信息被分布且每個(gè)節(jié)點(diǎn)只需要保留最少信息(在“至目標(biāo)下一個(gè)”域或列表中)。上述算法的代價(jià)是最佳的,與求圖中兩個(gè)節(jié)點(diǎn)間的最短路徑的Dijkstra算法一樣。算法總會(huì)終止。
在上述算法中,假設(shè)所有相鄰節(jié)點(diǎn)間的距離是一樣的。
鏈路上的負(fù)荷可以解譯為兩個(gè)相鄰節(jié)點(diǎn)(位于鏈路兩端)間的長(zhǎng)度。低負(fù)荷被解譯為節(jié)點(diǎn)間的距離短,反之亦然。
通過(guò)根據(jù)每個(gè)實(shí)際節(jié)點(diǎn)對(duì)之間的距離來(lái)假設(shè)它們之間的虛節(jié)點(diǎn)數(shù)就可能認(rèn)為算法中節(jié)點(diǎn)對(duì)之間有不同距離。例如如果節(jié)點(diǎn)1和節(jié)點(diǎn)5之間的距離是3米,則可以假設(shè)它們之間有兩個(gè)虛節(jié)點(diǎn)(叫做節(jié)點(diǎn)151和節(jié)點(diǎn)152)。一旦將所有這些虛節(jié)點(diǎn)(表示相鄰節(jié)點(diǎn)間的距離)放入圖中,就可以按一般情況執(zhí)行算法。唯一的區(qū)別是每個(gè)節(jié)點(diǎn)的“至目標(biāo)下一個(gè)”域必須用距離所記錄的虛節(jié)點(diǎn)最近的實(shí)際節(jié)點(diǎn)的標(biāo)識(shí)來(lái)更新。當(dāng)完成數(shù)據(jù)結(jié)構(gòu)時(shí),它們不知道有關(guān)虛節(jié)點(diǎn)的任何情況,創(chuàng)建虛節(jié)點(diǎn)僅僅是為了計(jì)算的目的。
雖然網(wǎng)絡(luò)通常是雙向的,但是可能進(jìn)行一些修改后甚至對(duì)單向圖使用該算法。不同之處是單向圖中的節(jié)點(diǎn)可能不知道哪些節(jié)點(diǎn)可直達(dá)它。它可能只知道它可直達(dá)的節(jié)點(diǎn)(上述的“鄰居列表”)。
為了克服這個(gè)問(wèn)題,每個(gè)節(jié)點(diǎn)帶有一個(gè)叫做“直達(dá)我的列表”數(shù)組。這個(gè)數(shù)組包含所有可直達(dá)它的節(jié)點(diǎn)的標(biāo)識(shí)。如果沒(méi)有其他原因要保留這個(gè)數(shù)組,則可以在完成算法之后刪除它。數(shù)組中的信息可以根據(jù)以下算法從網(wǎng)絡(luò)節(jié)點(diǎn)所附帶的“鄰居列表”中計(jì)算出來(lái)●開始●步驟1將一個(gè)任意節(jié)點(diǎn)放入隊(duì)列。
●步驟2取出隊(duì)列前面的節(jié)點(diǎn)(節(jié)點(diǎn)n)并將其標(biāo)識(shí)(n)放入所有它可直達(dá)的節(jié)點(diǎn)(在其“鄰居列表”中的節(jié)點(diǎn))的“直達(dá)我的列表”中。每次更新一個(gè)節(jié)點(diǎn)的“直達(dá)我的列表”時(shí),檢查該節(jié)點(diǎn)是否被標(biāo)記。如果沒(méi)有,就標(biāo)記該節(jié)點(diǎn)并將其放在隊(duì)列后面。(如果它已被標(biāo)記就不放在隊(duì)列中)。
●步驟3從隊(duì)列中刪除n,然后如果隊(duì)列不空就進(jìn)行到步驟2。
●結(jié)束算法結(jié)束后,圖中的每個(gè)節(jié)點(diǎn)將具有可直達(dá)它的節(jié)點(diǎn)的信息(“直達(dá)我的列表”)。一旦計(jì)算出圖中節(jié)點(diǎn)的“直達(dá)我的列表”,就可以用雙向情況下同樣的算法計(jì)算單向圖中所有節(jié)點(diǎn)間的最短路徑,但是唯一的區(qū)別是不使用雙向情況下的“鄰居列表”,而必須使用“直達(dá)我的列表”。
應(yīng)該清楚本發(fā)明當(dāng)然不限于具體說(shuō)明的實(shí)施方案,而是可以在附加的權(quán)利要求的范圍內(nèi)以多種方式改變。
權(quán)利要求
1.一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)(1)之間發(fā)送消息的通信網(wǎng)絡(luò),所述網(wǎng)絡(luò)包括一個(gè)服務(wù)器單元,其特征在于每個(gè)節(jié)點(diǎn)(1)具有存儲(chǔ)所述節(jié)點(diǎn)的可直達(dá)的所有相鄰節(jié)點(diǎn)列表的第一存儲(chǔ)設(shè)備,包含登記一個(gè)節(jié)點(diǎn)標(biāo)識(shí)的數(shù)據(jù)域(2)的第二存儲(chǔ)設(shè)備,以及服務(wù)器單元中提供的、構(gòu)成臨時(shí)隊(duì)列(3)的第三存儲(chǔ)設(shè)備。
2.根據(jù)權(quán)利要求1的通信網(wǎng)絡(luò),其特征在于第二存儲(chǔ)設(shè)備的數(shù)據(jù)域構(gòu)成一個(gè)單元(5)數(shù)組(4),用于索引網(wǎng)絡(luò)中的所有節(jié)點(diǎn),所述數(shù)組大小正比于網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù),且其中每個(gè)單元(5)被安排成包含一個(gè)節(jié)點(diǎn)的標(biāo)識(shí)。
3.根據(jù)權(quán)利要求1或2的通信網(wǎng)絡(luò),其特征在于每個(gè)節(jié)點(diǎn)對(duì)之間的距離由多個(gè)假設(shè)的虛節(jié)點(diǎn)表示,其中所述虛節(jié)點(diǎn)的數(shù)目正比于所述距離。
4.根據(jù)權(quán)利要求1、2或3的通信網(wǎng)絡(luò),其特征在于兩個(gè)節(jié)點(diǎn)間的業(yè)務(wù)量負(fù)荷由多個(gè)假設(shè)的虛節(jié)點(diǎn)來(lái)表示,其中所述虛節(jié)點(diǎn)的數(shù)目正比于所述業(yè)務(wù)量負(fù)荷。
5.一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)(n1,n2,…)間發(fā)送消息的通信網(wǎng)絡(luò)內(nèi)路由消息的方法,用于計(jì)算第一節(jié)點(diǎn)(n1)和第二節(jié)點(diǎn)(n2)間的最短路徑,其特征在于以下步驟構(gòu)成一個(gè)所述第一節(jié)點(diǎn)的相鄰且可直達(dá)的所有節(jié)點(diǎn)的標(biāo)識(shí)列表,將第二節(jié)點(diǎn)(n2)的標(biāo)識(shí)放入隊(duì)列(3),在登記第二節(jié)點(diǎn)(n2)標(biāo)識(shí)的數(shù)據(jù)域(2)中寫一條停止命令,取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域,除非在這個(gè)數(shù)據(jù)域中已經(jīng)有一項(xiàng),每次將一項(xiàng)寫入一個(gè)節(jié)點(diǎn)的數(shù)據(jù)域中時(shí),將此節(jié)點(diǎn)標(biāo)識(shí)放入隊(duì)列,在訪問(wèn)完所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí),及重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域中的步驟,直到被訪問(wèn)節(jié)點(diǎn)是第一節(jié)點(diǎn)(n1)。
6.根據(jù)權(quán)利要求5的方法,其特征在于檢查網(wǎng)絡(luò)查看已從某節(jié)點(diǎn)(1)斷開的節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求6的方法,其特征在于所述檢查包括以下步驟將所述節(jié)點(diǎn)(1)的標(biāo)識(shí)放入隊(duì)列(3)并標(biāo)記所述節(jié)點(diǎn),取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居,每次標(biāo)記一個(gè)新節(jié)點(diǎn)的標(biāo)識(shí)時(shí),將其放入隊(duì)列,在訪問(wèn)完隊(duì)列前面所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)標(biāo)識(shí)列表中的所有節(jié)點(diǎn)后,就從隊(duì)列中移去所述節(jié)點(diǎn)并將其放入已訪問(wèn)節(jié)點(diǎn)集合,重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居的步驟,直到隊(duì)列為空,并從所述節(jié)點(diǎn)(n)知道的所有節(jié)點(diǎn)集合中減去得到的已訪問(wèn)節(jié)點(diǎn)集合,其中得到的結(jié)果是從上面提到的節(jié)點(diǎn)(n)斷開的節(jié)點(diǎn)集合。
8.根據(jù)權(quán)利要求5-7中任何一個(gè)的方法,其特征在于它還包括步驟-用多個(gè)假設(shè)的虛節(jié)點(diǎn)來(lái)表示每個(gè)節(jié)點(diǎn)對(duì)之間的距離和/或業(yè)務(wù)量負(fù)荷,所述數(shù)目正比于所述距離和/或業(yè)務(wù)量負(fù)荷。
9.一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)(n1,n2,…)間發(fā)送消息的通信網(wǎng)絡(luò)內(nèi)路由消息的方法,用于計(jì)算網(wǎng)絡(luò)中所有節(jié)點(diǎn)對(duì)之間的最短路徑,其特征在于以下步驟構(gòu)成一個(gè)節(jié)點(diǎn)的相鄰且可直達(dá)的所有節(jié)點(diǎn)的標(biāo)識(shí)列表,將該節(jié)點(diǎn)(1)的標(biāo)識(shí)放入隊(duì)列(3),在索引網(wǎng)絡(luò)中所有節(jié)點(diǎn)(1)標(biāo)識(shí)的登記的、數(shù)組(4)數(shù)據(jù)域中被索引為[n]的單元(5)中為此節(jié)點(diǎn)寫一條停止命令,取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域中被索引為[n]的單元(5)中,除非在這個(gè)數(shù)據(jù)域中已經(jīng)有一項(xiàng),每次將一項(xiàng)寫入節(jié)點(diǎn)(1)的數(shù)據(jù)域中被索引為[n]的單元(5)中時(shí),將被訪問(wèn)節(jié)點(diǎn)的標(biāo)識(shí)放入隊(duì)列,在訪問(wèn)完所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)后,從隊(duì)列中刪除隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí),重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)標(biāo)識(shí)并將其標(biāo)識(shí)寫入其所有鄰居的數(shù)據(jù)域單元中的步驟,直到隊(duì)列為空,并對(duì)網(wǎng)絡(luò)中的所有節(jié)點(diǎn)重復(fù)上述步驟。
10.根據(jù)權(quán)利要求9的方法,其特征在于檢查網(wǎng)絡(luò)是否節(jié)點(diǎn)與所有其他的節(jié)點(diǎn)(n1,n2,…)有連接。
11.根據(jù)權(quán)利要求10的方法,其特征在于所述檢查包括以下步驟將所述節(jié)點(diǎn)(1)的標(biāo)識(shí)放入隊(duì)列(3)并標(biāo)記所述節(jié)點(diǎn),取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居,每次一個(gè)新節(jié)點(diǎn)的標(biāo)識(shí)被標(biāo)記時(shí),將其放入隊(duì)列,在訪問(wèn)完隊(duì)列前面所述節(jié)點(diǎn)的所有相鄰節(jié)點(diǎn)標(biāo)識(shí)列表中的所有節(jié)點(diǎn)后,就從隊(duì)列中移去所述節(jié)點(diǎn)并將其放入已訪問(wèn)節(jié)點(diǎn)集合,重復(fù)取出隊(duì)列前面的節(jié)點(diǎn)并標(biāo)記其未標(biāo)記的鄰居的步驟,直到隊(duì)列為空,并從所述節(jié)點(diǎn)(n)知道的所有節(jié)點(diǎn)集合中減去得到的已訪問(wèn)節(jié)點(diǎn)集合,其中得到的結(jié)果是斷開節(jié)點(diǎn)(n1,n2……)的節(jié)點(diǎn)集合。
12.根據(jù)權(quán)利要求9-11中任何一個(gè)的方法,其特征在于它還包括步驟-用多個(gè)假設(shè)的虛節(jié)點(diǎn)來(lái)表示每個(gè)節(jié)點(diǎn)對(duì)之間的距離和/或業(yè)務(wù)量負(fù)荷,所述虛節(jié)點(diǎn)的數(shù)目與所述距離和/或業(yè)務(wù)量負(fù)荷成正比。
全文摘要
一種在多個(gè)具有唯一標(biāo)識(shí)的節(jié)點(diǎn)之間發(fā)送消息的網(wǎng)絡(luò)包括一個(gè)服務(wù)器單元。每個(gè)節(jié)點(diǎn)(1)具有存儲(chǔ)所述節(jié)點(diǎn)的可直達(dá)的所有相鄰節(jié)點(diǎn)列表的第一存儲(chǔ)設(shè)備和包含構(gòu)成一個(gè)索引網(wǎng)絡(luò)中的所有節(jié)點(diǎn)的單元(5)數(shù)組(4)的數(shù)據(jù)域(2)的第二存儲(chǔ)設(shè)備。服務(wù)器單元中具有第三存儲(chǔ)設(shè)備用于構(gòu)成臨時(shí)隊(duì)列(3)。一種在網(wǎng)絡(luò)內(nèi)路由消息的方法包括將網(wǎng)絡(luò)的圖形表示轉(zhuǎn)換成以目的節(jié)點(diǎn)為根的樹模型。這個(gè)樹是圖形可以轉(zhuǎn)換成的最短樹。
文檔編號(hào)H04L12/56GK1333966SQ99815598
公開日2002年1月30日 申請(qǐng)日期1999年11月10日 優(yōu)先權(quán)日1998年11月12日
發(fā)明者M·佐爾法哈里 申請(qǐng)人:艾利森電話股份有限公司