本發(fā)明涉及網(wǎng)絡(luò)拓?fù)湫?zhǔn)
技術(shù)領(lǐng)域:
:,特別是指一種網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法。
背景技術(shù):
::在網(wǎng)絡(luò)通訊中,當(dāng)網(wǎng)絡(luò)中產(chǎn)生鏈路錯(cuò)位、硬件故障或者軟件崩潰等異常狀況時(shí),網(wǎng)絡(luò)拓?fù)鋾?huì)隨之發(fā)生動(dòng)態(tài)變化。但對(duì)許多拓?fù)涫鼓艿膮f(xié)議或應(yīng)用程序來說,它們必須精確地知道底層網(wǎng)絡(luò)當(dāng)前的拓?fù)淝闆r,由此引出了拓?fù)湫?zhǔn)問題。考慮一對(duì)給定的拓?fù)鋑a和gb,拓?fù)湫?zhǔn)問題的任務(wù)是推導(dǎo)出ga和gb之間不同的節(jié)點(diǎn)和鏈路。實(shí)際上,拓?fù)湫?zhǔn)是各種網(wǎng)絡(luò)系統(tǒng)和分布式應(yīng)用中常見且基本的任務(wù)。在配置階段,連線錯(cuò)誤或其他人為錯(cuò)誤都可能導(dǎo)致實(shí)際建立的網(wǎng)絡(luò)拓?fù)渑c設(shè)計(jì)藍(lán)圖之間的不匹配。舉例來說,對(duì)于dcell、bcube等增強(qiáng)數(shù)據(jù)中心的網(wǎng)絡(luò)性能的新型拓?fù)鋪碚f,錯(cuò)誤的連線將破壞拓?fù)涞膶?duì)稱或?qū)哟谓Y(jié)構(gòu),因此必須進(jìn)行拓?fù)湫?zhǔn)。此外,許多基本應(yīng)用程序或協(xié)議,例如:源路由、多播、incast、單播,必須了解底層網(wǎng)絡(luò)的確切拓?fù)?;源路由要求每個(gè)主機(jī)記錄網(wǎng)絡(luò)拓?fù)湟酝茖?dǎo)出正確的路由路徑。因此,一旦網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,主機(jī)就必須追蹤和更新它的拓?fù)湟晥D。如果過時(shí)的拓?fù)洳荒鼙患皶r(shí)更新,就會(huì)對(duì)路由性能造成負(fù)面影響。多播、incast和單播協(xié)議沿著基于當(dāng)前網(wǎng)絡(luò)拓?fù)渖傻淖钚〈鷥r(jià)樹或路徑傳送數(shù)據(jù)包。此外,在軟件定義網(wǎng)絡(luò)(sdn)的模式下,多個(gè)控制器以分層或分布式方式部署。每個(gè)控制器負(fù)責(zé)及時(shí)維護(hù)整個(gè)網(wǎng)絡(luò)的拓?fù)?,以便能夠立即地為每一個(gè)新的流生成正確的路由路徑。最后,在計(jì)算機(jī)網(wǎng)絡(luò)社區(qū)之外,在圖形被用作一種高層次抽象(例如圖形數(shù)據(jù)挖掘,知識(shí)圖譜,社交網(wǎng)絡(luò))的其他領(lǐng)域中,推導(dǎo)出生成的圖形之間的差異對(duì)于揭示演變模式或識(shí)別其拓?fù)湎嗨菩允侵陵P(guān)重要的。對(duì)于兩種給定的拓?fù)浣Y(jié)構(gòu),拓?fù)湫?zhǔn)的任務(wù)是推導(dǎo)出它們之間所有不同的節(jié)點(diǎn)和鏈路。實(shí)際上,可以通過用新型的數(shù)據(jù)結(jié)構(gòu)表示每個(gè)拓?fù)渲械乃泄?jié)點(diǎn),例如bloomfilter,哈希表,搜索樹,來有效地搜索那些不同的節(jié)點(diǎn)。然而,網(wǎng)絡(luò)中的鏈路數(shù)量遠(yuǎn)遠(yuǎn)大于節(jié)點(diǎn)的數(shù)量。用上述數(shù)據(jù)結(jié)構(gòu)來表示鏈路將會(huì)導(dǎo)致巨大的存儲(chǔ)成本和通信開銷。綜上,在實(shí)現(xiàn)本申請(qǐng)的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:現(xiàn)有數(shù)據(jù)結(jié)構(gòu)及校準(zhǔn)方法無法在缺乏先驗(yàn)知識(shí)的條件下實(shí)現(xiàn)高效率的校準(zhǔn)。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明的目的在于提出一種網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法,能夠在缺乏先驗(yàn)知識(shí)的條件下實(shí)現(xiàn)高效率的網(wǎng)絡(luò)拓?fù)湫?zhǔn),并能降低存儲(chǔ)成本及通信開銷。基于上述目的本發(fā)明提供的一種網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法,包括:采用現(xiàn)有算法查找得到給定兩個(gè)原始拓?fù)渲械牟町惞?jié)點(diǎn);基于差異節(jié)點(diǎn)得到與差異節(jié)點(diǎn)相連接的鏈路,并且在兩個(gè)原始拓?fù)渲袆h除差異節(jié)點(diǎn)以及與差異節(jié)點(diǎn)相連接的鏈路,得到具有相同節(jié)點(diǎn)的兩個(gè)優(yōu)化拓?fù)?;采用預(yù)設(shè)的圖過濾器結(jié)構(gòu)來表示兩個(gè)優(yōu)化拓?fù)浣Y(jié)構(gòu)中的拓?fù)湫畔?;其中,所述預(yù)設(shè)的圖過濾器包括與n個(gè)節(jié)點(diǎn)對(duì)應(yīng)且相互獨(dú)立的n個(gè)單元,每個(gè)單元分別采用idsum表示對(duì)應(yīng)節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)的id進(jìn)行異或操作得到的聚合信息、采用count表示對(duì)應(yīng)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的個(gè)數(shù);對(duì)于每個(gè)節(jié)點(diǎn),通過對(duì)兩個(gè)優(yōu)化拓?fù)渲械膇dsum進(jìn)行異或運(yùn)算、對(duì)兩個(gè)優(yōu)化拓?fù)渲械腸ount進(jìn)行相減運(yùn)算得到兩個(gè)優(yōu)化拓?fù)鋵?duì)應(yīng)的抽取結(jié)果;所述抽取結(jié)果用于消除兩個(gè)優(yōu)化拓?fù)渲械墓餐溌范A舨町愭溌?;采用預(yù)設(shè)的解碼算法對(duì)抽取結(jié)果進(jìn)行解碼運(yùn)算,得到差異鏈路,并且通過差異節(jié)點(diǎn)和差異鏈路進(jìn)行網(wǎng)絡(luò)拓?fù)湫?zhǔn)??蛇x的,所述預(yù)設(shè)的解碼算法包括:對(duì)抽取結(jié)果進(jìn)行遍歷并且搜索得到錨單元;其中,所述錨單元為兩個(gè)優(yōu)化拓?fù)渲芯哂胁煌瑪?shù)量的鄰居節(jié)點(diǎn)且至少有1個(gè)不同的鄰居節(jié)點(diǎn)對(duì)應(yīng)的單元;通過錨單元中的節(jié)點(diǎn)信息得到錨單元對(duì)應(yīng)的鏈路信息;將上述錨單元中得到的鏈路加入到差異鏈路集合中并且在抽取結(jié)果中刪除該鏈路;重復(fù)上述過程,直到無法找到錨單元,則退出算法,得到差異鏈路集合??蛇x的,所述通過錨單元中的節(jié)點(diǎn)信息得到錨單元對(duì)應(yīng)的鏈路信息的步驟包括:判斷選定的錨單元所指向的單元是否為空單元;若是,則該選定的錨單元為非法錨單元,重新選取錨單元??蛇x的,所述預(yù)設(shè)的解碼算法還包括:解碼后得到剩余拓?fù)浣Y(jié)構(gòu),包括剩余節(jié)點(diǎn)和剩余鏈路;構(gòu)建一條與剩余節(jié)點(diǎn)連接的鏈路;對(duì)剩余拓?fù)浣Y(jié)構(gòu)生成一個(gè)剩余拓?fù)浣Y(jié)構(gòu)副本;在剩余拓?fù)浣Y(jié)構(gòu)副本中刪除構(gòu)建的鏈路,并且執(zhí)行解碼過程,獲得新的差異鏈路以及參與解碼過程的單元;判斷所有參與解碼過程的單元是否均為相應(yīng)節(jié)點(diǎn)具有相同數(shù)量的鄰居界節(jié)點(diǎn)對(duì)應(yīng)的單元;若是,則將差異鏈路添加到差異鏈路集合中,并退出算法;否則,重新構(gòu)建一條不同的鏈路并且重復(fù)上述過程??蛇x的,針對(duì)于多個(gè)獨(dú)立的閉環(huán)鏈路,通過對(duì)應(yīng)多次執(zhí)行破環(huán)算法將所有閉環(huán)鏈路進(jìn)行破解并解碼。從上面所述可以看出,本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法通過在現(xiàn)有算法獲取差異節(jié)點(diǎn)的基礎(chǔ)上,采用預(yù)設(shè)的圖過濾器結(jié)構(gòu)來表示兩個(gè)給定的拓?fù)浣Y(jié)構(gòu)優(yōu)化得到的拓?fù)浣Y(jié)構(gòu),進(jìn)而通過編碼、抽取以及解碼的過程得到差異鏈路。因此,本申請(qǐng)所述網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法能夠在缺乏先驗(yàn)知識(shí)的條件下實(shí)現(xiàn)高效率的網(wǎng)絡(luò)拓?fù)湫?zhǔn),并能降低存儲(chǔ)成本及通信開銷。附圖說明圖1為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法的一個(gè)實(shí)施例的流程圖;圖2為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)中解碼算法的一個(gè)實(shí)施例的流程圖;圖3為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法中抽取操作示意圖;圖4為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法中解碼操作示意圖;圖5為本發(fā)明提供的閉環(huán)鏈路無法解碼的一個(gè)實(shí)施例的示意圖;圖6a為本發(fā)明提供的圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較時(shí)傳銷開銷示意圖;圖6b為本發(fā)明提供的圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較且|v1|變化時(shí)的時(shí)間開銷示意圖;圖6c為本發(fā)明提供的圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較且|d1|變化時(shí)的時(shí)間開銷示意圖;圖6d為本發(fā)明提供的圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較且p0變化時(shí)的時(shí)間開銷示意圖;圖7a為本發(fā)明提供的節(jié)點(diǎn)從200-3000且|v1|變化時(shí)的假陽性比例示意圖;圖7b為本發(fā)明提供的節(jié)點(diǎn)從200-3000且|v1|變化時(shí)的假陰性比例示意圖;圖8a為本發(fā)明提供的鏈路從20-280個(gè)且|v1|變化時(shí)的假陽性比例示意圖;圖8b為本發(fā)明提供的鏈路從20-280個(gè)且|v1|變化時(shí)的假陰性比例示意圖;圖9a為本發(fā)明提供的p0變化時(shí)的假陽性比例示意圖;圖9b為本發(fā)明提供的p0變化時(shí)的假陰性比例示意圖;圖10a為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且k變化時(shí)的時(shí)間開銷示意圖;圖10b為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且|d1|變化時(shí)的時(shí)間開銷示意圖;圖11a為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且k變化時(shí)的假陽性比例示意圖;圖11b為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且|d1|變化時(shí)的假陽性比例示意圖;圖12a為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且k變化時(shí)的假陰性比例示意圖;圖12b為本發(fā)明提供的網(wǎng)絡(luò)規(guī)模和差異邊數(shù)量增加且|d1|變化時(shí)的假陰性比例示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。需要說明的是,本發(fā)明實(shí)施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個(gè)相同名稱非相同的實(shí)體或者非相同的參量,可見“第一”“第二”僅為了表述的方便,不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對(duì)此不再一一說明。拓?fù)湫?zhǔn)需要有效推導(dǎo)出兩種給定拓?fù)渲g不同的節(jié)點(diǎn)和鏈路。實(shí)際上,推導(dǎo)出不同的節(jié)點(diǎn)是相對(duì)簡(jiǎn)單的。然而,從大規(guī)模鏈路中挑選出不同的鏈路卻需要花費(fèi)很大的代價(jià)。因此,本申請(qǐng)?zhí)岢隽艘环N根據(jù)以下理念定位不同的鏈路的方法:1)高效率,耗費(fèi)較低的存儲(chǔ)成本與通信開銷;2)沒有先驗(yàn)知識(shí),由于沒有支持信息,因此不同的鏈路需要能被反向解碼?,F(xiàn)有的基于bloomfilter、哈希表或搜索樹的策略無法同時(shí)實(shí)現(xiàn)這兩個(gè)理念。因此,本申請(qǐng)?zhí)岢鰣D過濾器,即一種高空間效率的數(shù)據(jù)結(jié)構(gòu),它能以可逆的方式來表示和推導(dǎo)出不同的鏈路。并且本申請(qǐng)?zhí)岢隽讼嚓P(guān)的編碼、抽取和原始解碼算法。注意到,編碼階段的異或陷阱可能導(dǎo)致解碼時(shí)的計(jì)算錯(cuò)誤。因此,進(jìn)一步提出了解碼增強(qiáng)算法,通過終止一些非法解碼過程來緩和異或陷阱的影響。此外,本申請(qǐng)也設(shè)計(jì)了一種破環(huán)算法來處理不同鏈路連接成環(huán)的情況。綜合評(píng)估表明,與其他數(shù)據(jù)結(jié)構(gòu)相比,圖過濾器消耗的空間開銷最少,并且能以可接受的錯(cuò)誤率為代價(jià),進(jìn)行合理的可逆解碼。本申請(qǐng)對(duì)應(yīng)的校準(zhǔn)方法為拓?fù)涫鼓艿膮f(xié)議和應(yīng)用程序帶來前所未有的好處,特別是能夠確保其服務(wù)質(zhì)量(qos)。參照?qǐng)D1所示,為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法的一個(gè)實(shí)施例的流程圖。所述網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法包括:步驟101,采用現(xiàn)有算法查找得到給定兩個(gè)原始拓?fù)渲械牟町惞?jié)點(diǎn);其中,所述現(xiàn)有算法包括基于bloomfilter、哈希表或搜索樹等策略實(shí)現(xiàn)的校準(zhǔn)方法;這是由于現(xiàn)有方法中查找差異節(jié)點(diǎn)屬于較為容易的過程,而本申請(qǐng)主要在于查找差異鏈路的改進(jìn)。步驟102,基于差異節(jié)點(diǎn)得到與差異節(jié)點(diǎn)相連接的鏈路,并且在兩個(gè)原始拓?fù)渲袆h除差異節(jié)點(diǎn)以及與差異節(jié)點(diǎn)相連接的鏈路,得到具有相同節(jié)點(diǎn)的兩個(gè)優(yōu)化拓?fù)?;基于差異?jié)點(diǎn),那么與差異節(jié)點(diǎn)連接的鏈路也應(yīng)該是差異鏈路,進(jìn)而可以在原始拓?fù)浣Y(jié)構(gòu)中刪除這些差異節(jié)點(diǎn)以及與差異節(jié)點(diǎn)相連接的鏈路,得到具有相同節(jié)點(diǎn)的優(yōu)化拓?fù)浣Y(jié)構(gòu),進(jìn)而將校準(zhǔn)問題轉(zhuǎn)化為在優(yōu)化拓?fù)渲胁檎也町愭溌返膯栴},你個(gè)優(yōu)化校準(zhǔn)準(zhǔn)確性和效率。需要說明的是,本申請(qǐng)中所述鏈路通常是指在拓?fù)浣Y(jié)構(gòu)中不同節(jié)點(diǎn)之間連接形成的邊,也即鏈路等同于邊。步驟103,采用預(yù)設(shè)的圖過濾器結(jié)構(gòu)來表示兩個(gè)優(yōu)化拓?fù)浣Y(jié)構(gòu)中的拓?fù)湫畔?;其中,所述預(yù)設(shè)的圖過濾器包括與n個(gè)節(jié)點(diǎn)對(duì)應(yīng)且相互獨(dú)立的n個(gè)單元,每個(gè)單元分別采用idsum表示對(duì)應(yīng)節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)的id進(jìn)行異或操作得到的聚合信息、采用count表示對(duì)應(yīng)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的個(gè)數(shù);本申請(qǐng)?zhí)岢鲆环N新的數(shù)據(jù)結(jié)構(gòu)來表示拓?fù)渲械男畔?,尤其是針?duì)于節(jié)點(diǎn)id進(jìn)行聚合得到的信息以及鄰居節(jié)點(diǎn)的數(shù)目。同樣,對(duì)于拓?fù)湫畔⒌奶幚硪矠楸旧暾?qǐng)中對(duì)信息的編碼過程。步驟104,對(duì)于每個(gè)節(jié)點(diǎn),通過對(duì)兩個(gè)優(yōu)化拓?fù)渲械膇dsum進(jìn)行異或運(yùn)算、對(duì)兩個(gè)優(yōu)化拓?fù)渲械腸ount進(jìn)行相減運(yùn)算得到兩個(gè)優(yōu)化拓?fù)鋵?duì)應(yīng)的抽取結(jié)果;所述抽取結(jié)果用于消除兩個(gè)優(yōu)化拓?fù)渲械墓餐溌范A舨町愭溌罚黄渲校霎惢蜻\(yùn)算是指相同則取1,不同則取0;通過運(yùn)算實(shí)現(xiàn)信息提取,使得后續(xù)能夠消除共同鏈路保留差異鏈路。步驟105,采用預(yù)設(shè)的解碼算法對(duì)抽取結(jié)果進(jìn)行解碼運(yùn)算,得到差異鏈路,并且通過差異節(jié)點(diǎn)和差異鏈路進(jìn)行網(wǎng)絡(luò)拓?fù)湫?zhǔn)。通過對(duì)提取信息的解碼,可以得到拓?fù)渲械牟町愭溌贰S缮鲜鰧?shí)施例可知,本申請(qǐng)?zhí)峁┑木W(wǎng)絡(luò)拓?fù)湫?zhǔn)方法通過在現(xiàn)有算法獲取差異節(jié)點(diǎn)的基礎(chǔ)上,采用預(yù)設(shè)的圖過濾器結(jié)構(gòu)來表示兩個(gè)給定的拓?fù)浣Y(jié)構(gòu)優(yōu)化得到的拓?fù)浣Y(jié)構(gòu),進(jìn)而通過編碼、抽取以及解碼的過程得到差異鏈路。因此,本申請(qǐng)所述網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法能夠在缺乏先驗(yàn)知識(shí)的條件下實(shí)現(xiàn)高效率的網(wǎng)絡(luò)拓?fù)湫?zhǔn),并能降低存儲(chǔ)成本及通信開銷。參照?qǐng)D2所示,為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)中解碼算法的一個(gè)實(shí)施例的流程圖。所述預(yù)設(shè)的解碼算法包括:步驟201,對(duì)抽取結(jié)果進(jìn)行遍歷并且搜索得到錨單元;其中,所述錨單元為兩個(gè)優(yōu)化拓?fù)渲芯哂胁煌瑪?shù)量的鄰居節(jié)點(diǎn)且至少有1個(gè)不同的鄰居節(jié)點(diǎn)對(duì)應(yīng)的單元;步驟202,通過錨單元中的節(jié)點(diǎn)信息得到錨單元對(duì)應(yīng)的鏈路信息;步驟203,將上述錨單元中得到的鏈路加入到差異鏈路集合中并且在抽取結(jié)果中刪除該鏈路;步驟204,重復(fù)上述過程,直到無法找到錨單元,則退出算法,得到差異鏈路集合。這樣,通過上述遞歸解碼的過程,能夠?qū)㈡溌芳暇獯a出來,通過錨單元的選取及刪除,能夠使得更多的錨單元進(jìn)一步暴露出來。因此,上述解碼算法既高效又穩(wěn)定。在本申請(qǐng)一些可選的實(shí)施例中,所述通過錨單元中的節(jié)點(diǎn)信息得到錨單元對(duì)應(yīng)的鏈路信息的步驟包括:判斷選定的錨單元所指向的單元是否為空單元;若是,則該選定的錨單元為非法錨單元,重新選取錨單元。這樣,通過排除非法的錨單元,可以一定程度上減緩或者消除異或陷阱,提高校準(zhǔn)精度。在本申請(qǐng)一些可選的實(shí)施例中,所述預(yù)設(shè)的解碼算法還包括:解碼后得到剩余拓?fù)浣Y(jié)構(gòu),包括剩余節(jié)點(diǎn)和剩余鏈路;構(gòu)建一條與剩余節(jié)點(diǎn)連接的鏈路;對(duì)剩余拓?fù)浣Y(jié)構(gòu)生成一個(gè)剩余拓?fù)浣Y(jié)構(gòu)副本;在剩余拓?fù)浣Y(jié)構(gòu)副本中刪除構(gòu)建的鏈路,并且執(zhí)行解碼過程,獲得新的差異鏈路以及參與解碼過程的單元;判斷所有參與解碼過程的單元是否均為相應(yīng)節(jié)點(diǎn)具有相同數(shù)量的鄰居界節(jié)點(diǎn)對(duì)應(yīng)的單元;若是,則將差異鏈路添加到差異鏈路集合中,并退出算法;否則,重新構(gòu)建一條不同的鏈路并且重復(fù)上述過程。這樣,通過對(duì)假設(shè)鏈路的嘗試可以將閉環(huán)鏈路打破,進(jìn)而實(shí)現(xiàn)對(duì)閉環(huán)鏈路的解碼,提高網(wǎng)絡(luò)拓?fù)湫?zhǔn)的準(zhǔn)確性。在本申請(qǐng)的一些可選的實(shí)施例中,為了更加清楚的顯示本申請(qǐng)所述網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法的具體原理,還公開了本申請(qǐng)網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法的實(shí)現(xiàn)、研究過程。具體內(nèi)容如下:首先,需要對(duì)拓?fù)湫?zhǔn)相關(guān)問題進(jìn)行建模:在許多情況下,確定兩個(gè)給定拓?fù)渲g不同的節(jié)點(diǎn)和鏈路是一項(xiàng)基本任務(wù)。其中,兩個(gè)給定拓?fù)錇闄z測(cè)到的物理拓?fù)浜驮O(shè)計(jì)網(wǎng)絡(luò)的藍(lán)圖或者當(dāng)前實(shí)際拓?fù)浜蛃dn控制器保存的拓?fù)?。用ga(va,ea)與gb(vb,eb)來分別表示兩個(gè)給定的拓?fù)洹a、vb是節(jié)點(diǎn),即網(wǎng)絡(luò)設(shè)備的集合,ea、eb是網(wǎng)絡(luò)設(shè)備之間鏈路的集合。拓?fù)湫?zhǔn)的任務(wù)是及時(shí)地提取出ga和gb之間增刪的鏈路和節(jié)點(diǎn)。用δv和δe分別表示不同的節(jié)點(diǎn)與不同的鏈路。顯然,當(dāng)以ga作為參照時(shí),其中,與分別記錄了增加和刪除的節(jié)點(diǎn)。同樣地,其中,與分別記錄了增加和刪除的鏈路。雖然廣泛研究的子圖匹配算法能夠解決網(wǎng)絡(luò)拓?fù)湫?zhǔn)問題。然而,這些算法是計(jì)算密集型的,且這些被設(shè)計(jì)應(yīng)用的子圖匹配問題被證明是np-hard問題。但發(fā)明人發(fā)現(xiàn),在給定的網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都與唯一的地址相關(guān)聯(lián),其中,地址為ip地址或mac地址。基于這一觀察,子圖匹配算法不再需要進(jìn)行復(fù)雜的比較。此外,這也使得給定的拓?fù)淠軌蛴们擅畹臄?shù)據(jù)結(jié)構(gòu)來表示,例如bloomfilter及其變種、哈希表、樹等等。舉例來說,bloomfilter可以將va中所有的節(jié)點(diǎn)記錄下來,它將每個(gè)節(jié)點(diǎn)的ip地址或mac地址映射到對(duì)應(yīng)的一個(gè)位向量中。注意到,將δv中節(jié)點(diǎn)導(dǎo)出的方法有很多。一個(gè)簡(jiǎn)單有效的方案是將va和vb中所有節(jié)點(diǎn)的ip地址或mac地址映射到bloomfilter或其變體之中。如果使用的是bloomfilter,則可以通過查詢va中所有的元素是否被bfb記錄,進(jìn)而得出其中,bfb記錄了vb中所有的節(jié)點(diǎn)。同樣可以通過查詢vb中所有的元素是否被bfa記錄來得出其中bfa記錄了va中所有的節(jié)點(diǎn)。這個(gè)算法的時(shí)間復(fù)雜度是o(n),其中,n表示ga和gb之間節(jié)點(diǎn)數(shù)的最大值。然而,現(xiàn)有策略無法有效地識(shí)別δe中的鏈路。主要原因是在高度連接的網(wǎng)絡(luò)中,鏈路的數(shù)量遠(yuǎn)遠(yuǎn)高于節(jié)點(diǎn)的數(shù)量。特別是在某些超額認(rèn)購(gòu)的網(wǎng)絡(luò)設(shè)計(jì)中,為了保證可靠的連通性以及容錯(cuò)性,鏈路數(shù)目甚至高達(dá)o(n2)。因此,利用bloomfilter或其他數(shù)據(jù)結(jié)構(gòu)來表示鏈路將會(huì)導(dǎo)致更多的存儲(chǔ)成本和時(shí)間開銷。基于現(xiàn)有方法在導(dǎo)出δe時(shí)的低效表現(xiàn),本申請(qǐng)?zhí)岢鲆环N新型的數(shù)據(jù)結(jié)構(gòu)來表示每個(gè)拓?fù)渲械乃墟溌?,然后識(shí)別出δe中不同的鏈路。由于找出兩個(gè)拓?fù)渲g的差異節(jié)點(diǎn)δv可以通過現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)來有效解決。本申請(qǐng)主要聚焦于解決找出差異連邊δe上,也即本申請(qǐng)關(guān)鍵在于操作差異鏈路。需要注意的是,通過查找δv,δv中與差異節(jié)點(diǎn)相連的邊也能被一起推導(dǎo)出。從給出的原有拓?fù)鋑a和gb中將δv中所有節(jié)點(diǎn)及與之相連的邊刪除,進(jìn)而分別得到優(yōu)化拓?fù)浜褪聦?shí)上,以上操作所得到和具有完全相同的節(jié)點(diǎn),但是可能會(huì)擁有不同的邊。如此一來,就將拓?fù)湫?zhǔn)問題簡(jiǎn)化為尋找和之間差異邊問題。n表示和中的節(jié)點(diǎn)個(gè)數(shù),為了方便計(jì)算,用1到n之間的整數(shù)來標(biāo)記和中的每個(gè)節(jié)點(diǎn)。這一全局標(biāo)記策略可以通過對(duì)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的ip地址或mac地址建立字典序來得到。隱藏,每條邊可以標(biāo)記為<i,j>,其中,i和j分別代表與這條邊相連的兩個(gè)節(jié)點(diǎn)。為了計(jì)算出本申請(qǐng)首先設(shè)計(jì)了一種內(nèi)存友好的數(shù)據(jù)結(jié)構(gòu),即圖過濾器,用于表示任意的拓?fù)浣Y(jié)構(gòu)。然后,基于圖過濾器來實(shí)現(xiàn)計(jì)算出和之間差異邊的目的。具體的,一個(gè)圖過濾器由n個(gè)相互獨(dú)立的單元組成,其中第i個(gè)單元記錄拓?fù)渲袠?biāo)記為i的節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)信息。每個(gè)單元包含兩個(gè)域,即idsum域和count域。其中,count域用于記錄該節(jié)點(diǎn)的鄰居節(jié)點(diǎn)個(gè)數(shù),而idsum域則對(duì)將該節(jié)點(diǎn)所有鄰居節(jié)點(diǎn)的id進(jìn)行異或操作從而實(shí)現(xiàn)鄰居節(jié)點(diǎn)信息聚合。注意到,節(jié)點(diǎn)的id實(shí)際上是其對(duì)應(yīng)標(biāo)記的二進(jìn)制形式。因此,每個(gè)id消耗的字節(jié)數(shù)為n+1表明節(jié)點(diǎn)的標(biāo)號(hào)從1開始而不是0。參照?qǐng)D3所示,為本發(fā)明提供的網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法中抽取操作示意圖。圖3描述了一個(gè)使用圖過濾器表示拓?fù)浣Y(jié)構(gòu)的例子。具體的,給定拓?fù)渲杏?個(gè)節(jié)點(diǎn),因此節(jié)點(diǎn)的標(biāo)記為1到5之間的整數(shù),而節(jié)點(diǎn)的id則需要3個(gè)比特位。在最終的圖過濾器中,需要5個(gè)單元來分別記錄每個(gè)節(jié)點(diǎn)的鄰居信息。中,節(jié)點(diǎn)1有兩個(gè)鄰居(節(jié)點(diǎn)2和節(jié)點(diǎn)3),因此同樣的,其他單元也以此種方式記錄相應(yīng)節(jié)點(diǎn)的鄰居信息。對(duì)于和中相同位置的單元如果得到相同的idsum和count,則表示和中該節(jié)點(diǎn)具有相同的鄰居節(jié)點(diǎn)的概率很高?;谔岢龅膱D過濾器結(jié)構(gòu),相應(yīng)的需要三種操作來計(jì)算出中所包含的邊,即編碼,抽取和解碼。首先,分別用圖過濾器將和分別表示為和然后,抽取操作將和中共同的邊消除,得到記錄中邊信息的最后,將中所包含的邊進(jìn)行反向解碼,得到差異邊或差異鏈路。編碼操作的基本原則是第i個(gè)單元記錄標(biāo)號(hào)為i的節(jié)點(diǎn)的鄰居信息。當(dāng)一個(gè)鄰居節(jié)點(diǎn)被錄入時(shí),相應(yīng)單元的count域加1,而idsum域則執(zhí)行異或運(yùn)算。所以,idsum域?qū)⑺朽従有畔⑦M(jìn)行融合,而count域則記錄鄰居節(jié)點(diǎn)數(shù)量。抽取操作的主要任務(wù)是消除兩個(gè)拓?fù)渲g的共同邊,但保留差異邊。為實(shí)現(xiàn)這一目的,需要遍歷和并推斷出可選的,對(duì)于中的任意第i個(gè)單元,推導(dǎo)算法為大多數(shù)情況下,均能正確記錄中的邊,然而,由于抽取過程中的異或陷阱,可能會(huì)導(dǎo)致計(jì)算錯(cuò)誤。其原因是,不同鄰居節(jié)點(diǎn)的組合經(jīng)過異或運(yùn)算會(huì)得到相同的idsum。例如,001⊙101和110⊙011的結(jié)果都是100。在中,如果001和101正好是節(jié)點(diǎn)i的鄰居,而110和011是中節(jié)點(diǎn)i的鄰居。在此種情況下,抽取操作的結(jié)果為因而會(huì)將所有鄰居節(jié)點(diǎn)的信息都消除。本申請(qǐng)稱此種情況為異或陷阱。但是,在沒有發(fā)生異或陷阱時(shí),如果則和中節(jié)點(diǎn)i必然具有不同的鄰居。另外,若則和中節(jié)點(diǎn)i必然具有不同數(shù)量的鄰居節(jié)點(diǎn)。因此,經(jīng)過抽取操作,中可能存在以下四種類型的單元。類型1:idsum≠0并且count≠0。和中的相應(yīng)節(jié)點(diǎn)擁有不同數(shù)量的鄰居,并且至少有count個(gè)不同的鄰居節(jié)點(diǎn)。類型2:idsum≠0并且count=0。和中的相應(yīng)節(jié)點(diǎn)有相同數(shù)量的鄰居,但這些鄰居節(jié)點(diǎn)并不完全相同。類型3:idsum=0并且count≠0。和中的相應(yīng)節(jié)點(diǎn)擁有不同數(shù)量的鄰居,抽取過程中出現(xiàn)了異或陷阱,導(dǎo)致將不同鄰居節(jié)點(diǎn)的信息隱藏。類型4:idsum=0并且count=0。和中的相應(yīng)節(jié)點(diǎn)有相同數(shù)量的鄰居,但不能斷定這些鄰居節(jié)點(diǎn)是否完全相同。圖3完整展示了給定兩個(gè)拓?fù)涞某槿〔僮?,其?jì)算所得中包含三種類型的單元,即類型1、類型2和類型4。由于和中標(biāo)號(hào)為1的節(jié)點(diǎn)都有兩個(gè)鄰居節(jié)點(diǎn),但這些鄰居節(jié)點(diǎn)并不完全相同,因此,所得到的但count域的正負(fù)屬性則代表從中增加(負(fù))或刪除(正)了count條邊。更具挑戰(zhàn)性的任務(wù)是從抽取結(jié)果中還原出其中記錄的不同的邊,從而完成拓?fù)湫?zhǔn)任務(wù)。為完成這一任務(wù),本申請(qǐng)將中那些idsum≠0并且count=1的單元設(shè)定為錨單元。利用loc表示所選取的錨單元在中所在位置,tag表示id為的節(jié)點(diǎn)標(biāo)號(hào)。則錨單元中記錄的是邊<loc,tag>的概率很高?;诖擞^察,本申請(qǐng)以一種遞歸的方式將從中反向還原出來。算法1中闡述了解碼操作的具體實(shí)現(xiàn)細(xì)節(jié),主要包含以下內(nèi)容:對(duì)應(yīng)的,解碼操作包括以下步驟:步驟1:掃描。算法對(duì)當(dāng)前的進(jìn)行遍歷并搜索出一個(gè)合適的錨單元,對(duì)應(yīng)算法1中的第2行到第7行。如果當(dāng)前中無法找到錨單元,則算法退出,否則進(jìn)入步驟2。步驟2:轉(zhuǎn)錄。這一步將推斷出錨單元里記錄的邊信息。為達(dá)到這一目的,必須計(jì)算出邊的兩端節(jié)點(diǎn)。注意到,錨單元中記錄的邊一端節(jié)點(diǎn)正好是錨單元所在位置對(duì)應(yīng)的節(jié)點(diǎn),而另一個(gè)節(jié)點(diǎn)則是錨單元中idsum所描述的節(jié)點(diǎn)。因此,將轉(zhuǎn)換為整數(shù),便得到另一端節(jié)點(diǎn),對(duì)應(yīng)算法1中的第8行到第9行。步驟3:記錄。將步驟2中所得邊加入到δd中對(duì)應(yīng)算法1中的第11行。步驟4:刪除。在推斷出一條邊信息之后,需要將這條邊從當(dāng)前中刪除,以便暴露出更多錨單元。為此,需要將中的idsum域和count域都置為0。相應(yīng)地,中原本存儲(chǔ)的節(jié)點(diǎn)loc的信息也要?jiǎng)h除,具體操作是使用異或操作刪除中l(wèi)oc節(jié)點(diǎn)的id,并將進(jìn)行重置對(duì)應(yīng)算法1中的第12行到第18行。最后,返回到步驟1重復(fù)運(yùn)算。實(shí)際上,在圖過濾器中,任一條邊<i,j>的信息均存儲(chǔ)在和中。因此,當(dāng)兩者中任意一個(gè)單元被選作錨單元時(shí),邊<i,j>都能從解碼出來。另外,將解碼出的邊從中刪除,能暴露出更多的錨單元,從而使得解碼算法能持續(xù)迭代運(yùn)行。圖4中展示了將圖3所得進(jìn)行解碼的過程。首先,算法遍歷并確定為錨單元。之后,運(yùn)行步驟2,計(jì)算出loc和tag的值分別為2和1。所得的邊<2,1>在步驟3中被加入δd中。之后,刪除節(jié)點(diǎn)1的信息,而則刪除節(jié)點(diǎn)2的信息。如此一來,新的錨單元將會(huì)出現(xiàn),即通過多次執(zhí)行以上步驟,所有中的邊將會(huì)以較高概率被成功解碼出來,也即差異邊被以遞歸的方式逐個(gè)解碼。雖然由于存在異或陷阱,圖過濾器可能會(huì)錯(cuò)過一些中的邊,或者解碼算法可能會(huì)提前停止,使得中留下一些沒有被解碼的邊。但是,本申請(qǐng)的校驗(yàn)方法能在沒有先驗(yàn)知識(shí)的條件下,以高概率成功解碼特別是當(dāng)拓?fù)渲g差異邊數(shù)量較少時(shí),準(zhǔn)確率已足夠滿足要求。此外,網(wǎng)絡(luò)中大量邊同時(shí)失效的概率是微乎其微的。假設(shè)任何一條邊在某一時(shí)間窗口內(nèi)失效的概率為p0,k表示某個(gè)時(shí)間窗口內(nèi)失效的邊數(shù)量。對(duì)于任意整數(shù)0≤x≤|e1|,其中|e1|表示中邊的總數(shù),則:也就是說,p(k=x)服從典型的二項(xiàng)分布,因此,網(wǎng)絡(luò)中大量邊同時(shí)失效的概率非常小。也即,本申請(qǐng)中的校準(zhǔn)方法是實(shí)際有效的。進(jìn)一步,針對(duì)于一旦出現(xiàn)異或陷阱,以上解碼算法就可能導(dǎo)致假陽性誤判和假陰性誤判的情形。例如:假設(shè)中節(jié)點(diǎn)e的鄰居節(jié)點(diǎn)的id為0101,1100和1011,其對(duì)應(yīng)的為0010。而在中,如果節(jié)點(diǎn)e的鄰居節(jié)點(diǎn)的id為1001和0110,則將會(huì)在抽取過程中出現(xiàn)異或陷阱,因?yàn)樵诠?jié)點(diǎn)e在中的鄰居節(jié)點(diǎn)0101和1100異或的值為1001,而1001正好是e在中的一個(gè)鄰居節(jié)點(diǎn)。所以,經(jīng)過抽取操作而得到的而在計(jì)算出的中,節(jié)點(diǎn)e在中的鄰居節(jié)點(diǎn)1001和0110,以及節(jié)點(diǎn)e在中的鄰居節(jié)點(diǎn)1001信息將會(huì)由于異或陷阱的存在而被消除。如此一來,解碼過程中將會(huì)出現(xiàn)假陰性誤判,也即漏掉幾條邊。另外,計(jì)算出的滿足作為錨單元的條件,一旦被選中作為錨單元,則將會(huì)引入一條額外的邊進(jìn)入δd,即從節(jié)點(diǎn)e到節(jié)點(diǎn)1101的邊。而這無疑會(huì)導(dǎo)致假陽性誤判。需要注意的是,一旦抽取操作被執(zhí)行完畢,潛在的異或陷阱將會(huì)被嵌入所得的之中并且不能被消除。本申請(qǐng)可以通過執(zhí)行調(diào)整后的解碼算法來減緩異或陷阱的負(fù)面影響。在上面提到的例子中,如果正好選中作為錨單元,則將會(huì)引入一條額外的邊進(jìn)入δd,即從節(jié)點(diǎn)e到節(jié)點(diǎn)1101的邊。然后,解碼算法將會(huì)根據(jù)步驟4把中節(jié)點(diǎn)e的信息通過異或的方式刪除。類似地,有可能也能滿足作為錨單元的條件,如此一來,當(dāng)被選作錨單元時(shí),又會(huì)引入一條額外的從節(jié)點(diǎn)1101到其他節(jié)點(diǎn)的邊。也就是說,異或陷阱可能會(huì)導(dǎo)致級(jí)聯(lián)的錯(cuò)誤解碼操作,并引入一系列假陽性誤判。換句話說,必須想辦法阻止級(jí)聯(lián)錯(cuò)誤出現(xiàn),從而減輕異或陷阱的負(fù)面影響。一般地,在中,大多數(shù)單元都是空的,也就是說其idsum域?yàn)?…00,而其count域值為0。因此,上述級(jí)聯(lián)的錯(cuò)誤解碼很可能指向一個(gè)原本為空的單元。假設(shè)一個(gè)指向空單元的候選錨單元被判定為不合法,并且不執(zhí)行后續(xù)的解碼操作,則能從一定程度上減輕異或陷阱帶來的影響?;诖擞^察,本申請(qǐng)重新設(shè)計(jì)了圖過濾器的解碼算法,并嚴(yán)格對(duì)選定的錨單元的約束。具體而言,在算法1的轉(zhuǎn)錄過程中,即步驟2,如果且則將被認(rèn)為不是合法的錨單元,后續(xù)的步驟3和步驟4將不會(huì)被執(zhí)行。這樣一來,某些潛在的錯(cuò)誤解碼將會(huì)被有效杜絕。上面所述策略,能減少解碼的假陽性誤判,但是一定程度上會(huì)增加假陰性誤判。通過終止某些潛在的會(huì)引起假陽性誤判的解碼操作,此種策略同時(shí)也會(huì)漏掉那些第4類單元所存儲(chǔ)的邊。實(shí)際上,對(duì)于第4類單元而言,其dsum=00…0且count=0,意味著該節(jié)點(diǎn)在和中具有相同個(gè)數(shù)的鄰居節(jié)點(diǎn),但是不能斷定這些鄰居節(jié)點(diǎn)是否一樣,因?yàn)榭赡艽嬖诋惢蛳葳?。比如,?biāo)號(hào)為6的節(jié)點(diǎn)在和中有不同的鄰居節(jié)點(diǎn),記錄節(jié)點(diǎn)1100和0101的信息,而則由節(jié)點(diǎn)0100和1101聚合而成。則經(jīng)過抽取操作后,所得將是一個(gè)典型的第4類單元。當(dāng)(節(jié)點(diǎn)12是中節(jié)點(diǎn)6的一個(gè)鄰居)被選作候選的錨單元時(shí),根據(jù)上面的對(duì)解碼算法的改進(jìn)策略,由于是第4類單元,解碼操作將會(huì)被終止,便不能成功解碼出從節(jié)點(diǎn)6到節(jié)點(diǎn)12的邊,從而導(dǎo)致遺漏。因此,需要對(duì)假陽性和假陰性進(jìn)行權(quán)衡,相應(yīng)調(diào)整算法。更進(jìn)一步,圖過濾器將拓?fù)渲泄?jié)點(diǎn)的鄰居節(jié)點(diǎn)信息通過異或操作進(jìn)行聚合,但是在解碼操作執(zhí)行之后,仍然有可能會(huì)存在一些無法被反向解碼的邊。例如,一旦和中的一些差異邊組成若干閉環(huán),這些閉環(huán)中的邊則不能通過以上解碼方法從中反向解碼。如圖5所示,和中一共有5個(gè)節(jié)點(diǎn),但是和之間一共有4條不同的邊,即<1,2>,<2,3>,<3,4>和<4,1>。這四條邊正好形成一個(gè)閉環(huán),因此,無論是原始的解碼算法1還是經(jīng)過改進(jìn)的解碼算法都無法從中找出合法的錨單元。為了解決這一困境,必須想辦法將形成的閉環(huán)打破,以便暴露出更多合法的錨單元。然而,直接將閉環(huán)打破并不可行,因?yàn)闆]有關(guān)于閉環(huán)中邊的任何先驗(yàn)信息。并且不知道究竟存在多少個(gè)閉環(huán),更致命的是,一個(gè)節(jié)點(diǎn)或者邊可能參與構(gòu)建多個(gè)閉環(huán)。為此,本申請(qǐng)?zhí)岢鏊惴?,用于解決單個(gè)閉環(huán)的解碼問題。其基本思想是假設(shè)與剩下的節(jié)點(diǎn)相連的某條邊為該閉環(huán)中的一條邊,并將該邊從中刪除,以便使能更多的錨單元。特別地,讓表示經(jīng)過解碼操作之后剩余下的版本,u表示中未被解碼的單元數(shù)量,而locj(1≤j≤u)表示中未被解碼的單元的位置。注意到,形成閉環(huán)的節(jié)點(diǎn)度都為2,因此只需要?jiǎng)h除其中任何一條邊,都可以使整個(gè)閉環(huán)變得可解。算法2具體包括:算法2試圖刪除以loc1位置的節(jié)點(diǎn)為端點(diǎn)且指向任何可能節(jié)點(diǎn)的一條邊。因此,逐一嘗試的話,需要嘗試u-1種可能的邊。在每次嘗試時(shí),都生成一個(gè)的副本,記為后續(xù)的操作將在這個(gè)副本上進(jìn)行對(duì)應(yīng)算法2的第5行。在算法2的第6行中,一個(gè)假設(shè)的邊test被實(shí)體化。然后,將test從中刪除,以此來使能更多錨單元,對(duì)應(yīng)算法2的第7行到第10行。在選定一個(gè)錨單元之后,將執(zhí)行解碼操作以計(jì)算出存儲(chǔ)在中的邊,對(duì)應(yīng)算法2的第11行。如果所有參與解碼過程的單元都被最終置為類型4的單元,則認(rèn)為test為閉環(huán)中的一條邊這一假設(shè)成立,對(duì)應(yīng)算法2的第12行到第13行。如此一來,解碼出來的邊將被加入δd中并終止算法2,對(duì)應(yīng)算法2的第14行到第15行。否則,進(jìn)入下一輪嘗試。實(shí)際上,此種策略嘗試的次數(shù)服從集合分布,其概率參數(shù)所以,其期望值為同時(shí),以上的假設(shè)-檢驗(yàn)策略也可以用于解決當(dāng)中出現(xiàn)多個(gè)相互獨(dú)立的閉環(huán)時(shí)解碼算法不可用的問題。通過執(zhí)行算法2多次,中的多個(gè)獨(dú)立閉環(huán)可以逐一被破解,從而將中記錄的邊信息解碼。讓c表示中獨(dú)立閉環(huán)的個(gè)數(shù),表示中未被解碼的單元數(shù)量,其中ui是第i個(gè)閉環(huán)所包含的邊數(shù)。則算法2執(zhí)行次數(shù)的期望值便為:值得注意的是,由于閉環(huán)相互獨(dú)立,對(duì)某個(gè)閉環(huán)的解碼操作將不會(huì)影響其他閉環(huán)。當(dāng)解碼第一個(gè)閉環(huán)時(shí),在u-1個(gè)節(jié)點(diǎn)中只有2個(gè)是節(jié)點(diǎn)的鄰居。因此,算法2執(zhí)行次數(shù)的期望值為類似地,當(dāng)解碼第i個(gè)閉環(huán)時(shí),節(jié)點(diǎn)將會(huì)有個(gè)可能的鄰居,所以算法2執(zhí)行次數(shù)的期望值為也就意味著,算法2執(zhí)行次數(shù)與中未解碼的單元個(gè)數(shù)u和相互獨(dú)立的閉環(huán)個(gè)數(shù)c成正比。實(shí)際上,當(dāng)多個(gè)閉環(huán)公用某些邊或者節(jié)點(diǎn)時(shí),算法2也不能成功解碼中未解碼的單元。然而,一方面,這種特殊情況在大型數(shù)據(jù)中心里出現(xiàn)的概率是極小的。另一方面,那些參與多個(gè)閉環(huán)的節(jié)點(diǎn)信息仍然存儲(chǔ)在中,因此,可以直接對(duì)比和中相應(yīng)節(jié)點(diǎn)來確定出差異邊。此外,本申請(qǐng)實(shí)施例還對(duì)異或陷阱的概率進(jìn)行了分析。對(duì)于拓?fù)渲械娜我夤?jié)點(diǎn),圖過濾器通過異或操作聚合其鄰節(jié)點(diǎn)的信息。這種壓縮思想可以降低存儲(chǔ)成本,減少通信開銷,但是在解碼過程中會(huì)出現(xiàn)計(jì)算錯(cuò)誤的風(fēng)險(xiǎn)。因此,本申請(qǐng)將量化異或陷阱的概率。對(duì)于異或陷阱,不同的節(jié)點(diǎn)對(duì)會(huì)產(chǎn)生相同的異或結(jié)果,導(dǎo)致對(duì)后續(xù)解碼操作的負(fù)面影響。令l為常數(shù)并表示id的位數(shù),n表示給定拓?fù)渲械墓?jié)點(diǎn)數(shù)。為了簡(jiǎn)化分析,考慮n等于2l-1的情況。要注意的是,l位的id可以用以識(shí)別21個(gè)節(jié)點(diǎn),但是不使用00…00來表示節(jié)點(diǎn),因此節(jié)點(diǎn)數(shù)量為2l-1。對(duì)于拓?fù)渲械娜我夤?jié)點(diǎn)e,使λ為e的度數(shù),即節(jié)點(diǎn)e具有λ個(gè)鄰節(jié)點(diǎn)。e的鄰節(jié)點(diǎn)已被記錄在中。注意到,通過異或操作記錄了它的λ個(gè)鄰節(jié)點(diǎn)的id。將λ個(gè)鄰節(jié)點(diǎn)可能的組合的異或結(jié)果稱為中間結(jié)果。令α表示中間結(jié)果的數(shù)量。因此,不同的鄰節(jié)點(diǎn)會(huì)導(dǎo)致不同的α值。例如,如果e具有三個(gè)鄰居,即101,111和011,那么異或操作將有四個(gè)中間結(jié)果,包括由101和111異或得到的010,由101和011得到的110,由111和011得到的100,以及由它全部三個(gè)鄰節(jié)點(diǎn)101,111和011進(jìn)行異或得的001。注意,對(duì)于任何節(jié)點(diǎn),不同的鄰節(jié)點(diǎn)將導(dǎo)致不同數(shù)量的中間結(jié)果。鄰節(jié)點(diǎn)的id或中間結(jié)果都可能遇到gfb產(chǎn)生的異或陷阱,導(dǎo)致解碼時(shí)的計(jì)算錯(cuò)誤。經(jīng)過以上分析,可以得到定理1:用pλ與pα分別表示λ個(gè)鄰節(jié)點(diǎn)中任意一個(gè)節(jié)點(diǎn)與α個(gè)中間結(jié)果中任意一個(gè)中間結(jié)果遇到gb中異或陷阱的概率。那么有:證明:注意到,當(dāng)計(jì)算pα?xí)r,一個(gè)中間結(jié)果只會(huì)遇到gb中一個(gè)鄰節(jié)點(diǎn)導(dǎo)致的異或陷阱。例如,在gfa[i]中的中間結(jié)果1100會(huì)被gb中的鄰節(jié)點(diǎn)1100消除。但是對(duì)于記錄在gfa[i]中的鄰節(jié)點(diǎn)1010來說,如果gfb[i]中也記錄有1010,那么它就不是一個(gè)異或陷阱。因此,pλ的分子比pα大1。在接下來的內(nèi)容中,只計(jì)算pα,而pλ能夠以相同的方式計(jì)算得出。給定一個(gè)記錄在gfa[i]中的中間結(jié)果,記作inter。令x表示gfb[i]中異或結(jié)果正好等于inter的鄰節(jié)點(diǎn)的數(shù)目。令c(x=x)表示當(dāng)x=x時(shí)inter引起異或陷阱的組合的數(shù)目。這時(shí)有:實(shí)際上,當(dāng)x=1時(shí),中間結(jié)果inter只有在當(dāng)gfb[i]中恰好保存了id與inter相等的節(jié)點(diǎn)時(shí)才會(huì)遇到異或陷阱。因此,c(x=1)=1。當(dāng)x=x并且2≤x≤λ時(shí),假設(shè)inter=id1⊙id2⊙…⊙idx,其中idi(1≤i≤x)表示包含在這個(gè)異或陷阱中的鄰節(jié)點(diǎn)。為了正確求出c(x=x),需要確定idi可能存在的情況。注意到id1,id2,…,idx彼此間需要進(jìn)行區(qū)分。因此,id1共有2l-2種選擇,不包含00…00與inter本身。而id2除了00…00與inter本身以外,id1選擇的值也不能再次選擇。因此id2共有21-3種可能的選擇。以此類推,idi共有2l-i-1種選擇。等式可以利用數(shù)學(xué)歸納法證明。根據(jù)上述等式,gfa[i]中的inter會(huì)引起異或陷阱的情況共有種。注意到,對(duì)于gfa[i],它的鄰節(jié)點(diǎn)共有種可能的組合,其中λ表示ga中節(jié)點(diǎn)e的鄰節(jié)點(diǎn)的總數(shù)。因此,pα可以計(jì)算為同樣地,pλ也能夠被合理地計(jì)算出來。因此定理1得證。根據(jù)定理1,能夠確定gfa[i]中不發(fā)生異或陷阱的概率,記其為pc。簡(jiǎn)要來說,本申請(qǐng)認(rèn)為λ個(gè)鄰節(jié)點(diǎn)或α個(gè)中間結(jié)果中的任意一個(gè)發(fā)生異或陷阱的事件都是獨(dú)立的。因此,pc能夠被計(jì)算為(1-pα)α×(1-pλ)λ。并且,令y表示沒有發(fā)生異或陷阱的單元數(shù)目。那么p(y=y(tǒng))服從典型的二項(xiàng)分布,即其中0≤y≤n。并且y值得期望為n×pc。顯然,更大的pc會(huì)導(dǎo)致更多的異或陷阱,并因此降低解碼操作的準(zhǔn)確性。在圖過濾器的框架中,異或陷阱不可避免。但是只有當(dāng)中的鏈路遇到異或陷阱時(shí),才會(huì)影響到圖過濾器解碼操作的準(zhǔn)確性。在本申請(qǐng)的另一些可選的實(shí)施例中,本申請(qǐng)對(duì)提出的圖過濾器進(jìn)行綜合評(píng)估。通常情況下,在存儲(chǔ)成本、解碼精度和時(shí)間消耗方面將圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)(包括相鄰矩陣、相鄰表和搜索樹)進(jìn)行比較。在不失一般性的情況下,首先生成不同規(guī)模的er隨機(jī)圖作為輸入拓?fù)洹M負(fù)涞倪B通性由給定的概率p0確定,其定量了給定節(jié)點(diǎn)對(duì)之間互連的概率。此后,使用兩個(gè)代表性的數(shù)據(jù)中心拓?fù)洌篺at-tree和scafida對(duì)圖過濾器的性能進(jìn)行進(jìn)一步的測(cè)試。最后,本申請(qǐng)?zhí)岢隽似骗h(huán)算法,并通過不同的參數(shù)設(shè)置對(duì)其進(jìn)行了評(píng)估。注意,解碼精度由解碼結(jié)果中的假陽性率和假陰性率二者共同確定。可選的,所有算法和方法都在2.6ghzcpu和16gbram的測(cè)試臺(tái)上實(shí)現(xiàn)。除了圖過濾器,一般的數(shù)據(jù)結(jié)構(gòu),如相鄰矩陣、相鄰表和搜索樹,也有能力記錄給定拓?fù)涞男畔?。因此,本申?qǐng)?jiān)谕ㄐ砰_銷、解碼精度和時(shí)間消耗方面將圖過濾器與其他數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較。考慮的參數(shù)包括或中的節(jié)點(diǎn)數(shù),即|v1|,和之間保留的不同鏈路的數(shù)量,即|d1|,以及er隨機(jī)圖中的概率p0。首先,比較了采用圖過濾器、相鄰矩陣、相鄰表和搜索樹引起的存儲(chǔ)或通信開銷。圖6a描述了當(dāng)和中的節(jié)點(diǎn)數(shù)量從100增加到1500時(shí)的結(jié)果。給定er隨機(jī)圖的參數(shù)p=0.1,計(jì)算使用上述數(shù)據(jù)結(jié)構(gòu)來表示拓?fù)渌a(chǎn)生的存儲(chǔ)成本。為了增加可讀性,用10的對(duì)數(shù)值而不是實(shí)際值來進(jìn)行繪制。無論在何種情況下,相鄰表消耗最多的存儲(chǔ)空間,這是因?yàn)樵谙噜彵淼囊粋€(gè)節(jié)點(diǎn)需要兩個(gè)數(shù)據(jù)域。相比之下,圖過濾器需要最少的存儲(chǔ)空間。原因表述如下:相鄰表和搜索樹都需要大量的存儲(chǔ)空間來進(jìn)行構(gòu)造,但是相鄰矩陣并不是存儲(chǔ)友好的,因?yàn)樗赡芟喈?dāng)稀疏。因此,圖過濾器在存儲(chǔ)成本方面優(yōu)于其他數(shù)據(jù)結(jié)構(gòu)。當(dāng)|v1|,|d1|和p0分別變化時(shí),推導(dǎo)過程中的時(shí)間消耗在圖6b,圖6c和圖6d中進(jìn)行了比較。依舊以10的對(duì)數(shù)值進(jìn)行圖形繪制。請(qǐng)注意,圖例中的“matrix”和“table”分別表示相鄰矩陣和相鄰表的方法引起的時(shí)間消耗?!癵f-o”表示圖過濾器初始解碼操作的時(shí)間消耗。相比之下,“gf-o”記錄擴(kuò)展解碼操作的時(shí)間消耗,這種解碼操作將任何指向空單元的候選單元認(rèn)作是非法的錨單元。顯然,給定相同的參數(shù)設(shè)置,所有方法導(dǎo)致的時(shí)間消耗隨|v1|的增長(zhǎng)而增加??梢郧宄吹?,當(dāng)|v1|的值從200增加到3000,|d1|和p0分別給定為100和0.1,基于相鄰表的方法效果最差,而通過比較兩個(gè)相鄰矩陣導(dǎo)出的方法所需時(shí)間最少。通過圖過濾器反向解碼中的鏈路比基于相鄰矩陣的方案稍慢,但比基于鄰接表的方法快得多。然而,圖過濾器支持可逆解碼,而其他方法則不支持。這種特性將圖過濾器的使用擴(kuò)展到更多的先驗(yàn)知識(shí)不可用的場(chǎng)景。并且,針對(duì)圖過濾器所設(shè)計(jì)的初始和增強(qiáng)的解碼操作以推斷的剩余鏈路花費(fèi)了相似的時(shí)間。為減少假陽性率,擴(kuò)展解碼操作并終止了對(duì)空單元的解碼處理。但是,在影響需要的總解碼時(shí)間方面,非法錨單元的數(shù)量可以忽略不計(jì)。給定|v1|和p0分別為2000和0.1。圖6c描述了|d1|從20增加到280時(shí)所引起的時(shí)間消耗。顯然,相鄰矩陣和相鄰表都消耗了恒定的時(shí)間(分別約7.3ms和3.4s)以得出兩個(gè)拓?fù)渲g的不同鏈路。由于它們通過運(yùn)行矩陣或表來推導(dǎo)出不同的鏈路,因此它們的時(shí)間復(fù)雜度都是o(|v1|)。相比之下,當(dāng)|d1|增加時(shí),圖過濾器的時(shí)間消耗顯著增加(從2.1ms到34.7ms)。圖過濾器逐一解碼不同的鏈路,因此其時(shí)間消耗與不同鏈路的數(shù)量|d1|成正比。并且,“gf-o”和“gf-a”之間的差距很小。此外,當(dāng)|v1|時(shí)和|d1|固定為2000和200,設(shè)置p0從0.05變化到0.5,并記錄其所引起的時(shí)間消耗。結(jié)果如圖6d所示。當(dāng)p0增加時(shí),更多的鏈路被引入網(wǎng)絡(luò)。通常,er圖中鏈路數(shù)量的期望可以被計(jì)算為|v1|*(|v1|-1)*p0/2。注意,與相鄰矩陣不同,相鄰表基于每個(gè)拓?fù)渲械逆溌穪磉M(jìn)行構(gòu)造。因此,“table”曲線迅速上升,而“matrix”曲線只在8ms左右波動(dòng)。對(duì)于圖過濾器,更多的鏈路意味著解碼期間xor陷阱和錯(cuò)誤計(jì)算的可能性更高。隨著p0的增加,初始和增強(qiáng)的圖過濾器需要更多輪的解碼操作。因此,圖6d中的“gf-a”和“gf-o”都顯示出緩慢增長(zhǎng)的趨勢(shì)。實(shí)際上,與“gf-o”相比,“gf-a”花費(fèi)更多的時(shí)間來識(shí)別非法的錨點(diǎn)。這種現(xiàn)象表明,當(dāng)p0增長(zhǎng)時(shí),增加的xor陷阱將顯著增大“gf-a”和“gf-o”之間的差距。通過比較相關(guān)聯(lián)的相鄰矩陣或相鄰表,兩個(gè)給定拓?fù)渲g的不同鏈路可以被正確計(jì)算得出。因此,不管是相鄰矩陣還是相鄰表,其精度都為100%。因此,本申請(qǐng)量化了用于圖過濾器的初始和擴(kuò)展解碼操作的假陽性比例和假陰性比例。圖7a、圖7b、圖8a、圖8b、圖9a、圖9b分別記錄了不同參數(shù)設(shè)置下的假陽性率和假陰性率。其中,“missed-o”和“missed-a”分別表示初始和擴(kuò)展解碼操作的假陽性率。類似地,“added-o”和“added-a”分別表示初始和擴(kuò)展解碼操作的假陰性率。首先,圖7a、圖7b分別描述了和的節(jié)點(diǎn)數(shù)從200變?yōu)?000時(shí)的假陽性率和假陰性率。隨著|v1|的增加,“missed-o”和“missed-o”中的值都急劇下降。在圖7b中的“added-a”呈類似的下降趨勢(shì)。理論上說,當(dāng)|v1|隨著固定|d1|的增加,圖過濾器的解碼會(huì)受到較少的xor陷阱的影響,因此假陽性率和假陰性率都會(huì)下降。但是,如圖7b所示,“added-o”有不穩(wěn)定的表現(xiàn)。還可以看出,以假陽性率的微小增加為代價(jià),擴(kuò)展解碼操作的假陰性率大大降低。然后將兩個(gè)拓?fù)浣Y(jié)構(gòu)中不同鏈路數(shù)量從20個(gè)變?yōu)?80個(gè),并在圖8a、圖8b中記錄所得到的假陽性率和假陰性率。圖8a、圖8b中展示了當(dāng)|d1|增加時(shí),假陽性率以及假陰性率都會(huì)顯著上升。內(nèi)在的原因是,對(duì)于圖過濾器的解碼,更多不同的鏈路導(dǎo)致xor陷阱的風(fēng)險(xiǎn)增加。此外,當(dāng)|d1|增加時(shí),擴(kuò)展的解碼策略在假陽性率和假陰性率方面都優(yōu)于初始解碼操作。最后,當(dāng)er圖模型中的參數(shù)p0從0.05增加到0.5時(shí),得到的假陽性率和假陰性率如圖9a、圖9b所示。較大的p0意味著更多的拓?fù)滏溌泛透叩膞or陷阱風(fēng)險(xiǎn)。如圖9a、圖9b所示,圖過濾器解碼更多的錯(cuò)過的和新加入的邊。顯然,擴(kuò)展解碼算法在假陰性率方面勝過初始解碼策略。總結(jié)圖7a、圖7b、圖8a、圖8b、圖9a、圖9b,擴(kuò)展解碼算法可以顯著地減少圖過濾器的假陰性率,但是存在丟失一些不同鏈路的風(fēng)險(xiǎn)。除一般的er隨機(jī)圖之外,本申請(qǐng)還進(jìn)一步評(píng)估了其他兩個(gè)典型數(shù)據(jù)中心拓?fù)浣Y(jié)構(gòu),如fat-tree和scafida的圖過濾器的性能??紤]fat-tree中的交換機(jī)端口數(shù)量k,以及網(wǎng)絡(luò)中不同鏈路的數(shù)量|d1|。指標(biāo)包括解碼時(shí)間消耗,假陽性率和假陰性率。結(jié)果如圖10a、圖10b、圖11a、圖11b、圖12a、圖12b所示。為了簡(jiǎn)單起見,在fat-tree和scafida中實(shí)現(xiàn)了圖過濾器的擴(kuò)展解碼操作。作為代表性的結(jié)構(gòu)化數(shù)據(jù)中心拓?fù)洌琭at-tree由與k3/4個(gè)服務(wù)器互連的5k2/4個(gè)商品交換機(jī)組成。fat-tree中的鏈路數(shù)可以計(jì)算為3k3/4個(gè)。相反,scafida是數(shù)據(jù)中心中典型的隨機(jī)或不規(guī)則拓?fù)?。為了公平起見,在?shí)驗(yàn)中,fat-tree中的鏈路和節(jié)點(diǎn)的總數(shù)都設(shè)置相同。但是它們適用不同的規(guī)則,因此具有完全不同的拓?fù)涮卣?例如,網(wǎng)絡(luò)直徑,度分布和平分帶寬)。當(dāng)k從10變化到24,并且|d1|給定為400時(shí),圖10a、圖11a、圖12a描述了fat-tree和scafida的性能。如圖10a所示,比起在fat-tree拓?fù)?,在scafida拓?fù)渲校瑘D過濾器需要多一點(diǎn)點(diǎn)的時(shí)間來完成解碼操作。事實(shí)上,scafida是一個(gè)高度偏度的拓?fù)?,網(wǎng)絡(luò)中的大多數(shù)節(jié)點(diǎn)與幾個(gè)巨型節(jié)點(diǎn)相連。因此,這些巨型節(jié)點(diǎn)可能涉及多個(gè)不同的鏈路。然而,這種鏈路不能直接從巨型節(jié)點(diǎn)解碼,因?yàn)榫扌凸?jié)點(diǎn)不會(huì)被選定為錨單元。圖過濾器必須等到這種鏈路的另一端被搜索為合法的錨單元。這就是scafida中的解碼更耗時(shí)的原因。根據(jù)圖11a、圖12a所示,當(dāng)k增加時(shí),圖過濾器的假陽性率和假陰性率都迅速下降。注意,當(dāng)k=10時(shí),假陽性率和假陰性率都非常高,這意味著在這種情況下圖過濾器是不適用的。然而,本申請(qǐng)認(rèn)為k=10意味這網(wǎng)絡(luò)中有750條邊。同時(shí)改變750個(gè)鏈路中的400個(gè)鏈路是不切實(shí)際的,因?yàn)閿?shù)據(jù)中心網(wǎng)絡(luò)規(guī)模是增量演進(jìn)而不是斷崖式增長(zhǎng)的。此外,與scafida相比,fat-tree中的解碼導(dǎo)致較高的假陰性率以及較低的假陽性率。原因在于,在實(shí)驗(yàn)中,不同的鏈路是(添加的鏈路或刪除的鏈路)隨機(jī)生成的。在fat-tree中刪除的鏈路比在scafida中的更加分散。這是因?yàn)閟cafida中的巨型節(jié)點(diǎn)有更大的刪除鏈路的可能性。也就是說,在scafida中,較少節(jié)點(diǎn)的鏈路被刪除,而在解碼時(shí),圖過濾器將處理較少的節(jié)點(diǎn)。因此,對(duì)scafida中刪除的鏈路進(jìn)行解碼將會(huì)錯(cuò)過更多的鏈路,也會(huì)使更少的鏈路被加入到δd中去。此后,圖10b、圖11b、圖12b一起揭示了當(dāng)k=20時(shí)|d1|在fat-tree和scafida中的影響。毫無疑問的是,當(dāng)網(wǎng)絡(luò)中引入了更多不同的鏈路時(shí),圖過濾器需要更多的時(shí)間去進(jìn)行推導(dǎo)。如圖10b所示,在scafida中的解碼比在fat-tree中要耗費(fèi)更多的時(shí)間。此外,根據(jù)圖11b和圖12b,scafida中的解碼導(dǎo)致了較高的假陽性率以及較低的假陰性率。其基本原因是,與fat-tree不同,在scafida中,不同的鏈路主要聚集在巨型節(jié)點(diǎn)周圍。此外,當(dāng)|d1|增長(zhǎng)時(shí),圖過濾器有著較高的假陽性率和假陰性率。但實(shí)際中,為了確??捎眯裕瑪?shù)據(jù)中心在一段時(shí)間內(nèi)不允許遇到大量而同時(shí)的鏈路故障。這保證了圖過濾器在數(shù)據(jù)中心中的實(shí)用性?;趫D10a、圖10b、圖11a、圖11b、圖12a、圖12b,可以得出結(jié)論:圖過濾器在不同的數(shù)據(jù)中心拓?fù)渲酗@示出不同的性能。圖過濾器可以在數(shù)據(jù)中心中實(shí)現(xiàn),因?yàn)閿?shù)據(jù)中心是增量演進(jìn)的。進(jìn)一步,本申請(qǐng)實(shí)施例還對(duì)破環(huán)算法進(jìn)行評(píng)估:當(dāng)不同的鏈路在拓?fù)渲行纬森h(huán)路時(shí),必須使用算法2來通過假設(shè)-檢查策略來破壞潛在的環(huán)路。如果沒有節(jié)點(diǎn)或邊參與多個(gè)閉環(huán),那么算法2可以在沒有假陽性率和假陰性率的情況下對(duì)鏈路進(jìn)行解碼。因此,只在表1中描述了算法2的時(shí)間開銷。表1算法2在不同參數(shù)場(chǎng)景下的時(shí)間開銷閉環(huán)個(gè)數(shù)3691215182124耗時(shí)(秒)0.430.891.1311.612.212.423.003.23|dc|5060708090100110120耗時(shí)(秒)0.971.141.261.571.842.212.342.63|v1|0.511.522.533.54耗時(shí)(秒)0.801.361.311.732.212.953.303.43通常情況下,考慮閉環(huán)數(shù)量c、節(jié)點(diǎn)數(shù)量和環(huán)路中不同鏈路數(shù)量的影響,|v1|和|dc|。表1記錄了當(dāng)c、|v1|和|dc|變化時(shí),破壞環(huán)路所需的時(shí)間開銷。算法2的預(yù)期執(zhí)行次數(shù)與節(jié)點(diǎn)總數(shù)u(u=|dc|)和閉環(huán)數(shù)量c成正比。因此,如表1所示。當(dāng)c和|dc|增加時(shí),造成的時(shí)間開銷明顯增加。此外,給定c和|dc|分別為15和100,設(shè)置中的單元總數(shù)|v1|從500改變到5500。表1展示了更大的|v1|將減慢解碼進(jìn)度,因?yàn)樗阉麇^單元必須檢查所有單元。也就是說,通過遵循假設(shè)-檢查策略,算法2可以以額外的時(shí)間開銷為代價(jià)來正確地破壞中的環(huán)路。終上所述,圖過濾器比其他數(shù)據(jù)結(jié)構(gòu)節(jié)省空間,并且其所得到的時(shí)間開銷是可以接受的。擴(kuò)展解碼操作以較高的假陽性率為代價(jià),顯著降低了假陰性率。此外,圖過濾器在不同的數(shù)據(jù)中心拓?fù)渲芯哂胁煌男阅?。最后,設(shè)計(jì)的環(huán)路破壞算法確實(shí)可以破壞潛在的環(huán)路并解碼底層的鏈路。因此,本申請(qǐng)的圖過濾器對(duì)于不允許大量而同時(shí)的故障的數(shù)據(jù)中心是實(shí)用的。在本申請(qǐng)另一些可選的實(shí)施例中,針對(duì)于一些空間高效的數(shù)據(jù)結(jié)構(gòu),例如bloomfilter及其變種,雖然能夠推斷出ga和gb之間不同的節(jié)點(diǎn),但是無法有效地從大量鏈路中識(shí)別出不同的鏈路。為了解決拓?fù)湫?zhǔn)問題,本申請(qǐng)首先使用bloomfilter來查找不同的節(jié)點(diǎn)。此后,設(shè)計(jì)了一種叫作圖過濾器的新型數(shù)據(jù)結(jié)構(gòu)來表示每個(gè)拓?fù)?,并識(shí)別出兩個(gè)拓?fù)渲g不同的鏈路。通常,圖過濾器由n個(gè)單元組成,每個(gè)單元映射拓?fù)渲幸粋€(gè)特定的節(jié)點(diǎn)。通過維護(hù)標(biāo)簽機(jī)制可實(shí)現(xiàn)這種一一映射。一個(gè)單元通過兩個(gè)域(即idsum和count)記錄映射節(jié)點(diǎn)的相關(guān)鏈路。具體來說,對(duì)于第i個(gè)單元,其idsum將第i個(gè)節(jié)點(diǎn)的所有鄰節(jié)點(diǎn)的id通過異或操作組合在一起,而count計(jì)錄了它的鄰節(jié)點(diǎn)的數(shù)目。此外,針對(duì)圖過濾器提出了三種操作(編碼,抽取和解碼),以便推導(dǎo)出兩種拓?fù)渲g不同的鏈路。在編碼過程中,用圖過濾器聚合表示每個(gè)拓?fù)渲械乃墟溌贰H缓?,用抽取操作消除兩個(gè)拓?fù)渲邢嗤逆溌?,同時(shí)保留下不同的鏈路。最后,可以遞歸地從抽取結(jié)果中解碼得到不同的鏈路?;阱^單元(idsum≠0并且count=1的單元)的定義,對(duì)于任意一條鏈路<i,j>,只要抽取后的圖過濾器的第i個(gè)單元或者第j個(gè)單元能夠作為錨單元,這條鏈路就有較高概率被反向解碼出來。本申請(qǐng)?zhí)岢隽藘煞N解碼算法來推導(dǎo)出底層不同的鏈路,即原始解碼算法和增強(qiáng)解碼算法。原始解碼算法遞歸地搜索錨單元,并刪除與錨單元相關(guān)聯(lián)的鏈路。然而,在解碼時(shí),潛在的異或陷阱(不同的節(jié)點(diǎn)在編碼時(shí)產(chǎn)生相同的異或結(jié)果)可能會(huì)導(dǎo)致假陽性和假陰性錯(cuò)誤。因此,增強(qiáng)解碼算法通過消除一些非法的錨單元來減少異或陷阱的影響。此外,在極端情況下,一些不同的鏈路會(huì)連成環(huán),并且不會(huì)暴露錨單元來解碼這些鏈路。因此,進(jìn)一步設(shè)計(jì)一個(gè)破環(huán)算法來分解環(huán)并推導(dǎo)出這些鏈路。所提出的破環(huán)算法按照假設(shè)檢驗(yàn)策略來選擇和刪除環(huán)中的鏈路,使得更多合法的錨單元暴露出來。雖然圖過濾器是概率數(shù)據(jù)結(jié)構(gòu),但對(duì)于只有部分鏈路可能同時(shí)改變的情況,它是有效和高效的。綜合實(shí)驗(yàn)表明,圖過濾器比其他數(shù)據(jù)結(jié)構(gòu)都要節(jié)省空間,并且所耗費(fèi)的時(shí)間開銷是可以接受的。增強(qiáng)的解碼操作可以顯著降低假陰性率,但這會(huì)導(dǎo)致稍高的假陽性率。此外,圖過濾器在不同的數(shù)據(jù)中心拓?fù)渲芯哂胁煌男阅?。最后,設(shè)計(jì)的破環(huán)算法可以切實(shí)有效地分解潛在的環(huán)并解碼底層的鏈路。因此,本申請(qǐng)所述網(wǎng)絡(luò)拓?fù)湫?zhǔn)方法能夠在缺乏先驗(yàn)知識(shí)的條件下實(shí)現(xiàn)高效率的網(wǎng)絡(luò)拓?fù)湫?zhǔn),并能降低存儲(chǔ)成本及通信開銷。所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實(shí)施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡(jiǎn)明它們沒有在細(xì)節(jié)中提供。另外,為簡(jiǎn)化說明和討論,并且為了不會(huì)使本發(fā)明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(ic)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發(fā)明難以理解,并且這也考慮了以下事實(shí),即關(guān)于這些框圖裝置的實(shí)施方式的細(xì)節(jié)是高度取決于將要實(shí)施本發(fā)明的平臺(tái)的(即,這些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)以描述本發(fā)明的示例性實(shí)施例的情況下,對(duì)本領(lǐng)域技術(shù)人員來說顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下或者這些具體細(xì)節(jié)有變化的情況下實(shí)施本發(fā)明。因此,這些描述應(yīng)被認(rèn)為是說明性的而不是限制性的。盡管已經(jīng)結(jié)合了本發(fā)明的具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實(shí)施例的很多替換、修改和變型對(duì)本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲(chǔ)器架構(gòu)(例如,動(dòng)態(tài)ram(dram))可以使用所討論的實(shí)施例。本發(fā)明的實(shí)施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12