MATLAB Answers

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

조회 수: 206(최근 30일)
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 2016년 8월 1일
adj = spalloc(n, n, E);
idx = randperm(n * n, E);
adj(idx) = 1;
adj = min( adj + adj.', 1);
##### 댓글 수: 12표시숨기기 이전 댓글 수: 11
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 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표시숨기기 이전 댓글 수: 4
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.

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

Steven Lord 2021년 5월 7일
Take a look at the sprand and sprandsym functions.

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

### Community Treasure Hunt

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

Start Hunting!