matlab生成固定度无向图

时间:2013-03-02 12:04:15

标签: matlab graph

我想生成具有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

1 个答案:

答案 0 :(得分:1)

对于偶数d,这是一种可视化方法的方法。

  • 将顶点排列成圆圈。
  • 每个顶点都连接到它的直接(d/2)左手邻居,以及它的直接(d/2)右手邻居。

如何将其转换为邻接矩阵应该是相当明显的(提示:它将是circulant matrix,因此您可能会发现toeplitz函数很有用。)

将此扩展为奇数d并不难......(尽管注意there is no solution if both N and d are odd