Python NetworkX: библиотека для работы с графами
Python NetworkX - это библиотека для анализа и визуализации сложных сетей. Она предоставляет инструменты для работы с графами, диаграммами и топологиями.
Основные возможности NetworkX включают:
- Создание, манипулирование и анализ графов
- Расчет показателей центральности и оценка устойчивости сетей
- Генерация случайных графов и сообществ
- Визуализация графов и деревьев
Примеры кода для создания и манипулирования графами:
1. Создание графа:
python
import networkx as nx
# создание пустого графа
G = nx.Graph()
# добавление вершин и ребер
G.add_edge('A', 'B')
G.add_edge('B', 'C')
G.add_edge('C', 'D')
G.add_edge('D', 'A')
# вывод списка вершин и ребер
print(G.nodes())
print(G.edges())
2. Анализ графа и расчет показателей центральности:
python
import networkx as nx
# загрузка графа из файла
G = nx.read_edgelist('graph.txt')
# расчет показателей центральности
degree_centrality = nx.degree_centrality(G)
closeness_centrality = nx.closeness_centrality(G)
betweenness_centrality = nx.betweenness_centrality(G)
# вывод результатов
print(degree_centrality)
print(closeness_centrality)
print(betweenness_centrality)
3. Генерация случайного графа:
python
import networkx as nx
# генерация случайного графа
G = nx.erdos_renyi_graph(100, 0.1)
# вывод количества вершин и ребер
print(G.order(), G.size())
4. Визуализация графа:
python
import networkx as nx
import matplotlib.pyplot as plt
# создание графа
G = nx.Graph()
G.add_edge('A', 'B')
G.add_edge('B', 'C')
G.add_edge('C', 'D')
G.add_edge('D', 'A')
# визуализация графа
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos)
plt.show()
Это только небольшая часть возможностей NetworkX, однако она является мощной и гибкой библиотекой для работы со сложными сетями.