199 views (last 30 days)

Show older comments

Hi I am interested in creating random undirected graph with n vertices and with random connections. This generated graph has to display its adjacency connections in a nxn matrix.I have tried this code but it is not working for my requirement.

n=input('No. of vertices')

c=input('Random connections')

MM=0; %arbitrary starting value

all_nums=1:n;

while MM ~=n*c

M = sparse([],[],[],n,n,n*c);

ctin = zeros(1,n);

for ii=1:n

noconnect=ctin>=c;

noconnect(ii)=true;

rem_nums = all_nums(~noconnect); % remaining numbers

rp=randperm(n-sum(noconnect));

rp = rem_nums(rp); % remaining numbers, hussled

if numel(rp)<c

break

else

r=rp(1:c);

end

M(ii,r)=1;

ctin(r)=ctin(r)+1;

end

MM=sum(ctin);

end

end

A= adjacency(M)

Walter Roberson
on 1 Aug 2016

adj = spalloc(n, n, E);

idx = randperm(n * n, E);

adj(idx) = 1;

adj = min( adj + adj.', 1);

Walter Roberson
on 8 May 2021

First generate an appropriate connected graph for the Routers and switches only.

Then generate a bunch of other points, and calculate their nearest neighbour among the routers, and connect them to that neighbour.

Luis De Medeiros
on 29 Jul 2016

Edited: Luis De Medeiros
on 29 Jul 2016

You can create an adjacency matrix with random 1's and 0's by doing the following:

G = round(rand(n));

G = triu(G) + triu(G,1)';

G = G - diag(diag(G));

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!