簡體   English   中英

使用networkx反轉鄰接矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM