blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

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")