Contenido del curso
DFS
- 6

Cómo recorre nodos el algoritmo DFS
04:49 min - 7

Implementación de DFS recursivo para búsqueda en árboles
12:10 min - 8

Búsqueda en Profundidad (DFS) para Grafos: Enfoque Iterativo y Recursivo
01:27 min - 9

Inorder, Preorder y Postorder en árboles
07:09 min - 10

Suma de caminos raíz a hoja en árboles
02:04 min - 11

Suma de caminos raíz a hoja con DFS
07:31 min - 12

Playground: Sum Root to Leaf Numbers
- 13

Implementación de Algoritmo DFS en Árboles Binarios con Golang
15:03 min - 14

Número de islas con DFS en matrices
02:32 min - 15

Problema de islas resuelto con DFS
08:50 min - 16

Playground: Number of Islands
- 17

Número de islas con DFS recursivo en Python
10:18 min - 18

Ejercicios Prácticos de Búsqueda en Profundidad (DFS)
02:22 min - 19

Algoritmos de Búsqueda en Profundidad (DFS) en Problemas Comunes
06:19 min
BFS
- 20

Cómo BFS recorre grafos por niveles
02:05 min - 21

Implementación de BFS con colas en Python
08:42 min - 22

Mínimos movimientos del caballo en ajedrez
02:55 min - 23

Minimum Knight's Move con BFS
08:11 min - 24

Playground: Minimum Knights Moves
- 25

Resolución de Problemas de Caballos de Ajedrez con BFS en Python
17:49 min - 26

Propagación BFS en Rotting Oranges
03:50 min - 27

Resolución de Rotting Oranges usando BFS
08:43 min - 28

Playground: Rotting Oranges
- 29

Implementación de BFS para naranjas podridas
23:44 min - 30

Puente más corto entre islas con BFS
03:38 min - 31

Shortest Bridge: combina DFS y BFS
07:35 min - 32

Playground: Shortest Bridge Between Islands
- 33

Shortest Bridge con DFS y BFS en Python
14:57 min - 34

Búsqueda en anchura: Ejercicios prácticos y aplicaciones
03:41 min - 35

Ejercicios avanzados de búsqueda en anchura (BFS) en programación
08:47 min
Backtrack
- 36

Backtracking para encontrar soluciones válidas
04:20 min - 37

Combinaciones de letras en teclado telefónico
01:51 min - 38

Combinaciones de teclado con backtracking
09:19 min - 39

Generación de combinaciones de letras con teclados numéricos en C++
14:08 min - 40

Playground: Letter Combinations of a Phone Number
- 41

Generación de Direcciones IP Válidas a partir de Cadenas Numéricas
03:51 min - 42

Backtracking para generar IPs válidas
28:16 min - 43

Playground: Restore IP Addresses
- 44

Búsqueda de Palabras en Matrices: Solución y Complejidad
02:54 min - 45

Word Search con DFS y backtracking
08:30 min - 46

Playgrund: Word Search
- 47

Búsqueda de palabras en matrices con DFS
18:18 min - 48

Resolución del problema de las n reinas en ajedrez
01:08 min - 49

Ejercicios de Backtracking: Combinaciones y Permutaciones
01:05 min - 50

Combinaciones y Permutaciones con Backtracking
02:14 min
Próximos pasos
Qué son los grafos y cómo modelan el mundo
Resumen
Los grafos son una de las estructuras de datos más poderosas en programación porque modelan relaciones del mundo real: redes sociales, mapas, vuelos e incluso redes neuronales. Aquí entenderás qué son, cómo se representan y por qué importan si quieres diseñar soluciones de software más inteligentes.
¿Qué es un grafo y cómo se representa visualmente?
Un grafo es una estructura de datos no lineal que permite representar relaciones entre objetos. A diferencia de una lista enlazada, donde el orden es estricto y secuencial, en un grafo puedes conectar cualquier elemento con cualquier otro.
Un grafo tiene dos componentes esenciales:
- Nodos: representan los objetos, igual que en las listas enlazadas. Visualmente se dibujan como círculos.
- Aristas: son las líneas que unen dos nodos y representan la relación entre ellos.
Lo interesante es que un nodo puede ser cualquier cosa que tu problema necesite: un número, una persona, una ciudad, una acción. Y el grafo puede crecer tan complejo como quieras.
¿Qué es un nodo en un grafo? Es cada uno de los objetos que quieres representar. Puede ser una persona en una red social, una ciudad en un mapa o una acción dentro de un proceso.
¿Cuáles son los tipos de grafos según dirección y peso?
No todos los grafos son iguales. Su comportamiento cambia según cómo conectes los nodos y qué información cargues en sus aristas.
¿Qué diferencia hay entre un grafo dirigido y no dirigido?
Un grafo no dirigido simplemente muestra que dos elementos están relacionados, sin importar el orden. Si lo piensas como una amistad mutua, basta con saber que ambos se conocen.
Un grafo dirigido añade una flecha que indica el sentido de la relación. Esto te permite representar dependencias: para llegar al elemento dos, primero debes pasar por el uno.
El ejemplo más claro está en redes sociales como Instagram o Facebook:
- Si tú sigues a otra persona, hay una flecha en una sola dirección, y eso es unidireccional.
- Si esa persona te sigue de vuelta, aparece una flecha en sentido contrario, y se vuelve bidireccional.
¿Qué es un grafo con peso y para qué sirve?
Un grafo con peso asigna un valor numérico a cada arista. Ese valor puede representar costo, distancia, tiempo o cualquier métrica que influya en una decisión.
Imagina ciudades conectadas por vuelos:
- Bogotá a Medellín: 200.000.
- Medellín a París: 1.000.
- Bogotá a Santiago a París: otra combinación con su propio costo.
Con esos pesos puedes calcular qué ruta te conviene más: un vuelo directo, una escala más barata o la combinación óptima entre varias ciudades. Aquí ya no solo modelas relaciones, modelas decisiones.
¿Qué es un grafo ponderado? Es un grafo donde cada arista tiene un valor o peso asignado, como costo o distancia, que sirve para calcular la mejor ruta entre dos nodos.
¿Dónde se usan los grafos en la vida real?
Los grafos están en todas partes, y reconocerlos te ayuda a entender cómo funcionan muchos productos que usas a diario.
Algunos ejemplos concretos:
- Redes sociales: cada persona es un nodo y las aristas representan amistades, seguidores o interacciones.
- Google Maps: los lugares son nodos y las rutas son aristas. Cuando pides una dirección, un algoritmo busca la ruta más corta dentro del grafo.
- Aerolíneas y tiquetes: las ciudades son nodos, los vuelos son aristas dirigidas y el costo es el peso.
- Redes neuronales en inteligencia artificial: también son grafos, donde cada conexión transmite información entre capas.
Y aquí viene lo interesante: aprender a usar grafos no es solo un ejercicio académico. Es lo que te permite diseñar soluciones reales para problemas reales, desde una app de transporte hasta un motor de recomendaciones.
¿Qué sigue después de entender los grafos?
Una vez tienes claros los nodos, las aristas, la dirección y el peso, estás listo para explorar un tipo muy puntual de grafo: los árboles. Los árboles tienen reglas más estrictas y propiedades específicas que los hacen ideales para problemas como búsquedas, jerarquías y organización de datos.
¿Qué tipo de problema te gustaría resolver con grafos primero: rutas, redes sociales o decisiones con costo? Cuéntamelo en los comentarios.