Path between 2 nodes in a graph

9 vues (au cours des 30 derniers jours)
Hari
Hari le 28 Sep 2020
How to check if a path exists between two nodes in a graph?

Réponse acceptée

Michael Croucher
Michael Croucher le 28 Sep 2020
Modifié(e) : Michael Croucher le 28 Sep 2020
One way to proceed would be to use concomp.
Take this example graph
s = [1 2 2 3 3 3 4 5 5 5 8 8];
t = [2 3 4 1 4 5 5 3 6 7 9 10];
G = graph(s,t);
plot(G,'Layout','layered')
>> components=conncomp(G)
ans =
1 1 1 1 1 1 1 2 2 2
We can see that there are two connected components. To see it nodes 4 and 7 are connected (for example), just see if they are members of the same component.
components(4)==components(7)
ans =
logical
1
  2 commentaires
Hari
Hari le 4 Oct 2020
This did work for me. Thanks
Christine Tobler
Christine Tobler le 5 Oct 2020
Note this works well for an undirected graph, but for directed graphs it would be more complicated: In that case, you'd want to look into digraph/transclosure to get connection between every pair of nodes.

Connectez-vous pour commenter.

Plus de réponses (1)

Christine Tobler
Christine Tobler le 28 Sep 2020
Compute a path between the nodes, then check if the result is empty (this is returned by shortestpath if no path exists):
path = shortestpath(G, firstNode, secondNode)
pathExists = ~isempty(path);
  2 commentaires
Hari
Hari le 4 Oct 2020
Will this be computationally intensive if I need to check paths between every node pair (say there 100 nodes)?
Bruno Luong
Bruno Luong le 4 Oct 2020
Read Michael's answer that suggests using concomp

Connectez-vous pour commenter.

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