特點: 分為兩個大小已知的社團
kernighan-lin演算法,2023年提出,試探優化法,基於一種採用貪婪演算法原理講網路劃分為兩個大小已知的社團的二分法,七級本思想是在網路劃分時引入乙個增益函式q,通過交換節點對,使得q值最大。
q=為兩個社團內部的邊數-兩個社團之間的邊數
特點:一次分成兩個,僅適用於結構明顯的網路
利用laplace矩陣 特徵向量什麼的不懂
當網路實際情況近似於兩個社團時,譜平分法可以得到非常好的效果,但是如果網路不滿足這個條件,效果不能充分展現。
譜平分法最大的曲線就是它每次只能將網路平分,如果要將乙個網路分成兩個以上的社團,就必須對子社團多次重複該演算法。譜平分法對於社團結構非常明顯的網路十分有效,但是當網路的社團結構不是很明顯時,往往並不能得到理想的結構。
特點:不事先指定社團數 用於社團結構非常明顯的網路演算法講解
該演算法認為,乙個社團可以看作是由多個相互連通的「小的全耦合網路」的集合,這些全耦合網路被稱為clique派系,而k-clique表示該全耦合網路的節點數目為k。
乙個無向圖的乙個派系是指:這個無向圖的頂點集有這樣乙個子頂點集,子頂點集裡的任意兩個頂點都有一條邊相連(也即子頂點集中的任意兩個頂點都是相鄰的),那麼這個子頂點集及其邊構成的圖就是這個無向圖的乙個派系。如果這個派系的頂點有k個,就稱這個派系為k-派系(k-clique)。
其實也就是乙個無向圖里的乙個子完全圖就是這個無向圖的乙個派系。
由於k是個輸入引數值,從而k的取值將會影響cpm演算法的最終社群發現結果,當k取值越小社群將會越大,且社群結構為稀疏。但是實驗證明k的取值影響不是很大,一般值為4到6。然而,由於該演算法是基於完全子圖,因此比較適用於完全子圖比較多的網路,即邊密集的網路,對於稀疏網路效率將會很低,且該演算法還無法分配完全子圖外的頂點。
eg乙個案例 **+視覺化
特點:不指定社團數目 複雜度高 能很好的識別社團
採用分割法,依據邊不屬於社團的程度,逐步把不屬於任何社團的邊(即社團之間相連線的邊)刪除,直到把所有邊都刪掉。
邊介數:網路中經過每條邊的最短路徑的數目,以該引數作為衡量每條邊在社團見的連通程度和不屬於任何社團的程度。(邊介數高==社團間的邊,而不是社團內的邊)
gn演算法步驟:
(1)計算網路中所有邊的邊介數
(2)找到結束最高的邊並刪除,並重新計算邊介數
(3)重複第二步,直到所有邊都被移除
這樣gn的過程對應著一顆自頂向下構建的層次樹。在層次樹中選擇乙個合適的層次分割即可。
特點:依賴網路中原始三角形的數量 比gn複雜度低
對gn的優化 gn需要全域性計算 此方法僅需要計算網路區域性結構的邊聚類係數
邊聚類係數vi 和 vj 兩個節點的邊eij,eij的聚類係數為實際包括eij的三角形數目與可能包括eij的三角形數目之比
(1)確定研究多邊形的型別
(2)計算網路中存在的每條邊的邊聚類係數,並斷開聚類係數最小的邊
重複2直至所有邊都被斷開位置。
特點:在gn演算法的基礎上 基於貪婪演算法思想 從每個節點各佔據乙個社團開始,沿著使模組度增加最大或者減少最小的方向不斷合併社團,期望得到最大的網路模組度,從而得到社團劃分結果。
演算法簡述:演算法分為重複迭代的兩個部分。
第一部分:
假設網路中有n個節點,首先我們給每個節點分配乙個社群,所以初始階段有多少個節點就有多少個社群。然後,對於網路中每個節點i,我們考慮他所有的鄰居節點j,我們評估當把節點i從它所在的社群移動到其鄰居j所在的社群時,模組度的增量變化,我們把節點i移動到使模組度增加最大(非負)的節點j所在的社群。如果所有計算出來的增益都不是正數,則將該節點仍處於原社群中。該過程對所有的節點重複並且按順序應用,直到沒有節點移動,則第乙個過程停止,也就是任何乙個節點的移動都不會導致模組度的增加。從該過程可以肯定,有些節點會被不止一次的考慮到。當然節點考慮順序對演算法最後的輸出也是有影響的,但是最後對最後所劃分的社群的模組度影響不大。但是節點的排序順序是可以影響演算法的執行時間的。
第二部分:
用第一部分所劃分出來的社群當作節點組成乙個新的網路。新節點之間的邊的權重為兩個新節點之間(其實是兩個社群之間)原本的權重之和。處在同乙個社群中的節點之間的邊導致新網路中該新節點有自環的邊。然後對於構建的新網路使用第一部分的方法進行迭代。當網路不再改變也就是出現了最大模組度的時候停止迭代。
以上根據書《複雜網路演算法與應用》以及論壇裡的帖子,部分可能為標註出處 侵刪
整數劃分演算法原理與實現
整數劃分問題是將乙個正整數n拆成一組數連加並等於n的形式,且這組數中的最大加數不大於n。如6的整數劃分為 65 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1 1 1 1 1 1 1 1 共11種。下面介紹一種通過遞迴方法得到乙個正整數的劃分數...
整數劃分演算法原理與實現
整數劃分問題是將乙個正整數n拆成一組數連加並等於n的形式,且這組數中的最大加數不大於n。如6的整數劃分為 6 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1 1 1 1 1 1 1 1 共11種。下面介紹一種通過遞迴方法得到乙個正整數的劃分...
整數劃分演算法原理與實現
整數劃分問題是將乙個正整數n拆成一組數連加並等於n的形式,且這組數中的最大加數不大於n。如6的整數劃分為 6 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1 1 1 1 1 1 1 1 共11種。下面介紹一種通過遞迴方法得到乙個正整數的劃分...