import networkx as nx
from typing import List, Tuple
def build_and_analyze_graph() -> None:
"""Пример работы с графами: города и дороги."""
G = nx.Graph()
# Добавляем узлы (города) и рёбра (дороги)
G.add_edges_from([
("Москва", "Питер", {"distance": 700}),
("Москва", "Казань", {"distance": 800}),
("Питер", "Новгород", {"distance": 200}),
("Казань", "Екатеринбург", {"distance": 900}),
("Новгород", "Екатеринбург", {"distance": 1200}),
])
# Кратчайший путь
path = nx.shortest_path(G, "Москва", "Екатеринбург", weight="distance")
distance = nx.shortest_path_length(G, "Москва", "Екатеринбург", weight="distance")
print("📍 Кратчайший путь Москва → Екатеринбург:", " → ".join(path))
print(f"Расстояние: {distance} км\n")
# Центральность узлов
centrality = nx.degree_centrality(G)
print("🔝 Самые связанные города:")
for city, cent in sorted(centrality.items(), key=lambda x: x[1], reverse=True):
print(f" • {city}: {cent:.2f}")
if __name__ == "__main__":
try:
build_and_analyze_graph()
except Exception as e:
print(f"Ошибка: {e}")
📌 NetworkX — мощная библиотека для работы с графами: построение, поиск кратчайших путей, центральность, сообщества, визуализация и тысячи алгоритмов. Идеально для транспортных сетей, рекомендаций, социальных графов и анализа связей.
🛠 pip install networkx
Подпишись 👉🏻 @KodduuPython 🤖