Conceptos básicos de grafos: tipos y aplicaciones prácticas
Clase 26 de 29 • Curso de Estructuras de Datos con JavaScript
Contenido del curso
Arrays y strings
- 4

Cómo funcionan arrays en memoria de JavaScript
07:23 min - 5

Construcción de Arrays con Clases en JavaScript
09:33 min - 6

Métodos pop y delete en arrays
16:01 min - 7
Playground: crea tu propia implementación de unshift
- 8
Playground: crea tu propia implementación de shift
- 9

Inmutabilidad de Strings y Almacenamiento en Memoria
02:42 min
Hash Table
Linked List
- 15

Estructuras de Datos: Listas Enlazadas en JavaScript
05:20 min - 16

Estructura y Creación de una Lista Enlazada Simple en JavaScript
10:03 min - 17

Métodos para Manipular Nodos en Listas Enlazadas
12:12 min - 18

Inserta nodos intermedios sin romper enlaces en JavaScript
16:08 min - 19

Doubly Linked List con punteros bidireccionales
07:51 min
Stacks
Queues
Trees
Graphs
Cierre
Entender grafos puede ser tan directo como trabajar con nodos en otras estructuras. Con una base en Binary Search Tree y linked lists, verás que los grafos son nodos interconectados con reglas claras. Aquí se explican sus componentes y tipos con ejemplos cotidianos, para que pases de la teoría a la implementación con confianza.
¿Qué es un grafo y cuáles son sus componentes?
Un grafo es una estructura formada por nodos y conexiones. Si ya creaste una clase para un nodo y generaste instancias, estás a un paso de dominar grafos: solo añadimos cómo se conectan.
¿Qué son vértices y edges?
- Los vértices son los nodos del grafo.
- Los bordes o edges son las conexiones entre vértices.
- Un borde actúa como un pointer que une un nodo con otro.
- Con vértices y bordes formamos la estructura completa del grafo.
¿Por qué no son complejos los grafos?
- Reutilizan ideas de estructuras vistas: nodos y referencias.
- La clave está en entender sus reglas de conexión.
- Una vez implementados, resultan más sencillos de lo que parecen.
¿Cómo se relacionan con linked lists?
- Un grafo dirigido recuerda a una single linked list: una sola dirección de avance.
- Un grafo no dirigido evoca una double linked list: puedes ir y volver entre nodos.
¿Qué tipos de grafos existen y cómo se comparan?
Elegir el tipo correcto depende de la dirección de las conexiones, la presencia de pesos y la existencia de ciclos. Con ejemplos, la diferencia se vuelve evidente.
¿Cómo se diferencian grafos dirigidos y no dirigidos?
- Dirigidos: un nodo lleva a otro con dirección específica. Similar a Twitter: si sigues a alguien, no implica acceso mutuo.
- No dirigidos: la conexión es bidireccional. Similar a Facebook: al conectar, ambos acceden a la información del otro.
- Beneficio: modelas relaciones asimétricas o simétricas según el caso.
¿Qué aportan grafos ponderados y no ponderados?
- Ponderados: las aristas tienen un peso (por ejemplo, un valor numérico).
- No ponderados: sin peso asociado; todas las conexiones valen lo mismo.
- Ejemplo práctico: rutas de aerolíneas para ahorrar gasolina.
- Cada aeropuerto es un vértice.
- Cada borde ponderado representa el costo en combustible entre aeropuertos.
- Objetivo: elegir la ruta con menor gasto total.
¿Qué distingue un grafo cíclico de uno acíclico?
- Cíclico: puedes partir de un nodo, recorrer y volver al inicio formando un ciclo.
- Acíclico: no existe forma de regresar al punto de origen tras recorrer el grafo.
- Entender ciclos ayuda a planear recorridos y evitar bucles no deseados.
¿Cómo construiremos y representaremos el grafo en código?
El siguiente paso es crear un grafo no dirigido, pequeño y claro, reutilizando clases e instancias de nodos. Antes de programar, conviene saber cómo se representan para imprimirlos o visualizarlos.
¿Qué haremos al construir un grafo no dirigido?
- Definir nodos como vértices.
- Conectar pares con bordes bidireccionales.
- Mantener el ejemplo sencillo para enfocarnos en la lógica de conexiones.
¿Qué habilidades pondrás en práctica?
- Modelar vértices y bordes con clases e instancias.
- Distinguir dirigido vs no dirigido según la relación.
- Asignar pesos cuando se necesiten decisiones de costo.
- Identificar ciclos para detectar posibles vueltas al origen.
- Traducir analogías de Facebook y Twitter a reglas de conexión.
¿Cómo veremos las representaciones de grafos?
- Existen tres formas comunes de representación.
- Se mostrarán antes de escribir código para que el formato de salida sea claro.
¿Con qué ejemplo te identificaste más: Facebook, Twitter o rutas de aerolíneas? Comenta cómo modelarías tu propio grafo no dirigido y qué tipo de conexiones usarías.