blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

各種環境の構築と管理を承ります。

  • 仮想環境: Openstack, GCP, AWS, Azure, ...
  • アプリケーション: WordPress, GitLab, Redmine, ...

List

Grid Graphの隣接行列を作る

いきさつ

格子状に並んだグラフの隣接行列を生成する必要があったので、やってみました。

code

rsmatという関数でランダムな対称行列をつくり、 grid_matでフィルターするような感じのコードです。

def rsmat(dim):
    A = np.random.random((dim,dim))
    for i in range(dim):
        for j in range(i):
            A[j][i] = A[i][j]
    return A

def grid_mat(rows,cols):
    nnum = rows * cols
    B = np.zeros((nnum,nnum),dtype=np.int)
    for i in range(nnum - 1):
        if not i % 3 == 2:
            B[i+1][i] = True
            B[i][i+1] = True

    for i in range(nnum - 3):
        B[i+3][i] = True
        B[i][i+3] = True
    return B

rows = 6
cols = 10
nnum = rows * cols
G = grid_mat(rows,cols) * rsmat(nnum)
print G
plt.imshow(G)
plt.savefig("hoge.png")