szomszédsági mátrix
Kiejtés
- IPA: [ ˈsomseːt͡ʃːaːɡimaːtriks]
Főnév
- (matematika, gráfelmélet) Egy véges irányított vagy irányítatlan csúcsú gráf szomszédsági mátrixa (ritkábban: adjacenciamátrixa) az az -es mátrix, amelynek a nem a főátlóban szereplő eleme az csúcsból a csúcsba vezető élek száma, míg a főátlóban található , vagy az csúcsnál lévő hurkok számának kétszerese vagy csak a hurkok száma (az, hogy melyiket használjuk a matematikai felhasználástól függ.
Szomszédsági mátrix definíció
A **szomszédsági mátrix** egy gráf vagy hipergráf reprezentációja, ahol egy mátrix elemei a csúcsok közötti kapcsolatokat írják le. Hagyományos gráf esetén a mátrix sorai és oszlopai a csúcsokat jelölik, míg a mátrix elemei a csúcsokat összekötő élek súlyait vagy meglétét mutatják.
Definíció gráf esetén
Ha a gráf irányítatlan: Az irányítatlan gráf szomszédsági mátrixa szimmetrikus.
Ha a gráf irányított:
Definíció hipergráf esetén
Hipergráfban a szomszédsági mátrix sora a csúcsok, oszlopa pedig a hiperélek szerint alakul:
Szomszédsági mátrix példák
1. Gráf szomszédsági mátrixa (irányítatlan gráf)
Példa:
- Csúcsok:
- Élek:
A mátrix:
2. Gráf szomszédsági mátrixa (irányított gráf)
Példa:
- Csúcsok:
- Irányított élek:
A mátrix:
3. Hipergráf szomszédsági mátrixa
Példa:
- Csúcsok:
- Hiperélek:
A mátrix:
Szomszédsági mátrix generálása
Gráf szomszédsági mátrixának generálása
def create_adjacency_matrix(edges, num_nodes):
import numpy as np
matrix = np.zeros((num_nodes, num_nodes), dtype=int)
for u, v in edges:
matrix[u][v] = 1
matrix[v][u] = 1 # Irányítatlan gráf esetén
return matrix
# Példa: Irányítatlan gráf
edges = [(0, 1), (1, 2)] # A=0, B=1, C=2
num_nodes = 3
adj_matrix = create_adjacency_matrix(edges, num_nodes)
print("Szomszédsági mátrix:\n", adj_matrix)
Hipergráf szomszédsági mátrixának generálása
def create_hypergraph_adjacency_matrix(hyperedges, vertices):
import numpy as np
num_vertices = len(vertices)
num_edges = len(hyperedges)
matrix = np.zeros((num_vertices, num_edges), dtype=int)
for j, edge in enumerate(hyperedges):
for i, vertex in enumerate(vertices):
if vertex in edge:
matrix[i][j] = 1
return matrix
# Példa
vertices = ['A', 'B', 'C', 'D']
hyperedges = [{'A', 'B', 'C'}, {'B', 'D'}]
matrix = create_hypergraph_adjacency_matrix(hyperedges, vertices)
print("Hipergráf szomszédsági mátrix:\n", matrix)
Szomszédsági mátrix előnyei és hátrányai
Előnyök
- Egyszerű és közvetlen reprezentáció.
- Könnyen implementálható algoritmusokhoz, mint például:
* Gráf bejárás (DFS, BFS). * Legrövidebb út keresése (pl. Floyd-Warshall).
- Hatékony éleket keresni: .
Hátrányok
- Nagy memóriaigény sűrű gráfokhoz: , ahol a csúcsok száma.
- Ritka gráfok esetén sok felesleges nulla érték.
Összegzés
A szomszédsági mátrix egyszerű, de nagy memóriaigényű reprezentációja miatt főként sűrű gráfokhoz használatos. Hipergráfok esetében szintén hasznos, különösen incidenciamátrixként alkalmazva, amikor a csúcsok és hiperélek kapcsolatait vizsgáljuk.
Fordítások
- angol: adjacency matrix (en)
- német: Adjazenzmatrix (de)
- orosz: матрица смежности (ru) (matrica smežnosti)
- szomszédsági mátrix - Értelmező szótár (MEK)
- szomszédsági mátrix - Etimológiai szótár (UMIL)
- szomszédsági mátrix - Szótár.net (hu-hu)
- szomszédsági mátrix - DeepL (hu-de)
- szomszédsági mátrix - Яндекс (hu-ru)
- szomszédsági mátrix - Google (hu-en)
- szomszédsági mátrix - Helyesírási szótár (MTA)
- szomszédsági mátrix - Wikidata
- szomszédsági mátrix - Wikipédia (magyar)