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
Viendo ahora - 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
Puente más corto entre islas con BFS
Resumen
Imagina que tienes un mapa con dos islas y necesitas construir un puente entre ellas usando la menor cantidad de material posible. Ese es el reto del problema Shortest bridge between islands, una variación clásica de algoritmos sobre matrices binarias que pone a prueba tu capacidad de combinar búsqueda en grafos con razonamiento geométrico.
¿En qué consiste el problema del puente más corto entre islas?
El planteamiento parte de una matriz binaria, igual que en el ejercicio de número de islas. Aquí los unos representan tierra y los ceros representan agua. La diferencia es que ya no debes contar cuántas islas hay: el enunciado garantiza que existen exactamente dos.
Tu tarea es construir un puente entre ambas usando la mínima cantidad de celdas posibles. Cada celda de agua que conviertas en puente cuenta como una unidad de material, y debes encontrar la ruta más corta entre los puntos donde las dos islas están más cerca.
¿Qué es una isla en una matriz binaria? Es un grupo de celdas adyacentes con valor uno, conectadas horizontal o verticalmente, y rodeada de agua por todos sus lados. Las diagonales no cuentan como adyacencia.
¿Por qué importa encontrar la mínima distancia entre dos islas?
La clave está en que una isla puede tener cualquier forma: un anillo, una L, un bloque irregular. Eso significa que no basta con medir desde el centro o desde una esquina arbitraria. Tienes que recorrer los bordes de ambas islas y detectar los puntos donde se acercan más entre sí.
Mira este caso particular del [01:30]: una isla con forma de anillo rodea por dentro a otra isla pequeña. Como el anillo encierra a la segunda isla, la distancia es la misma en cualquier dirección que mires. La respuesta correcta es uno, porque basta una sola celda de agua para unirlas.
Pero cuando las formas son irregulares, el puente óptimo solo aparece en ciertos puntos específicos. Y ahí es donde el problema se vuelve interesante.
¿Cómo se mide el material del puente? Cuenta cuántas celdas de agua necesitas atravesar para llegar de una isla a la otra siguiendo el camino más corto. Cada celda equivale a una unidad de material.
¿Cómo reutilizar el código de número de islas para este reto?
Aquí viene lo interesante: gran parte del trabajo ya lo tienes resuelto. El algoritmo que usaste para identificar islas con DFS o BFS sirve como punto de partida para aislar la primera isla y marcar todas sus celdas.
Una estrategia común sigue estos pasos:
- Recorre la matriz hasta encontrar la primera celda con valor uno.
- Aplica DFS o BFS para marcar todas las celdas de esa primera isla con un identificador distinto, por ejemplo un dos.
- Desde los bordes de esa isla marcada, lanza un BFS por niveles que avance celda por celda sobre el agua.
- Cuenta cuántos niveles de expansión necesitas hasta tocar la segunda isla. Ese número es tu respuesta.
La idea de fondo es que el BFS por niveles garantiza siempre encontrar la distancia mínima en un grafo no ponderado, porque expande en ondas concéntricas desde el origen. La primera vez que toca una celda de la otra isla, ese nivel es la respuesta.
Habilidades y conceptos clave para resolver el problema
Dominar este ejercicio implica integrar varias herramientas de pensamiento algorítmico que conviene tener claras antes de escribir código.
- Matriz binaria: estructura de datos donde solo existen dos valores posibles, en este caso uno y cero, usada para modelar mapas, grillas o estados booleanos.
- Adyacencia ortogonal: dos celdas son vecinas si comparten un lado, no una esquina. Es la regla que define qué celdas pertenecen a la misma isla.
- DFS (Depth First Search): técnica ideal para marcar componentes conectados, como hiciste al identificar islas en el problema anterior.
- BFS (Breadth First Search): el corazón de este reto, porque expande por niveles y encuentra la distancia mínima en grafos no ponderados.
- Reutilización de soluciones: reconocer cuándo un problema nuevo es una extensión de uno conocido te ahorra tiempo y reduce errores.
Una vez tengas claros estos elementos, intenta escribir tu propia implementación antes de ver la solución. Comparte en los comentarios cómo adaptarías el código de número de islas y qué enfoque usarías para construir el puente.