NetworkX — мощная библиотека Python для изучения и анализа сложных сетей. Одним из фундаментальных свойств узла графа является его степень, которая представляет собой количество ребер, соединенных с этим узлом. В этой статье блога мы рассмотрим различные методы расчета степени каждого узла графа с помощью NetworkX, сопровождаемые примерами кода.
Метод 1: использование функции degree
Самый простой способ вычислить степень каждого узла в графе — использовать встроенную функцию degree
в СетьX. Вот пример:
import networkx as nx
# Create a graph
G = nx.Graph()
G.add_edges_from([(1, 2), (1, 3), (2, 3), (3, 4), (4, 5)])
# Calculate node degrees
degrees = dict(G.degree())
# Print node degrees
for node, degree in degrees.items():
print(f"Node {node}: Degree {degree}")
Метод 2: использование функции degree_histogram
Если вас интересует распределение степеней узлов на графике, вы можете использовать функцию degree_histogram
. Он возвращает список, представляющий частоту каждого значения градуса. Вот пример:
import networkx as nx
import matplotlib.pyplot as plt
# Create a graph
G = nx.Graph()
G.add_edges_from([(1, 2), (1, 3), (2, 3), (3, 4), (4, 5)])
# Calculate degree histogram
histogram = nx.degree_histogram(G)
# Plot the degree distribution
plt.bar(range(len(histogram)), histogram)
plt.xlabel("Degree")
plt.ylabel("Frequency")
plt.show()
Метод 3: использование понимания списка
Другой подход к вычислению степеней узла — использование понимания списка. Этот метод позволяет получить более краткий фрагмент кода:
import networkx as nx
# Create a graph
G = nx.Graph()
G.add_edges_from([(1, 2), (1, 3), (2, 3), (3, 4), (4, 5)])
# Calculate node degrees using list comprehension
degrees = [degree for node, degree in G.degree()]
# Print node degrees
for node, degree in enumerate(degrees):
print(f"Node {node + 1}: Degree {degree}")
В этой статье мы рассмотрели различные методы расчета степени каждого узла графа с помощью NetworkX. Мы рассмотрели использование функции degree
, функции degree_histogram
для анализа распределения степеней и подхода к пониманию списков. Используя эти методы, вы можете получить ценную информацию о структуре и связности сетей. NetworkX – это универсальная библиотека, предлагающая широкий спектр инструментов для сетевого анализа, что делает ее важным ресурсом для специалистов по данным и исследователей в различных областях.