0

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
4

1 に答える 1

1

でもd、アプローチを視覚化する方法は次のとおりです。

  • 円を描くように配置された頂点を描画します。
  • 各頂点は、そのすぐ(d/2)左隣とそのすぐ(d/2)右隣に接続されています。

これを隣接行列に変換する方法はかなり明白なはずです(ヒント:巡回行列toeplitzになるので、この関数が役立つ場合があります)。

これを奇数に拡張することdはそれほど難しくありません...(ただし、両方が奇数の場合は解決策がないことに注意くださいNd

于 2013-03-02T12:26:19.060 に答える