Construct adjacency list from an adjacency matrix
10 views (last 30 days)
Show older comments
I have an adjacency matrix :-
E.g A =[0 1 1;1 0 0; 1 0 0];
output :
2 3
1
1
I want to create an adjacency list from this matrix.
0 Comments
Answers (1)
Azzi Abdelmalek
on 4 Mar 2014
A =[0 1 1;1 0 0; 1 0 0]
B=cellfun(@(x) find(x),num2cell(A,2),'un',0)
celldisp(B)
1 Comment
Alec Jacobson
on 17 May 2021
This will be very slow for large graphs even if your adjacency matrix A is sparse: num2cell effectively creates a dense matrix.
As a drop-in replacement you could use:
B = arrayfun(@(i) find(A(:,i))',1:size(A,2),'UniformOutput',false)';
However, depending on how you're using this adjacency list it might be better to just use find(A(:,i) any time you need i's neighbors: the compressed column storage of matlab's sparse matrices is tantamount to storing an adjacency list anyway.
See Also
Categories
Find more on Graph and Network Algorithms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!