14 Estructuras de datos
La materia principal de muchos algoritmos de inteligencia artificial son los datos. Para poder procesarlos se requiere moldearlos a través de estructuras definidas.
14.1 Conjunto de datos
En la inteligencia artificial, los datos constituyen la base sobre la cual se entrenan los modelos de aprendizaje automático. De hecho, podríamos decir que sin datos los métodos no existen.
De manera general, escribiremos un conjunto de datos (dataset) como un conjunto de pares ordenados:
$$
= (X^1, y^1), (X^2, y^2), , (X^, y^), , (X^m, y^m) ,$$
donde cada par \((X^\mu, y^\mu)\) corresponde a un ejemplo de entrenamiento. \(X^\mu\) representa la entrada o vector de características del ejemplo \(\mu\). Esta entrada puede ser una imagen, un texto, una señal o cualquier otro tipo de dato estructurado. \(y^\mu\) es la etiqueta o valor objetivo asociado a dicha entrada, también denominado ground truth.
De esta forma, el dataset no es únicamente un repositorio de información, sino una estructura que asocia cada entrada con la respuesta esperada que el modelo debe aprender a predecir.
14.1.1 Representación matricial
En la práctica, los datos suelen organizarse en estructuras matriciales, lo que facilita su manipulación mediante operaciones algebraicas. En este caso, se dispone de una matriz \(X\) de dimensiones \(m \times n\), donde: \(m\) es el número total de ejemplos y \(n\) es el número de características por cada ejemplo.
Así, se tiene:
$$
= \[\begin{bmatrix} x^{1}_{1} & \dots & x^{1}_{n} \ \vdots & \ddots & \vdots \ x^{m}_{1} & \dots & x^{m}_{n} \end{bmatrix}\] ts &x^{m}{1} & & x^{m}{n} \end{bmatrix}, \[\begin{bmatrix} y^1 \ \vdots \ y^m \end{bmatrix}\]
y^m \end{bmatrix} , $$
donde cada renglón de la matriz \(X\) representa un ejemplo completo, cada columna corresponde a una característica específica, y el vector \(Y\) contiene las etiquetas asociadas a cada ejemplo. Observe la figura 2 que muestra un ejemplo particular de la estructura mencionada.

Esta organización refleja el modo en que los algoritmos de aprendizaje supervisado procesan los datos: cada ejemplo es un punto en un espacio \(n\)-dimensional, y el vector de etiquetas proporciona la salida que se busca aproximar.
En ocasiones, con fines de compactitud, se utiliza una notación reducida en la que cada ejemplo se denota como \((X^\mu, Y^\mu)\). De este modo, el conjunto de datos puede expresarse como:
$$
= \[\begin{bmatrix} X^\mu \end{bmatrix}\] , \[\begin{bmatrix} y^\mu \end{bmatrix}\].$$
14.2 Grafos
Un grafo es una estructura de datos que se utiliza para representar relaciones binarias entre objetos de un conjunto. Matemáticamente, un grafo se define como un par ordenado \(G = (V, E)\), donde \(V\) es un conjunto de vértices (o nodos) que representan las entidades, y \(E \subseteq \{ \{u, v\} \mid u, v \in V \}\) es un conjunto de aristas (o enlaces) que representan las conexiones entre dichos nodos.
En el contexto de las redes neuronales, los grafos son fundamentales tanto para representar la arquitectura de la red (grafos computacionales) como para modelar datos con estructuras relacionales complejas.
Dependiendo de la naturaleza de las conexiones, los grafos pueden clasificarse en diversas categorías. En los grafos no dirigidos, las aristas no poseen una dirección definida, lo que implica que la relación entre dos nodos \(u\) y \(v\) es inherentemente simétrica y permite el tránsito en ambos sentidos. Por el contrario, los grafos dirigidos, también conocidos como dígrafos, emplean aristas que son pares ordenados \((u, v)\), estableciendo un sentido específico desde un nodo origen hacia uno de destino. Una variante crítica en el ámbito del aprendizaje profundo son los grafos acíclicos dirigidos (DAG), los cuales son dígrafos que carecen de ciclos; esta estructura constituye la arquitectura fundamental de los grafos de computación en marcos de trabajo como TensorFlow o PyTorch, donde los nodos representan operaciones matemáticas y las aristas dictan el flujo de tensores a través del sistema.
Para que un grafo pueda ser procesado mediante las herramientas del álgebra lineal, su estructura debe ser codificada en formato matricial. La forma más común de representación es la matriz de adyacencia (\(A\)), una matriz cuadrada de dimensiones \(|V| \times |V|\) donde el componente \(A_{ij}\) toma el valor de 1 si existe una conexión entre los nodos \(i\) y \(j\), o 0 en caso contrario; en grafos pesados, este elemento almacena directamente el peso de dicha conexión. Complementariamente, se define la matriz de grado (\(D\)) como una matriz diagonal en la que cada entrada \(D_{ii}\) cuantifica el número de aristas vinculadas al nodo \(i\). Finalmente, la integración de ambas da lugar a la matriz Laplaciana (\(L\)), definida como \(L = D - A\). Esta matriz es una pieza clave en el aprendizaje profundo sobre grafos (Graph Neural Networks), pues facilita el análisis de las propiedades estructurales del grafo y permite capturar la suavidad de las señales distribuidas sobre sus nodos.