FormationControlSimulation/SOURCE/networks-toolbox/sortNodesByMaxNeighborDegree.m

26 lines
828 B
Matlab
Raw Normal View History

2019-06-17 14:31:50 +07:00
% Sort nodes by degree, and when there's equality, by maximum neighbor degree
% Ideas from Guo, Chen, Zhou, "Fingerprint for Network Topologies"
%
% INPUTS: adjacency matrix, 0s and 1s, nxn
% OUTPUTS: sorted (decreasing) sequence of nodal indices (nx1)
%
% Note: Works for undirected graphs only.
% Other routines used: degrees.m, kneighbors.m
% GB: last updated, Nov 24, 2014
function I=sortNodesByMaxNeighborDegree(adj)
[deg,~,~]=degrees(adj); % compute all degrees, use "deg" assuming symmetry
degmat=zeros(size(adj,1),2); % a nx2 matrix
for x=1:size(adj,1) % across all nodes
degmat(x,1)=deg(x);
if deg(x)==0; degmat(x,2)=0; continue; end
nei_inds=kneighbors(adj,x,1);
degmat(x,2)=max(deg(nei_inds));
end
[sortmat,I]=sortrows(degmat); % increasing sorting
I=I(end:-1:1); % decreasing sorting