find cycle in array
이전 댓글 표시
I have a M M=[1,2 ;1,5; 2,4;2,5;4,5; 4,9;5,6;6,11;9,10;10,11] I want to find a loop in this array. I want this answer A={[1,2,5],[2,4,5],[4,5,6,9,10,11]}
댓글 수: 7
Guillaume
2018년 10월 22일
I'm assuming that your M represents the edges of a graph. Don't you think it's essential information that you should have mentioned?
You can plot your graph with:
M = [1,2 ;1,5; 2,4;2,5;4,5; 4,9;5,6;6,11;9,10;10,11]
G = graph(M(:, 1), M(:, 2));
plot(G)
which outputs

Why are loops
[1 2 4 5]
[2 5 6 11 10 9 4]
etc.
not valid outputs?
Guillaume
2018년 10월 22일
Yes, but [1 2 4 5] is also a loop. So is [1 2 4 9 10 11 6 5]. Why are these not included in your list?
Sim
2019년 10월 7일
Hi Naime! I have your exact problem... Did you find any solution to share ?
Yes, thank you.. I tried what you suggested:
[1] Count all cycles in simple undirected graph version 1.2.0.0 (5.43 KB) by Jeff Howbert
[2] Count Loops in a Graph version 1.1.0.0 (167 KB) by Joseph Kirk
Unfortunately, both solutions [1] and [2] were not working for my case... but I understood more about the problem and the way to describe it! Thanks a lot, very helpful FileExchange submissions!
Just for information, the solution I was looking for was kindly provided by Matt J here:
Can Chen
2020년 6월 5일
Hi Na, I work at MathWorks on graphs. If you have a few minutes, I would very much appreciate hearing more about your workflow using cycles. Would you please contact me directly?
채택된 답변
추가 답변 (2개)
KSSV
2018년 10월 22일
M=[1,2 ;1,5; 2,4;2,5;4,5; 4,9;5,6;6,11;9,10;10,11] ;
A={[1,2,5],[2,4,5],[4,5,6,9,10,11]} ;
[c,ia,ib] = unique(M(:,1)) ;
N = length(c) ;
B = cell(N,1) ;
for i = 1:length(c)
T = M(ib==i,:) ;
B{i} = unique(T(:)) ;
end
Guillaume
2018년 10월 22일
0 개 추천
There are no built-in algorithms in matlab to find cycles in graphs (undirected or directed). You'll either have to write your own, eg. using DFS or BFS (both DFS and BFS are implemented in matlab) or some other algorithm that you can find using your favorite search engine, or you'll have to use one of the submissions in the FileExchange ( [1], [2], and probably more)
카테고리
도움말 센터 및 File Exchange에서 Undirected Graphs에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
