FormationControlSimulation/SOURCE/networks-toolbox/randomGraph.m

45 lines
1.1 KiB
Matlab
Raw Normal View History

2019-06-17 14:31:50 +07:00
% Random graph construction routine.
% Note 1: Default is Erdos-Renyi graph G(n,0.5)
% Note 2: Generates undirected, simple graphs only
%
% INPUTS: N - number of nodes
% p - probability, 0<=p<=1
% E - fixed number of edges; if specified, p is irrelevant
% OUTPUTS: adj - adjacency matrix of generated graph (symmetric), nxn
%
% Other routines used: numEdges.m
% GB: last updated, Oct 20, 2012
function adj = randomGraph(n,p,E)
adj=zeros(n); % initialize adjacency matrix
switch nargin % number of function arguments
case 1 % just the number of nodes, n
% 0.5 - default probability of attachment
for i=1:n
for j=i+1:n
if rand<=0.5; adj(i,j)=1; adj(j,i)=1; end
end
end
case 2 % the number of nodes and the probability of attachment, n, p
for i=1:n
for j=i+1:n
if rand<=p; adj(i,j)=1; adj(j,i)=1; end
end
end
case 3 % fixed number of nodes and edges, n, E
while numEdges(adj) < E
i=randi(n); j=randi(n); % pick two random nodes
if i==j || adj(i,j)>0; continue; end % do not allow self-loops or double edges
adj(i,j)=adj(i,j)+1; adj(j,i)=adj(i,j);
end
end