constructing a bipartite graph from 0/1 matrix

38 visualizaciones (últimos 30 días)
R yan
R yan el 6 de Abr. de 2016
Comentada: kalaiyarasan V el 7 de Dic. de 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

Respuesta aceptada

Mike Garrity
Mike Garrity el 6 de Abr. de 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 comentarios
Josh Carmichael
Josh Carmichael el 4 de Dic. de 2020
Mike already decomposed the graph, it was the big_a command.
Chetan Annam
Chetan Annam el 14 de Jul. de 2021
Hi,
I don't understand how this h.XData, h.YData works. Please help me.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Graph and Network Algorithms en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by