szomszédsági mátrix

Kiejtés

  • IPA: [ ˈsomseːt͡ʃːaːɡimaːtriks]

Főnév

szomszédsági mátrix

  1. (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