Construct adjacency list from an adjacency matrix

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.

답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2014년 3월 4일
A =[0 1 1;1 0 0; 1 0 0]
B=cellfun(@(x) find(x),num2cell(A,2),'un',0)
celldisp(B)

댓글 수: 1

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.

댓글을 달려면 로그인하십시오.

카테고리

질문:

2014년 3월 4일

댓글:

2021년 5월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by