Construct adjacency list from an adjacency matrix

10 views (last 30 days)
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.

Answers (1)

Azzi Abdelmalek
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
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.

Sign in to comment.

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!