How to generate a RANDOM SIMPLE GRAPH using MATLAB ?
20 views (last 30 days)
Show older comments
I want to to have an adjancecny matrix of a simple graph (i.e. no self loops and no multiple edges between vertices).
Code should take number of vertices and number of edges as input and generate an adjancecny matrix for a graph where
edges are chosen randomly.
0 Comments
Answers (1)
Paras Gupta
on 28 Jun 2022
Hi,
The following code illustrates how you can create a function to generate an adjacency matrix for a random simple graph with 'n' vertices and 'e' edges without any self-loops or multi-edges.
n = 7;
e = 15;
adjMatrix = randomSimpleGraph(n, e);
disp(adjMatrix)
function adjMatrix = randomSimpleGraph(n, e)
% A square matrix (nxn) with all elements (=1) except diagonal elements (=0)
A = ones(n) - eye(n);
% Create a graph from the above adjacency matrix
temp = graph(A~=0);
% Select a random permutation of 'e' edges from the total edges of the above matrix
edges = randperm(numedges(temp), e);
% Create a graph from the random permutation of edges
G = graph(temp.Edges(edges, :));
% Get the adjacency matrix
A = adjacency(G);
% Convert the matrix from sparse to full storage
adjMatrix = full(A);
end
You can refer to the documentation for ones, eye, graph, randperm, adjacency, and full for more details on the respective functions used in the above code.
Hope this helps!
0 Comments
See Also
Categories
Find more on Graph and Network Algorithms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!