私が間違っていることを知っていても、これを効果的に実装する方法を考えるのは苦労しています。私は、例えば無向グラフの重み付きグラフなどの隣接リストを読み込むようにコードを作成しようとしています。隣接リストをPythonの隣接行列に変換しようとしています
[(0,5)、(2,7)]、[(1) 、7)]
そして返す隣接行列にそれを変換する:
[0、5、INF]、[5]、[0,7]、[INF、7、0]
しかし、以下のコードは[0、5、inf]、[5、inf、0、inf、7]、[inf、7、0]を返します。しかし、0は2に隣接しておらず、したがってその重さが 'inf'であるため、[0、5、inf]のような場合にのみ、隣接行列に 'inf'を追加したいだけです。最高のソリューションは何ですか?
def adjacency_matrix(graph_string):
adj_list = adjacency_list(graph_string)
n = len(adj_list)
adj_mat = [[] for _ in range(n)]
for i in range(n):
for j in range(n):
if j == i:
adj_mat[i].append(0)
else:
for neighbour, weight in adj_list[i]:
if j == neighbour:
adj_mat[i].append(weight)
break
elif j != neighbour:
adj_mat[i].append(float('inf'))
return adj_mat
'adjacency_list'機能は何ですか? – Charul
サンプルの 'graph_string'と' adjacency_list'関数を使って、問題の完全な例を提供してください。 – matusko