###実現したいこと
プログラム内で設定したグラフにおいて、「次数が0または次数が1の頂点とその頂点に接続する辺」を削除したい。networkxを使用します。
###問題点
以下のようなエラーがでます。
Traceback (most recent call last): File "kadai06d.py", line 10, in <module> for v in G: RuntimeError: dictionary changed size during iteration
上のエラーを見るとfor v in G:
の部分にエラーが出ていますが私が考えるに悪い部分はG_deg=G.remove_node(v)
だと思います。これを消したらプログラムが正常に機能したからです。
for
内で特定の頂点を消すにはどのようにしたらよいでしょうか。教えてください。
###コード
python
1import networkx as nx 2import matplotlib.pyplot as plt 3G=nx.Graph() 4G.add_nodes_from([1,2,3,4,5,6,7,8,9,10]) 5G.add_edges_from([(1,2),(2,4),(3,2),(4,5),(6,10),(7,6),(8,6),(9,8),(10,8),(1,9),(8,1)]) 6 7#n=G.number_of_nodes() 8#[次数が0の頂点]もしくは[次数が1の頂点とその頂点に接続する辺]を削除する 9for v in G: 10 #print(G.degree(v)) 11 #print("v=",v) 12 G_deg=G.degree(v) 13 if G_deg==0 or G_deg==1: 14 G.remove_node(v) 15 #print("G_deg=",G_deg) 16 17 18#グラフの出力 19nx.draw_networkx(G) 20plt.show()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/28 14:50