Connected components in a graph

M=[1 2;2 5;3 4;4 6;6 7;6 8;6 9;6 10];
G=graph(M(:,1),M(:,2))
[bins,binsizes]=conncomp(G);
When I use the built in function conncomp, MATLAB always assumes that first component of graph G is the one which node 1 belongs to.
The output bins in the given example is:
bins=[1 1 2 2 1 2 2 2 2 2] How can I make the first component of my graph is where node 6 (for example) belongs to?
Your help would be appreciated.
Thanks!

 Respuesta aceptada

Matt J
Matt J el 14 de Dic. de 2020
Editada: Matt J el 14 de Dic. de 2020
M=[1 2;2 5;3 4;4 6;6 7;6 8;6 9;6 10];
G=graph(M(:,1),M(:,2));
[bins,binsizes]=conncomp(G);
idx=[2,1];
binsizes=binsizes(idx);
bins=idx(bins)
bins = 1×10
2 2 1 1 2 1 1 1 1 1

3 comentarios

Asaf McRock
Asaf McRock el 15 de Dic. de 2020
Thank you very much, Matt!
This is so clever. But I wonder if it works for higher number of components.
Could your trick be generalized? I'm new to programming, so excuse my ignorance.
Matt J
Matt J el 15 de Dic. de 2020
You would just need to change idx to an appropriate permutation of 1:N, e.g.,
idx=[3,1,2,4]
Asaf McRock
Asaf McRock el 15 de Dic. de 2020
Awesome, got it.
Thank you again.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 14 de Dic. de 2020

Comentada:

el 15 de Dic. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by