constructing a bipartite graph from 0/1 matrix

40 vues (au cours des 30 derniers jours)
R yan
R yan le 6 Avr 2016
Commenté : kalaiyarasan V le 7 Déc 2022
hi,
I have a 0/1 matrix H of size m by n. I want to create a bipartite graph G such that:
G has m+n vertices. One partition of G contains m vertices (corresponding to rows). Another partition contains n vertices (corresponding to columns). There will be an edge between i(from partition 1) and j (from partition 2) if H(i,j)=1 . Please suggest some approach. thanks

Réponse acceptée

Mike Garrity
Mike Garrity le 6 Avr 2016
Perhaps something like this?
% Make a random MxN adjacency matrix
m = 3
n = 5
a = rand(m,n)>.25;
% Expand out to symmetric (M+N)x(M+N) matrix
big_a = [zeros(m,m), a;
a', zeros(n,n)];
g = graph(big_a);
% Plot
h = plot(g);
% Make it pretty
h.XData(1:m) = 1;
h.XData((m+1):end) = 2;
h.YData(1:m) = linspace(0,1,m);
h.YData((m+1):end) = linspace(0,1,n);
  3 commentaires
Josh Carmichael
Josh Carmichael le 4 Déc 2020
Mike already decomposed the graph, it was the big_a command.
Chetan Annam
Chetan Annam le 14 Juil 2021
Hi,
I don't understand how this h.XData, h.YData works. Please help me.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Graph and Network Algorithms dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by