【问题标题】:matlab generate fixed degree undirected graphmatlab生成固定度无向图
【发布时间】:2013-06-03 16:23:56
【问题描述】:

我想生成一个有 N 个节点的无向​​图的邻接矩阵。 特别是,这个图应该有一个固定的度数(每个节点都连接到固定数量的节点d)。

如果一个集合 d = N-1,则解很简单:

A = ones(N) - eye(N);

我如何将它概括为任何 d?

添加:

这是一个解决方案(感谢 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

【问题讨论】:

    标签: matlab graph


    【解决方案1】:

    对于d,这里有一种可视化方法。

    • 画出排列成圆形的顶点。
    • 每个顶点都连接到其直接的 (d/2) 左侧邻居和其直接的 (d/2) 右侧邻居。

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

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

    【讨论】:

    • 感谢您的提示!我在没有使用 toeplitz 的情况下编写了解决方案(请参阅我的原始帖子)。如何使用 toeplitz?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2010-09-18
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多