Estructura de datos del gráfico explicada usando el ejemplo de Facebook.  Los usuarios, grupos, páginas, eventos, etc. se representan como nodos y sus relaciones: amigo, unirse a un grupo, gustar una página se representan como enlaces entre nodos

Estructura de datos del gráfico

Una estructura de datos de gráfico es una colección de nodos que tienen datos y están conectados a otros nodos.

Tratemos de entender esto a través de un ejemplo. En facebook, todo es un nodo. Eso incluye Usuario, Foto, Álbum, Evento, Grupo, Página, Comentario, Historia, Video, Enlace, Nota… cualquier cosa que tenga datos es un nodo.

Cada relación es una arista de un nodo a otro. Ya sea que publique una foto, se una a un grupo, le guste una página, etc., se crea una nueva ventaja para esa relación.

Ejemplo de estructura de datos de gráfico

Todo facebook es entonces una colección de estos nodos y aristas. Esto se debe a que Facebook usa una estructura de datos de gráficos para almacenar sus datos.

Más precisamente, un gráfico es una estructura de datos (V, E) que consta de

  • Una colección de vértices V
  • Una colección de aristas E, representada como pares ordenados de vértices (u,v)
un gráfico contiene vértices que son como puntos y aristas que conectan los puntos
vértices y aristas

En el gráfico,

V = {0, 1, 2, 3}
E = {(0,1), (0,2), (0,3), (1,2)}
G = {V, E}

Terminología de gráficos

  • Proximidad: Se dice que un vértice es adyacente a otro vértice si hay una arista que los conecta. Los vértices 2 y 3 no son adyacentes porque no hay borde entre ellos.
  • Sendero: Una secuencia de aristas que te permite ir del vértice A al vértice B se llama camino. 0-1, 1-2 y 0-2 son caminos del vértice 0 al vértice 2.
  • Gráfico dirigido: Un gráfico en el que una arista (u,v) no significa necesariamente que también haya una arista (v,u). Los bordes en dicho gráfico están representados por flechas para mostrar la dirección del borde.

Representación gráfica

Los gráficos se representan comúnmente de dos maneras:

1. Matriz de adyacencia

Una matriz de adyacencia es una matriz 2D de vértices V x V. Cada fila y columna representan un vértice.

Si el valor de cualquier elemento a[i][j] es 1, representa que hay una arista que conecta el vértice i y el vértice j.

La matriz de adyacencia para el gráfico que creamos arriba es

La matriz de adyacencia gráfica para el gráfico de muestra muestra que el valor del elemento de la matriz es 1 para la fila y la columna que tienen un borde y 0 para la fila y la columna que no tienen un borde.
Matriz de adyacencia de grafos

Como es un gráfico no dirigido, para la arista (0,2), también necesitamos marcar la arista (2,0); haciendo que la matriz de adyacencia sea simétrica con respecto a la diagonal.

La búsqueda de bordes (comprobar si existe un borde entre el vértice A y el vértice B) es extremadamente rápida en la representación de matriz de adyacencia, pero tenemos que reservar espacio para cada enlace posible entre todos los vértices (V x V), por lo que requiere más espacio.

2. Lista de adyacencia

Una lista de adyacencia representa un gráfico como una matriz de listas enlazadas.

El índice de la matriz representa un vértice y cada elemento en su lista enlazada representa los otros vértices que forman un borde con el vértice.

La lista de adyacencia para el gráfico que hicimos en el primer ejemplo es la siguiente:

La representación de la lista de adyacencia representa el gráfico como una matriz de listas vinculadas donde el índice representa el vértice y cada elemento de la lista vinculada representa los bordes conectados a ese vértice.
Representación de lista de adyacencia

Una lista de adyacencia es eficiente en términos de almacenamiento porque solo necesitamos almacenar los valores de los bordes. Para un gráfico con millones de vértices, esto puede significar mucho espacio ahorrado.


Operaciones gráficas

Las operaciones gráficas más comunes son:

  • Comprobar si el elemento está presente en el gráfico
  • Gráfico transversal
  • Agregar elementos (vértice, bordes) al gráfico
  • Encontrar el camino de un vértice a otro

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *