如何获得带权重的邻接矩阵?

How to get an adjacency matrix with weights?

如何得到带权重的邻接矩阵?

假设我有

s=[1 1 2 2 2 3 3 4 4 4 5 5 6 7];

t=[2 3 4 5 3 5 6 5 7 8 6 8 7 8];

w=[3 5 4 7 4 9 8 3 11 8 3 9 8 7];

G=digraph(s,t,w)

应该是用这个创建的

A = adjacency(G,'weighted')

但标记了一个错误

Error using digraph/adjacency Too many input arguments.

当我键入 A = adjacency(G) 时,将所有成本设置为 1

为什么?

adjacency 只接受 1 个输入参数,这就是您收到该错误的原因。该函数仅设计为 return 值 0 或 1。

您可以从下面获取加权邻接矩阵,该矩阵取自 adjacency 函数的 MATLAB 文档。

nn = numnodes(G);
[s,t] = findedge(G);
A = sparse(s,t,G.Edges.Weight,nn,nn)

或者,您可以在不使用图形对象的情况下构造加权邻接矩阵。

nn = max([s, t]);
A = zeros(nn);
for i = 1:length(s)
  A(s(i), t(i)) = w(i);
end