Имеет смысл ответить на ваши вопросы наоборот:
- Пусть
v
будет вершина с m
соседями.average_neighbor_degree
из v
- это просто сумма степеней соседей, деленная на m
. Для average_degree_connectivity
это важная часть определения:
... - средняя степень ближайшего соседа узлов со степенью k
Таким образом, для всех различных степеней, которые встречаются в графе, это даетсреднее значение average_neighbor_degree
всех узлов с одинаковой степенью.Это мера того, насколько связаны узлы с определенными степенями.
Это много средних, я надеюсь, что этот фрагмент разъясняет вопрос 2:
import networkx as nx
from collections import defaultdict
G = nx.karate_club_graph()
avg_neigh_degrees = nx.algorithms.assortativity.average_neighbor_degree(G)
deg_to_avg_neighbor_degrees = defaultdict(list)
for node, degree in nx.degree(G):
deg_to_avg_neighbor_degrees[degree].append(avg_neigh_degrees[node])
# this is the same as nx.algorithms.assortativity.average_degree_connectivity(G)
avg_degree_connectivity = {degree: sum(vals)/len(vals) for degree, vals in
deg_to_avg_neighbor_degrees.items()}