En teoría de grafos y ciencias de la computación , una matriz de adyacencia es una matriz cuadrada que se utiliza para representar un grafo finito . Los elementos de la matriz indican si los pares de vértices son adyacentes o no en el grafo.
En el caso especial de un grafo simple finito , la matriz de adyacencia es una matriz (0,1) con ceros en su diagonal. Si el grafo no está dirigido (es decir, todos sus bordes son bidireccionales), la matriz de adyacencia es simétrica . La relación entre un grafo y los valores y vectores propios de su matriz de adyacencia se estudia en la teoría de grafos espectrales .
La matriz de adyacencia de un grafo debe distinguirse de su matriz de incidencia , una representación matricial diferente cuyos elementos indican si los pares vértice-arista son incidentes o no, y su matriz de grados , que contiene información sobre el grado de cada vértice.
Para un grafo simple con conjunto de vértices U = { u 1 , …, u n } , la matriz de adyacencia es una matriz cuadrada n × n A tal que su elemento A ij es uno cuando hay una arista desde el vértice u i hasta el vértice u j , y cero cuando no hay arista. [1] Los elementos diagonales de la matriz son todos cero, ya que las aristas desde un vértice hasta sí mismo ( bucles ) no están permitidas en grafos simples. También es útil a veces en la teoría de grafos algebraicos reemplazar los elementos distintos de cero con variables algebraicas. [2] El mismo concepto se puede extender a multigrafos y grafos con bucles almacenando el número de aristas entre cada dos vértices en el elemento de matriz correspondiente y permitiendo elementos diagonales distintos de cero. Los bucles se pueden contar una vez (como una sola arista) o dos veces (como dos incidencias vértice-arista), siempre que se siga una convención consistente. Los gráficos no dirigidos a menudo utilizan la última convención de contar los bucles dos veces, mientras que los gráficos dirigidos normalmente utilizan la primera convención.
La matriz de adyacencia A de un grafo bipartito cuyas dos partes tienen r y s vértices se puede escribir en la forma
donde B es una matriz r × s , y 0 r , r y 0 s , s representan las matrices cero r × r y s × s . En este caso, la matriz más pequeña B representa únicamente el gráfico, y las partes restantes de A pueden descartarse por ser redundantes. A B a veces se la denomina matriz de biadyacencia .
Formalmente, sea G = ( U , V , E ) un grafo bipartito con partes U = { u 1 , ..., u r } , V = { v 1 , ..., v s } y aristas E . La matriz de biadyacencia es la matriz r × s 0–1 B en la que b i , j = 1 si y solo si ( u i , v j ) ∈ E .
Si G es un multigrafo bipartito o un grafo ponderado , entonces los elementos b i,j se toman como el número de aristas entre los vértices o el peso de la arista ( u i , v j ) , respectivamente.
Una matriz de adyacencia ( a , b , c ) A de un grafo simple tiene A i , j = a si ( i , j ) es una arista, b si no lo es y c en la diagonal. La matriz de adyacencia de Seidel es una matriz de adyacencia (−1, 1, 0) . Esta matriz se utiliza para estudiar grafos fuertemente regulares y bigrafos . [3]
La matriz de distancia tiene en la posición ( i , j ) la distancia entre los vértices v i y v j . La distancia es la longitud de un camino más corto que conecta los vértices. A menos que se proporcionen explícitamente las longitudes de las aristas, la longitud de un camino es el número de aristas que tiene. La matriz de distancia se parece a una alta potencia de la matriz de adyacencia, pero en lugar de indicar solo si dos vértices están conectados o no (es decir, la matriz de conexión, que contiene valores booleanos ), proporciona la distancia exacta entre ellos.
La convención seguida aquí (para gráficos no dirigidos) es que cada borde suma 1 a la celda apropiada en la matriz, y cada bucle (un borde desde un vértice hacia sí mismo) suma 2 a la celda apropiada en la diagonal de la matriz. [4] Esto permite encontrar fácilmente el grado de un vértice tomando la suma de los valores en su respectiva fila o columna en la matriz de adyacencia.
La matriz de adyacencia de un grafo dirigido puede ser asimétrica. Se puede definir la matriz de adyacencia de un grafo dirigido de tal manera que
La primera definición se utiliza comúnmente en la teoría de grafos y el análisis de redes sociales (por ejemplo, sociología, ciencias políticas, economía, psicología). [5] La última es más común en otras ciencias aplicadas (por ejemplo, sistemas dinámicos, física, ciencia de redes) donde A a veces se utiliza para describir la dinámica lineal en grafos. [6]
Utilizando la primera definición, los grados de entrada de un vértice se pueden calcular sumando las entradas de la columna correspondiente y el grado de salida del vértice sumando las entradas de la fila correspondiente. Cuando se utiliza la segunda definición, el grado de entrada de un vértice se da por la suma de la fila correspondiente y el grado de salida se da por la suma de la columna correspondiente.
La matriz de adyacencia de un grafo completo contiene todos los unos excepto a lo largo de la diagonal donde solo hay ceros. La matriz de adyacencia de un grafo vacío es una matriz cero .
La matriz de adyacencia de un grafo simple no dirigido es simétrica y, por lo tanto, tiene un conjunto completo de valores propios reales y una base de vectores propios ortogonal . El conjunto de valores propios de un grafo es el espectro del grafo. [7] Es común denotar los valores propios por
El mayor valor propio está acotado por encima del grado máximo. Esto puede verse como resultado del teorema de Perron-Frobenius , pero se puede demostrar fácilmente. Sea v un vector propio asociado a y x el componente en el que v tiene el valor absoluto máximo. Sin pérdida de generalidad, suponga que v x es positivo ya que de lo contrario simplemente se toma el vector propio , también asociado a . Entonces
Para grafos d -regulares, d es el primer valor propio de A para el vector v = (1, …, 1) (es fácil comprobar que es un valor propio y que es el máximo debido a la cota anterior). La multiplicidad de este valor propio es el número de componentes conexos de G , en particular para grafos conexos. Se puede demostrar que para cada valor propio , su opuesto también es un valor propio de A si G es un grafo bipartito . [8] En particular − d es un valor propio de cualquier grafo bipartito d -regular.
La diferencia se denomina brecha espectral y está relacionada con la expansión de G. También es útil introducir el radio espectral de denotado por . Este número está acotado por . Este límite es estricto en los grafos de Ramanujan , que tienen aplicaciones en muchas áreas.
Supóngase que se dan dos grafos dirigidos o no dirigidos G 1 y G 2 con matrices de adyacencia A 1 y A 2. G 1 y G 2 son isomorfos si y sólo si existe una matriz de permutación P tal que
En particular, A 1 y A 2 son similares y por lo tanto tienen el mismo polinomio mínimo , polinomio característico , valores propios , determinante y traza . Por lo tanto, estos pueden servir como invariantes de isomorfismo de grafos. Sin embargo, dos grafos pueden poseer el mismo conjunto de valores propios pero no ser isomorfos. [9] Se dice que tales operadores lineales son isoespectrales .
Si A es la matriz de adyacencia del grafo dirigido o no dirigido G , entonces la matriz A n (es decir, el producto matricial de n copias de A ) tiene una interpretación interesante: el elemento ( i , j ) da el número de paseos (dirigidos o no dirigidos) de longitud n desde el vértice i al vértice j . Si n es el entero no negativo más pequeño, tal que para algún i , j , el elemento ( i , j ) de A n es positivo, entonces n es la distancia entre el vértice i y el vértice j . Un gran ejemplo de cómo esto es útil es contar el número de triángulos en un grafo no dirigido G , que es exactamente la traza de A 3 dividida por 3 o 6 dependiendo de si el grafo es dirigido o no. Dividimos por esos valores para compensar el recuento excesivo de cada triángulo. En un grafo no dirigido, cada triángulo se contará dos veces para los tres nodos, porque el camino puede seguirse en el sentido de las agujas del reloj o en el sentido contrario: ijk o ikj. La matriz de adyacencia se puede utilizar para determinar si el grafo es conexo o no .
Si un grafo dirigido tiene una matriz de adyacencia nilpotente (es decir, si existe n tal que A n es la matriz cero), entonces es un grafo acíclico dirigido . [10]
La matriz de adyacencia puede utilizarse como estructura de datos para la representación de gráficos en programas informáticos para manipular gráficos. La principal estructura de datos alternativa, también utilizada para esta aplicación, es la lista de adyacencia . [11] [12]
El espacio necesario para representar una matriz de adyacencia y el tiempo necesario para realizar operaciones en ellas dependen de la representación matricial elegida para la matriz subyacente. Las representaciones de matriz dispersa solo almacenan entradas de matriz distintas de cero y representan implícitamente las entradas cero. Por ejemplo, se pueden utilizar para representar grafos dispersos sin incurrir en la sobrecarga de espacio que supone almacenar las numerosas entradas cero en la matriz de adyacencia del grafo disperso. En la siguiente sección se supone que la matriz de adyacencia está representada por una estructura de datos de matriz , de modo que las entradas cero y distintas de cero se representan directamente en el almacenamiento.
Debido a que cada entrada en la matriz de adyacencia requiere solo un bit, se puede representar de una manera muy compacta, ocupando solo | V | 2 / 8 bytes para representar un gráfico dirigido, o (utilizando un formato triangular empaquetado y almacenando solo la parte triangular inferior de la matriz) aproximadamente | V | 2 / 16 bytes para representar un gráfico no dirigido. Aunque son posibles representaciones ligeramente más sucintas, este método se acerca al límite inferior teórico de la información para el número mínimo de bits necesarios para representar todos los gráficos de n vértices. [13] Para almacenar gráficos en archivos de texto , se pueden usar menos bits por byte para garantizar que todos los bytes sean caracteres de texto, por ejemplo, utilizando una representación Base64 . [14] Además de evitar el espacio desperdiciado, esta compacidad fomenta la localidad de referencia . Sin embargo, para un gráfico disperso grande , las listas de adyacencia requieren menos espacio de almacenamiento, porque no desperdician ningún espacio que represente aristas que no están presentes. [12] [15]
Una forma alternativa de matriz de adyacencia (que, sin embargo, requiere una mayor cantidad de espacio) reemplaza los números en cada elemento de la matriz con punteros a objetos de borde (cuando hay bordes presentes) o punteros nulos (cuando no hay borde). [15] También es posible almacenar pesos de borde directamente en los elementos de una matriz de adyacencia. [12]
Además de la compensación de espacio, las diferentes estructuras de datos también facilitan diferentes operaciones. Encontrar todos los vértices adyacentes a un vértice dado en una lista de adyacencia es tan simple como leer la lista y lleva un tiempo proporcional al número de vecinos. Con una matriz de adyacencia, en cambio, se debe escanear una fila entera, lo que lleva una mayor cantidad de tiempo, proporcional al número de vértices en todo el grafo. Por otro lado, comprobar si hay una arista entre dos vértices dados se puede determinar de inmediato con una matriz de adyacencia, mientras que con la lista de adyacencia se requiere un tiempo proporcional al grado mínimo de los dos vértices. [12] [15]