Főnév

NetworkX (tsz. NetworkXs)

  1. (informatika)

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.



Főbb képességek

  1. Gráf reprezentációk és építés:
    • Irányított és irányítatlan gráfok támogatása.
    • Súlyozott, címkézett és több éllel rendelkező gráfok (Multigraph) kezelése.
  2. Gráf elemzése:
    • Alapvető mutatók: csúcsok és élek száma, fokszámok.
    • Hálózati mérőszámok: központiság, átmérő, összefüggő komponensek.
  3. Útvonalkeresés:
    • Legrövidebb út algoritmusok, mint Dijkstra és Bellman-Ford.
    • Minimális feszítőfák.
  4. Gráf-módosítás:
    • Új csúcsok és élek hozzáadása/eltávolítása.
    • Részgráfok kinyerése.
  5. Vizualizáció:
    • Könnyen integrálható a matplotlib-pel a gráfok rajzolásához.



NetworkX telepítése

A könyvtár telepítéséhez használja a következőt:

pip install networkx

Példák a NetworkX képességeire

1. Gráf létrehozása

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([2, 3, 4])

# Élek hozzáadása
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 4)])

# Gráf adatai
print("Csúcsok:", G.nodes)
print("Élek:", G.edges)

Kimenet:

Csúcsok: [1, 2, 3, 4]
Élek: [(1, 2), (2, 3), (3, 4)]

2. Gráf vizualizáció

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()

3. Legrövidebb út (Dijkstra algoritmus)

# 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)

Kimenet:

Legrövidebb út: [1, 3, 2, 4]
Úthossz: 10

4. Gráf mérőszámok

Gráf fokszámának vizsgálata:

# Csúcsok fokszámának lekérdezése
print("Fokszámok:", dict(G.degree()))

Gráf sűrűsége:

# 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)

5. Minimális feszítőfa

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()

6. Közösségi detektálás

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)

7. Topologikus sorrend

Csak irányított körmentes gráfok (DAG) esetén:

# DAG létrehozása
dag = nx.DiGraph([(1, 2), (1, 3), (3, 4), (2, 4)])

# Topologikus sorrend
topological_order = list(nx.topological_sort(dag))
print("Topologikus sorrend:", topological_order)

Kimenet:

Topologikus sorrend: [1, 2, 3, 4]

8. Random gráf generálása

# 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()

Összegzés

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.