我想生成具有N个节点的无向图的邻接矩阵。 特别是,该图应具有固定的度数(每个节点连接到固定数量的节点d)。
如果设定d = N-1,则解决方案很简单:
A = ones(N) - eye(N);
我如何概括任何d?
ADD:
这是一个解决方案(感谢Oli Charlesworth):
function A = fixedDegreeGraph(N, d)
A = zeros(N);
for i=1:N
b = i;
f = i;
for k=1:floor(d/2)
f = f + 1;
if (f == N + 1)
f = 1;
end
A(i, f) = 1;
A(f, i) = 1;
b = b - 1;
if (b == 0)
b = N;
end
A(i, b) = 1;
A(b, i) = 1;
end
end
答案 0 :(得分:1)
对于偶数d
,这是一种可视化方法的方法。
(d/2)
左手邻居,以及它的直接(d/2)
右手邻居。如何将其转换为邻接矩阵应该是相当明显的(提示:它将是circulant matrix,因此您可能会发现toeplitz
函数很有用。)
将此扩展为奇数d
并不难......(尽管注意there is no solution if both N
and d
are odd)