專利名稱:基于社區(qū)緊密度的快速社區(qū)發(fā)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及復(fù)雜網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種復(fù)雜網(wǎng)絡(luò)中社區(qū)結(jié)構(gòu)的發(fā)現(xiàn)技術(shù)及其實現(xiàn)方法。
背景技術(shù):
社區(qū)發(fā)現(xiàn)技術(shù)即發(fā)現(xiàn)網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu)是復(fù)雜網(wǎng)絡(luò)中的一個基礎(chǔ)研究,也是近年來復(fù)雜網(wǎng)絡(luò)中的一個研究熱點。關(guān)于網(wǎng)絡(luò)社區(qū)結(jié)構(gòu)的研究,它不僅與計算機科學(xué)中的圖形分割(GP : graphpartition)技術(shù)密切相關(guān),還與社會學(xué)中的層次聚類(HC hierarchical clustering)技術(shù)也有著不容忽視的關(guān)系。 基于圖分割的著名算法主要有K-L算法、譜平分法、派系過濾算法和W-H快速譜分割法等。其中,K-L算法在稀疏圖中的時間復(fù)雜度0(n3)。并且其最大缺陷是必須為算法預(yù)先指定兩個社區(qū)的大小,否則算法會得到錯誤的劃分結(jié)果,這就使該算法的應(yīng)用非常的有限,在大多數(shù)的真實網(wǎng)絡(luò)中根本無法得到應(yīng)用。此外,即便克服了 K-L算法的這一缺點,我們?nèi)匀徊荒芙鉀QK-L算法作為圖分割方法的先天性不足。至于譜平分法,人們在使用這類方法時,預(yù)先不能確定究竟將圖分成多少個子圖才合適,因為該方法只能將圖分成2個子圖即偶數(shù)個子圖,且不知何時停止。而層次聚類算法可分為兩大類算法凝聚算法和分裂算法。凝聚算法的典型代表是Newman快速算法,該算法可以用于分析含有高達100萬節(jié)點的復(fù)雜網(wǎng)絡(luò)。此后,Clauset、Newman和Moore等人又提出了一種新的貪婪算法。該算法是基于Newman快速算法,并采用了數(shù)據(jù)結(jié)構(gòu)“堆”來對網(wǎng)絡(luò)的模塊化度進行計算和更新,其復(fù)雜度只有0(nlog2n)。在很多不同的現(xiàn)實網(wǎng)絡(luò)中,凝聚算法的確已經(jīng)得到了廣泛應(yīng)用,但這并不能掩飾這類算法所存在的問題。首先,在一些應(yīng)用中,即使已經(jīng)知道了社區(qū)數(shù)目,卻并沒有得到正確的社區(qū)結(jié)構(gòu)。其次,凝聚算法傾向于找到社區(qū)的核心,而忽略社區(qū)的周邊。而GN算法屬于層次聚類中的分裂算法。盡管該算法彌補了一些傳統(tǒng)算法的不足,但是仍然存在一個缺陷不能直接根據(jù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)來判斷它所求的社區(qū)是否有意義。另外,GN算法在對社區(qū)數(shù)目不清楚的情況下,也不知道算法該在哪一次迭代后結(jié)束。由以上描述可以看出,現(xiàn)有的社區(qū)發(fā)現(xiàn)技術(shù)性能雖然優(yōu)越,也可以較為準(zhǔn)確地發(fā)現(xiàn)復(fù)雜網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu),但是它們的計算量卻依然十分龐大,嚴(yán)重限制了它們在大型復(fù)雜網(wǎng)絡(luò)中的應(yīng)用。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種新的社區(qū)發(fā)現(xiàn)技術(shù)一基于社區(qū)緊密度的快速社區(qū)發(fā)現(xiàn)方法,在不影響社區(qū)發(fā)現(xiàn)性能的情況下,降低方法所需的時間復(fù)雜度,使其可以更好地應(yīng)用在大型的復(fù)雜網(wǎng)絡(luò)中。為了達到上述目的,本發(fā)明引入了邊稠密度、相鄰社區(qū)的概念,并設(shè)計了一種緊密度矩陣。其中邊稠密度的定義如下給定一個含有n個頂點,m條邊的圖G,該圖的邊稠密度是邊數(shù)目與頂點數(shù)目的比率,數(shù)學(xué)描述為X ^ =其中相鄰社區(qū)的定義如下給定一個當(dāng)前具有k個社區(qū)的圖G和相應(yīng)的緊密度矩陣M,我們稱滿足如下條件的社區(qū)i和社區(qū)j是相鄰的,它們互為相鄰社區(qū)mu彡[A g/2],i G [I, k], j G [I, k]。其中我們設(shè)計的緊密度矩陣如下給定一個含有n個節(jié)點、m條邊的圖G,該緊密度矩陣的公式描述為M = (Hiu)kxk,其中M代表緊密度矩陣,代表社區(qū)i和社區(qū)j之間的緊密度值,k是當(dāng)前網(wǎng)絡(luò)中的社區(qū)個數(shù),其值小于等于n。其中緊密度矩陣中的元素記錄的是任意兩個社區(qū)之間的緊密度值。并且緊密度矩陣M在初始化時,其每個元素的緊密度值均置為0,這緊密度值會隨著算法的運行逐漸增 大。實現(xiàn)本發(fā)明所提供的社區(qū)發(fā)現(xiàn)技術(shù)包含三部分的工作A、計算緊密度矩陣;B、合并社區(qū);C、更新緊密度矩陣。其中步驟A是我們最先需要完成的工作,即我們需要首先計算出網(wǎng)絡(luò)中的緊密度矩陣。然后才能開始步驟B合并社區(qū)的工作,步驟B完成后,需要對步驟A中計算出的緊密度矩陣按照步驟B的結(jié)果進行更新,然后再進行下一輪的迭代。其中步驟A的工作包括兩種情況Al、計算無權(quán)網(wǎng)中的緊密度矩陣;A2、計算加權(quán)網(wǎng)中的緊密度矩陣。其中步驟B,緊密度矩陣M的維數(shù)k初始值等于所研究的圖中頂點的個數(shù)(初始時,每個頂點形成該圖中的一個獨立社區(qū),即此時每個社區(qū)內(nèi)只有一個節(jié)點)。并且步驟B中,合并社區(qū)的工作有兩種特殊情況BI、對于某個社區(qū)i,它有多個與之最緊密的相鄰社區(qū);B2、對于某個社區(qū)i,它沒有相鄰社區(qū)針對情況BI,我們可以在這多個最緊密的相鄰社區(qū)中,任意選一個與社區(qū)i進行
I=I TT。針對情況B2,社區(qū)i將不會與任意一個當(dāng)前的其他社區(qū)合并。此外,在步驟B中,我們引入了合格社區(qū)的概念。我們稱擁有相鄰社區(qū)的社區(qū)為合格社區(qū),并且只有所述的合格社區(qū)才能與其最緊密的社區(qū)進行合并。其中步驟B完成后會得到一個新的社區(qū)集,步驟C根據(jù)這個新的社區(qū)集,將進行以下幾方面的工作Cl、初始化一個k' Xk'的矩陣M';C2、計算出該新的社區(qū)集中任意兩個社區(qū)間的緊密度值;C3、歸一化C2中計算出的緊密度值。其中,步驟Cl里,k'表示步驟B完成后得到的新的社區(qū)集中社區(qū)的個數(shù)。其中,步驟C2中,在更新的緊密度矩陣中的m' u時,如果i = j (此時m' u表示社區(qū)i與其自身的緊密度值),則將m' ,j置為O,這樣可以保證在合并時,不會將一個社區(qū)同這個社區(qū)本身進行合并。其中步驟C3是通過除以社區(qū)的大小(即該社區(qū)內(nèi)的節(jié)點數(shù))來歸一化算法中的緊密度值,這可以減少社區(qū)大小不一時帶來的偏差。為了達到上述目的,本發(fā)明還提供了基于社區(qū)緊密度的快速社區(qū)發(fā)現(xiàn)方法的具體實現(xiàn),包含以下步驟a、根據(jù)鄰接矩陣A,計算M矩陣;b、根據(jù)當(dāng)前的M矩陣,對于每個當(dāng)前社區(qū)i,獲得與其最緊密的相鄰社區(qū)j,并保存它們之間的緊密度值,同時還要記錄下社區(qū)i與其所有的相鄰社區(qū)間緊密度值的最大值和最小值,即記錄mcmax和mcmin ;C、如果mcmax彡[X G] *mcmin,轉(zhuǎn)步驟d,否則轉(zhuǎn)步驟e ; d、只合并那些緊密度值大于或等于[\ J^mcfflin的社區(qū);e、對于擁有最緊密相鄰社區(qū)的那些社區(qū),將這些社區(qū)與它們對應(yīng)的最緊密相鄰社區(qū)分別進行合并;f、如果滿足以下情況,轉(zhuǎn)步驟h,否則更新當(dāng)前的M矩陣,繼續(xù)步驟g:fl、發(fā)現(xiàn)的社區(qū)結(jié)構(gòu)不再變化;g、重復(fù)步驟b到步驟f ;h、保存當(dāng)前所發(fā)現(xiàn)的社區(qū)到Comm并返回。其中步驟a中的A代表待處理網(wǎng)絡(luò)相應(yīng)的鄰接矩陣。其中步驟b中,首先搜索社區(qū)i的相鄰社區(qū),如果與其相關(guān)的相鄰社區(qū)中,社區(qū)j與社區(qū)i之間的緊密度值mi j是最大的,并且其值大于等于[入g/2],則將Hiij記作me (i)。mcmax和mcmin分別是所記錄下的me⑴值中的最大值和最小值。其中步驟c中的入e指當(dāng)前圖中的邊稠密度,[AJ表示對X ^取整。其中步驟d中,當(dāng)社區(qū)間的緊密度值小于[Xj*mCminW,不進行社區(qū)合并。其中步驟h中的Co_代表最終劃分出的社區(qū)集合。在本發(fā)明所提供的技術(shù)方案中,通過采用一種緊密度矩陣來描述社區(qū)間的關(guān)系,更加有效地給出了節(jié)點間的緊密程度?;谠摼o密度矩陣來對網(wǎng)絡(luò)進行社區(qū)劃分時,不僅能夠有效地發(fā)現(xiàn)社區(qū),而且其時間開銷也很低(接近線性),使得本發(fā)明可以很好地應(yīng)用于大型社會網(wǎng)絡(luò)中。
圖I (a)是本發(fā)明中所驗證的真實社會網(wǎng)絡(luò)Zachary’s Karate俱樂部網(wǎng)絡(luò)的緊密度矩陣M的變化I (b)是本發(fā)明中所驗證的真實社會網(wǎng)絡(luò)Zachary’s Karate俱樂部網(wǎng)絡(luò)的劃分結(jié)果圖;圖2是本發(fā)明中所驗證的真實社會網(wǎng)絡(luò)Bottlenose海豚網(wǎng)的劃分結(jié)果圖;圖3是本發(fā)明中所驗證的真實社會網(wǎng)絡(luò)美國大學(xué)足球聯(lián)盟網(wǎng)絡(luò)的劃分結(jié)果圖;圖4是本發(fā)明中所驗證的真實社會網(wǎng)絡(luò)科學(xué)家協(xié)作網(wǎng)絡(luò)的所得社區(qū)大小的累積分布函數(shù)關(guān)系圖。
具體實施例方式本發(fā)明的核心思想是首先,初始化網(wǎng)絡(luò)中的各個節(jié)點間的緊密度值為節(jié)點間的權(quán)值。如果兩個節(jié)點i和j是鄰居節(jié)點,并且擁有公共的鄰居節(jié)點k,則i和j之間的緊密度就增加。這個增量跟i和j,i和k,以及j和k之間的權(quán)值有關(guān)。當(dāng)i和j有多個公共的鄰居節(jié)點時,對于每個公共的鄰居節(jié)點,增加一次i和j之間的緊密度值。最終得到一個緊密度矩陣M。初始狀態(tài)下,假定每個節(jié)點自己形成一個社區(qū)。然后根據(jù)得到的緊密度矩陣M,對每個現(xiàn)有的社區(qū),將其與自己緊密度值較高的社區(qū)進行合并。當(dāng)每個現(xiàn)有的社區(qū)均已與自己緊密度值高的社區(qū)合并,則完成一次合并。此時,根據(jù)同樣的原理,將每個新社區(qū)當(dāng)作一個節(jié)點,重新計算各個節(jié)點間的緊密度值,并用這些值來更新緊密度矩陣M以備下一次的合并。合并過程中,程序停止條件有以下兩種情況1)得到的社區(qū)結(jié)構(gòu)不再變化;或2)只剩下一個社區(qū)。該方法的復(fù)雜度僅為+ m/),其中m是網(wǎng)絡(luò)中的邊數(shù),f是網(wǎng)絡(luò)中節(jié)點的平均度數(shù),t是迭代的次數(shù)(根據(jù)實驗結(jié)果,合并的次數(shù)遠低于網(wǎng)絡(luò)節(jié)點數(shù),尤其對于大型網(wǎng)絡(luò),迭代次數(shù)比節(jié)點數(shù)低好幾個數(shù)量級)。 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面分別講述發(fā)明內(nèi)容部分的計算緊密度矩陣、合并社區(qū)和更新緊密度矩陣這三部分工作的具體實施細(xì)節(jié)。(I)計算緊密度矩陣給定一個無向圖G,有n個頂點和m條邊。它的鄰接矩陣A是一個nXn矩陣。其元素表節(jié)點i和j直接的關(guān)系。特別地,在無權(quán)圖中,如果i和j相鄰(即有邊連接)則au值為1,否則值為O。如果是加權(quán)圖,則指au的值為i和j之間的權(quán)值。M對角線上的元素值是未定義的,為了方便,這里設(shè)為O。針對情況Al,即當(dāng)無向圖G是無權(quán)網(wǎng)時,給定圖中節(jié)點i和節(jié)點j,如果它們是鄰接點(有邊相連的兩個點),則它們之間的緊密度值增加au,即I。當(dāng)i和j之間有一個共同的鄰接點k(稱為公共鄰接點),i和j之間的緊密度會再次增加I ;而當(dāng)i和j之間有多個公共鄰接點,i和j之間的緊密度值則增加相應(yīng)次。最終的數(shù)學(xué)表達式如下W.. = +1 +1 * |t(0 n r{j)\ = I + \t(J) n r{j)\其中,Hiij是M中元素經(jīng)計算后的值,m$是矩陣M在初始時的元素值。T⑴是頂點i的鄰接點的集合。Ixl是集合X中的元素個數(shù)。針對情況A2,即當(dāng)無向圖G是加權(quán)網(wǎng)時,同樣地,給定圖中節(jié)點i和j,它們是鄰接點,此時它們之間的緊密度值依然增加au。但是,當(dāng)i和j有公共鄰接點k時,i和j之間
的緊密度值將增加& *^aik*aJk,而不是au ;當(dāng)i和j之間公共鄰接點有多個時,i和j之間的緊密度值增加的值則為E {aij *ylaik*ajk)。最終的數(shù)學(xué)表達式如下
keT(i)nr(j)my=rr^+ay+ ^
ker(i)nT(j)
權(quán)利要求
1.一種復(fù)雜網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu)發(fā)現(xiàn)技術(shù),其特征在于,該技術(shù)基于一種緊密度矩陣,并且實現(xiàn)的復(fù)雜度接近線性。
2.根據(jù)權(quán)利要求I所述的社區(qū)結(jié)構(gòu)發(fā)現(xiàn)技術(shù),其特征在于,所述的緊密度矩陣中的元素記錄的是當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)下任意兩個社區(qū)之間的緊密度值。
3.根據(jù)權(quán)利要求I所述的社區(qū)結(jié)構(gòu)發(fā)現(xiàn)技術(shù),其特征在于,所述的技術(shù)實現(xiàn)的復(fù)雜度在最壞情況下為OCwf+ Wi),其中m為網(wǎng)絡(luò)中的總邊數(shù),萬是劃分出的社區(qū)的平均節(jié)點度,t代表該技術(shù)在實現(xiàn)過程中迭代的次數(shù)。
4.根據(jù)權(quán)利要求I中所述的社區(qū)結(jié)構(gòu)發(fā)現(xiàn)技術(shù),其特征在于,該技術(shù)包含三方面的工作,分別為計算緊密度矩陣,合并社區(qū)以及更新緊密度矩陣。
5.根據(jù)權(quán)利要求4中所述的計算緊密度矩陣,其特征在于,在計算過程中對于如下兩種情況,計算的方法是不同的 A、當(dāng)前網(wǎng)絡(luò)是無權(quán)網(wǎng) B、當(dāng)前網(wǎng)絡(luò)是加權(quán)網(wǎng)。
6.根據(jù)權(quán)利要求5中所述的計算緊密度矩陣,其特征在于,在情況A下計算緊密度矩陣時,包括如下情況 Al、當(dāng)節(jié)點i和節(jié)點j之間有一個共同的鄰接點k(稱為公共鄰接點)時,則節(jié)點i和節(jié)點j之間的緊密度會增加I A2、當(dāng)節(jié)點i和節(jié)點j之間有多個公共鄰接點時,則節(jié)點i和節(jié)點j之間的緊密度值則增加相應(yīng)次。
7.根據(jù)權(quán)利要求5中所述的計算緊密度矩陣,其特征在于,在情況B下計算緊密度矩陣時,包括如下情況 BI、當(dāng)節(jié)點i和節(jié)點j有公共鄰接點k時,則節(jié)點i和節(jié)點j之間的緊密度值將增加
8.根據(jù)權(quán)利要求4中所述的合并社區(qū),其特征在于,該工作通過累加即將合并的社區(qū)之間的緊密度值來更新緊密度矩陣M,并且使用新的M矩陣來重復(fù)這個合并過程。
9.根據(jù)權(quán)利要求4中所述的更新緊密度矩陣,其特征在于,假定在社區(qū)合并之前有k個社區(qū),其相應(yīng)的緊密度矩陣為kXk維的矩陣Mkxk,而合并后的社區(qū)個數(shù)為k',則該工作包含以下步驟 a、首先,初始化一個k'Xki的矩陣Mi b、然后計算合并前的社區(qū)集合中任意兩個社區(qū)間的緊密度值; C、再就是歸一化緊密度值,并記入M'。
10.根據(jù)權(quán)利要求9中所述步驟,最后得到的M'就是M被更新后的矩陣。
全文摘要
本發(fā)明公開了一種復(fù)雜網(wǎng)絡(luò)中發(fā)現(xiàn)社區(qū)結(jié)構(gòu)的技術(shù)——基于社區(qū)緊密度的快速社區(qū)發(fā)現(xiàn)方法,其包括計算緊密度矩陣、合并社區(qū)和更新緊密度矩陣三部分內(nèi)容。其中緊密度矩陣中的元素記錄的是任意兩個社區(qū)之間的緊密度值,并且緊密度矩陣能更好的顯示網(wǎng)絡(luò)中節(jié)點之間的關(guān)系。本發(fā)明的特征在于其解決了現(xiàn)有社區(qū)發(fā)現(xiàn)方法的“大計算量,高復(fù)雜度而導(dǎo)致的難以應(yīng)用在大型社會網(wǎng)絡(luò)中”的問題。本發(fā)明中提出的方法不僅能夠有效地發(fā)現(xiàn)社區(qū),而且其時間開銷也很低——接近線性。本發(fā)明還公開了所述的基于社區(qū)緊密度的快速發(fā)現(xiàn)方法的具體部署和實現(xiàn)方法。采用本發(fā)明所提供的技術(shù)方案,可以很好地應(yīng)用于大型社會網(wǎng)絡(luò)中。
文檔編號G06F17/30GK102779142SQ20111017777
公開日2012年11月14日 申請日期2011年6月28日 優(yōu)先權(quán)日2011年6月28日
發(fā)明者吳秀龍, 孟堅, 徐超, 李正平, 藺智挺, 譚守標(biāo), 陳軍寧 申請人:安徽大學(xué)