NetworkX (tsz. NetworkXs)
A NetworkX egy népszerű Python-könyvtár, amelyet gráfok és hálózatok kezelésére terveztek. Segítségével egyszerűen modellezhetünk, elemezhetünk és vizualizálhatunk gráfokat, legyen szó szociális hálózatokról, közlekedési útvonalakról, vagy bármilyen más hálózati struktúráról.
matplotlib
-pel a gráfok rajzolásához.
A könyvtár telepítéséhez használja a következőt:
pip install networkx
import networkx as nx
# Egyszerű gráf létrehozása
G = nx.Graph()
# Csúcsok hozzáadása
G.add_node(1)
G.add_nodes_from()
# Élek hozzáadása
G.add_edge(1, 2)
G.add_edges_from()
# Gráf adatai
print("Csúcsok:", G.nodes)
print("Élek:", G.edges)
Csúcsok: Élek:
A gráf megjelenítéséhez használhatjuk a matplotlib
-et:
import matplotlib.pyplot as plt
# Gráf rajzolása
nx.draw(G, with_labels=True)
plt.show()
# Súlyozott gráf
G = nx.DiGraph()
G.add_weighted_edges_from([
(1, 2, 4),
(1, 3, 2),
(3, 2, 1),
(2, 4, 5),
(3, 4, 8)
])
# Legrövidebb út és annak hossza
shortest_path = nx.shortest_path(G, source=1, target=4, weight='weight')
path_length = nx.shortest_path_length(G, source=1, target=4, weight='weight')
print("Legrövidebb út:", shortest_path)
print("Úthossz:", path_length)
Legrövidebb út: Úthossz: 10
# Csúcsok fokszámának lekérdezése
print("Fokszámok:", dict(G.degree()))
# Sűrűség: Az élek számának aránya az összes lehetséges élhez képest
density = nx.density(G)
print("Sűrűség:", density)
A minimális feszítőfa kiszámítása súlyozott gráfokhoz:
# Gráf minimális feszítőfája
T = nx.minimum_spanning_tree(nx.Graph(G))
print("Minimális feszítőfa élei:", list(T.edges(data=True)))
# Vizualizáció
nx.draw(T, with_labels=True)
plt.show()
A gráf közösségeit (összefüggő komponenseit) is meghatározhatjuk:
# Összefüggő komponensek
components = list(nx.connected_components(nx.Graph(G)))
print("Összefüggő komponensek:", components)
Csak irányított körmentes gráfok (DAG) esetén:
# DAG létrehozása
dag = nx.DiGraph()
# Topologikus sorrend
topological_order = list(nx.topological_sort(dag))
print("Topologikus sorrend:", topological_order)
Topologikus sorrend:
# Random gráf létrehozása (Erdős-Rényi modell)
random_graph = nx.erdos_renyi_graph(n=10, p=0.3)
# Vizualizáció
nx.draw(random_graph, with_labels=True)
plt.show()
A NetworkX rendkívül sokoldalú eszköz gráfok modellezésére, elemzésére és vizualizálására. Használható: - Szociális hálózatok elemzésére. - Közlekedési útvonalak optimalizálására. - Tudományos kutatások során hálózatok elemzésére. - Egyéb hálózati rendszerek (például internetes infrastruktúra) modellezésére.
A könyvtár egyszerű szintaxisa és erőteljes funkciói miatt kiváló választás kezdők és haladó programozók számára egyaránt.