Generating a random signed graph using MATLAB
Mostrar comentarios más antiguos
I want to generate a random signed graph and display its adjancency matrix and plot the graph. Then I want to define 2 network games between the any 2 nodes connected by positive and negative edges and check if it is converging to pure strategy nash equilibrium using a BR update rule.
Respuestas (1)
nodes = 15;
num_edge = 27;
cost_range = [-9 9];
st = zeros(0,2);
while size(st,1) < num_edge
%no self-loops
cs = randi(nodes-1); ct = cs + randi(nodes-cs);
if ~ismember([cs, ct], st, 'rows')
st(end+1,:) = [cs, ct];
end
end
w = randi(cost_range, num_edge, 1);
G = graph(st(:,1), st(:,2), w, nodes)
plot(G, 'EdgeLabel', G.Edges.Weight)
adj = full(adjacency(G, 'weighted'))
3 comentarios
Walter Roberson
el 7 de En. de 2022
Note: the above code makes no attempt to enforce that all nodes will be connected to another node, or to ensure that the graph has no isolated cycles.
DINESH PATRA
el 7 de En. de 2022
Walter Roberson
el 7 de En. de 2022
What is the difference for your purposes between an edge having a "weight" and an edge being "positive" or "negative" ?
If you do not need a particular value of negative or positive, just to know whether it is negative or positive, then you could potentially use weights of -1 and +1.
Unless, that is, you need to use shortestpath() -- but in that case you could use the 'unweighted' option.
Categorías
Más información sobre Graph and Network Algorithms en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
