[英]Invert adjacency matrix using networkx
我有很大的無向圖(大約 20 萬個節點)。 我想反轉它的鄰接矩陣。 因此,如果 A 和 B 在第一個圖中連接,它們不應該在新圖中連接。 我怎么能接近這個?
看起來您正在尋找Complement Graph 。 您在 NetworkX 中有一個 function 可以做到這一點。 這是一個例子:
G = nx.Graph()
G.add_edges_from(((1,2),(1,3),(2,4),(4,5),(5,1),(8,2)))
plt.figure(figsize=(12, 5))
nx.draw(G, with_labels=True, node_color='lightgreen',node_size=500)
H = nx.complement(G)
plt.figure(figsize=(12, 5))
nx.draw(H, with_labels=True, node_color='lightgreen',node_size=500)
def invert_graph(G, v_num = v_num):
g_2 = generate_empty_graph(v_num)
for i in range(1, v_num + 1):
if i%100 == 0:
print("Inverting ", i)
non_neighbors = nx.non_neighbors(G, i)
for neighbor in non_neighbors:
g_2.add_edge(i, neighbor)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.