https://github.com/PerezOrtegaJ/Neural_Ensemble_Analysis
Tip revision: 9d37fd031dfbdb4eb69faa449d0a6416267a7d4f authored by Jesús Pérez on 28 July 2020, 20:36:58 UTC
Update README.md
Update README.md
Tip revision: 9d37fd0
betweenness_bin.m
function BC=betweenness_bin(G)
%BETWEENNESS_BIN Node betweenness centrality
%
% BC = betweenness_bin(A);
%
% Node betweenness centrality is the fraction of all shortest paths in
% the network that contain a given node. Nodes with high values of
% betweenness centrality participate in a large number of shortest paths.
%
% Input: A, binary (directed/undirected) connection matrix.
%
% Output: BC, node betweenness centrality vector.
%
% Note: Betweenness centrality may be normalised to the range [0,1] as
% BC/[(N-1)(N-2)], where N is the number of nodes in the network.
%
% Reference: Kintali (2008) arXiv:0809.1906v2 [cs.DS]
% (generalization to directed and disconnected graphs)
%
%
% Mika Rubinov, UNSW/U Cambridge, 2007-2012
n=length(G); %number of nodes
I=eye(n)~=0; %logical identity matrix
d=1; %path length
NPd=G; %number of paths of length |d|
NSPd=NPd; %number of shortest paths of length |d|
NSP=NSPd; NSP(I)=1; %number of shortest paths of any length
L=NSPd; L(I)=1; %length of shortest paths
%calculate NSP and L
while find(NSPd,1)
d=d+1;
NPd=NPd*G;
NSPd=NPd.*(L==0);
NSP=NSP+NSPd;
L=L+d.*(NSPd~=0);
end
L(~L)=inf; L(I)=0; %L for disconnected vertices is inf
NSP(~NSP)=1; %NSP for disconnected vertices is 1
Gt=G.';
DP=zeros(n); %vertex on vertex dependency
diam=d-1; %graph diameter
%calculate DP
for d=diam:-1:2
DPd1=(((L==d).*(1+DP)./NSP)*Gt).*((L==(d-1)).*NSP);
DP=DP + DPd1; %DPd1: dependencies on vertices |d-1| from source
end
BC=sum(DP,1); %compute betweenness