複数のネットワークを接続して一つのネットワークを作る方法(networkx)

実現したいこと

BAモデルと呼ばれるネットワークを自作したのですが、同じアルゴリズムで10個ネットワークを作り、ネットワーク同士の任意のノードを繋げて大きな一つのネットワークを作成することを考えています。どなたか詳しい方がいましたらご教授いただければ幸いです。

該当のソースコード

python

1import networkx as nx 2import numpy as np 3import matplotlib.pyplot as plt 4 5def gen_BA_network(n, m, seed=None):6 if seed is not None:7 np.random.seed(seed=seed)8 9 m0 = m # 初期ノード数10 G = nx.cycle_graph(m0) # 初期のcycleグラフを生成11 initial_edges = list(G.edges())12 node_list = list(range(m0))13 14 # ノードを追加し、エッジを次数に比例して追加していく15 for i in range(m0, n):16 darray = np.array(G.degree())[:,1] # 次数の配列17 18 for j in range(m):19 # 次数に比例した確率ベクトルを生成20 s = np.sum(darray)21 parray = darray / s 22 23 # 次数に比例した確率で既存のノードを選び、エッジとする24 new = np.random.choice(node_list, p=parray)25 G.add_edge(i, new)26 27 darray[new] = 0.28 29 node_list.append(i)30 31 G.remove_edges_from(initial_edges)32 return G 33 34n = 10035m = 4

コメントを投稿

0 コメント