複雜網絡節點重要性算法之局部中心性

介數中心性和接近中心性指標,  雖然具有較好的刻畫節點重要性的能力,  但計算複雜度太高,  難以在大規模網絡上使用.  爲了權衡算法的效率和效果,  Chen 等人提出了一種基於半局部信息的節點重要性排序方法, 簡稱半局部中心性(semi-local  centrality).  首先定義N(w)爲節點Vw的兩層鄰居度,其值等於從 Vw出發 2步內可到達的鄰居的數目,  然後定義

其中 表示節點 vj的一階鄰居節點的集合.  最終節點 vi的局部中心性定義爲  

可見,  半局部中心性涉及了節點的四階鄰居信息. 

###############################################################
#CreatedDt:20170603
#Author:Scc
#Function: Chen等 考慮最近鄰居節點和次鄰居節點的信息  
#一種多級鄰居節點的重要性排序   局部中心性LC 
#參數:A--鄰接矩陣,n--網絡節點個數;返回:LC--局部中心性
###############################################################
calLC<-function(A,n){  
    #計算度    
    D<-apply(A,1,sum)  #即最近鄰居節點和次鄰居節點NeiborN  
    NeiborN<-rep(0,n)   
    #library(dplyr)  
    for(i in 1:n){   
        Neibor<-which(A[i,]==1) #最近鄰居節點下標    
        for(k in Neibor){      
            Neibor2<-which(A[k,]==1) #最近鄰居節點的鄰居節點Neibor2     
            Neibor<-union(Neibor,Neibor2) #合併得到鄰居節點和次鄰居節點和當前節點    
        }    
        NeiborN[i]<-length(Neibor)-1;#計算當前節點的鄰居節點和次鄰居節點個數(去掉當前節點)  
    }  
    #計算鄰居節點的最近鄰居節點和次鄰居節點個數之和 
    Q<-rep(0,n)   
    for(i in 1:n){    
        Q[i]<-sum(NeiborN[which(A[i,]==1)]);  
    }  
    #計算局部中心性  
    LC<-rep(0,n)  for(i in 1:n){
        LC[i]<-sum(Q[which(A[i,]==1)]);  
    }  
    return (LC);
}

參考:

Duanbing Chen, Linyuan Lü, Ming-Sheng Shang, et al. Identifying influential nodes in complex networks[J]. Physica A: Statistical Mechanics and its Applications, 2012, 391(4):1777-1787.

任曉龍, 呂琳媛. 網絡重要節點排序方法綜述[J]. 科學通報, 2014(13):1175-1197.

http://www.xiaowangyun.com/wyblog/detail/?id=121

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章