2013-02-04 128 views
2

我想在MATLAB中創建一個隨機鄰接矩陣,使得權重的總和等於邊的數量。最後找到拉普拉斯矩陣使用在MATLAB中生成隨機加權鄰接矩陣

L = diag(sum(A)) - A 

然後對其進行圖示。有沒有辦法做到這一點? 在此先感謝。

+3

聽起來像家庭作業。你究竟在掙扎着什麼?鄰接矩陣的創建,拉普拉斯矩陣的計算還是圖形? – ARF

+0

有向圖?無向圖?節點的程度?邊數? – Shai

+0

感謝您的回覆。 @阿里克,它以某種方式讓我寫一個學期的項目。我實際上不知道如何創建一個隨機加權的鄰接矩陣,使得總權重等於圖中邊的數量。那麼他們中的一些人的體重可能會比其他人小一些。其餘的將很容易找到拉普拉斯矩陣,圖,...。假設它是無向的,我們可以通過知道鄰接矩陣的一行中有多少個非零項來找到度節點。對我來說主要問題是我上面提到的。 – Royeh

回答

6

無向圖的鄰接矩陣只是一個方形對稱矩陣。
如果您對節點僅在權重的程度沒有約束比我建議像

n ; % number of nodes in the graph 
density = 1e-3; % a rough estimate of the amount of edges  
A = sprand(n, n, density); % generate adjacency matrix at random 
% normalize weights to sum to num of edges 
A = tril(A, -1);  
A = spfun(@(x) x./nnz(A), A);  
% make it symmetric (for undirected graph) 
A = A + A.'; 

我在此代碼中使用:

  • sprand來生成隨機稀疏矩陣。
  • spfun幫助標準化邊緣權重。
  • tril只提取一半的矩陣。