Networkx не имеет встроенных функций для этой проблемы, поэтому вы должны сделать это вручную.Более того, если это было так, эти функции использовали внутри себя петли узлов.Таким образом, петля узла на самом деле является оптимальным или неоптимальным решением.Для вашего кода вы можете использовать Python defaultdicts, чтобы сделать его проще:
import networkx as nx
from collections import defaultdict
G = nx.Graph()
G.add_edges_from([
("E", "B"),
("E", "A"),
("B", "D"),
("B", "F"),
("B", "C"),
("A", "C"),
("A", "F"),
("A", "D")
])
snd = defaultdict(int)
for n1 in G.nodes:
for n2 in G.nodes:
len_nbrs = len(set(G.neighbors(n1)) & set(G.neighbors(n2)))
if len_nbrs:
snd[len_nbrs] += 1
snd
Так что snd
будет выглядеть так:
defaultdict(int, {2: 16, 4: 4})