MATLAB Answers

How to generate random graph of n vertices with random connections in matlab

조회 수: 206(최근 30일)
SIVAKUMAR V
SIVAKUMAR V 2016년 7월 29일
댓글: Walter Roberson 2021년 5월 8일
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)

답변(3개)

Walter Roberson
Walter Roberson 2016년 8월 1일
adj = spalloc(n, n, E);
idx = randperm(n * n, E);
adj(idx) = 1;
adj = min( adj + adj.', 1);
  댓글 수: 12
Walter Roberson
Walter Roberson 2021년 5월 8일
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
Luis De Medeiros 2016년 7월 29일
편집: Luis De Medeiros 2016년 7월 29일
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));
  댓글 수: 5
SIVAKUMAR V
SIVAKUMAR V 2016년 8월 1일
Yes E represents number of links across the graph. My expectation is need to generate a sensor network graph in matlab.

댓글을 달려면 로그인하십시오.


Community Treasure Hunt

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

Start Hunting!

Translated by