Lattice Paths
Partiendo de la esquina superior izquierda de una cuadrícula de 2×2,
y pudiendo moverse solo hacia la derecha o hacia abajo,
hay exactamente 6 rutas hacia la esquina inferior derecha.
¿Cuántas rutas hay en una cuadrícula de 20×20?
1 Visualizando el Problema
Empecemos con el caso pequeño: una cuadrícula de 2×2 tiene exactamente 6 caminos posibles. Cada camino requiere 2 movimientos hacia la derecha y 2 hacia abajo.
Los 6 caminos en una cuadrícula 2×2:
El Insight Clave
Observa algo crucial: todos los caminos tienen la misma longitud. Para ir de (0,0) a (2,2) necesitas exactamente:
Un camino no es más que una secuencia de 4 movimientos: 2 son R (derecha) y 2 son D (abajo).
La pregunta se transforma: ¿De cuántas formas podemos ordenar RRDD?
Reformulando el problema
Conexión con el Triángulo de Pascal
C(n,k) son exactamente los números del triángulo de Pascal. Para n=4, k=2:
Fila 4, posición 2: C(4,2) = 6
2 Programación Dinámica (DP)
Antes de usar la fórmula directa, veamos cómo resolverlo con programación dinámica. Esta técnica es fundamental en algoritmos y tiene aplicaciones mucho más amplias.
La Idea Central de DP
Pregunta clave: ¿Cuántos caminos hay para llegar a cada celda?
Para llegar a cualquier celda (i, j), solo puedes venir de:
- Arriba: celda (i-1, j)
- Izquierda: celda (i, j-1)
Construyendo la tabla (grid 3×3):
■ Bordes = 1 camino ■ Esquina final = 20 caminos
¿Por qué los bordes son siempre 1?
Para llegar a cualquier celda del borde superior, solo puedes ir hacia la derecha: → → → →
Para llegar a cualquier celda del borde izquierdo, solo puedes ir hacia abajo: ↓ ↓ ↓ ↓
Solo hay un único camino posible para cada celda del borde.
Análisis de Complejidad
Llenamos una tabla de (n+1)×(n+1)
Almacenamos toda la tabla
Optimización posible: Solo necesitamos la fila anterior para calcular la actual, así que podríamos reducir el espacio a O(n). Pero para n=20, O(n²) es perfectamente aceptable.
3 Fórmula Combinatoria Directa
La programación dinámica es elegante, pero existe una solución O(n) que usa directamente el coeficiente binomial. Es la forma más eficiente de resolver este problema.
¿Por qué C(2n, n)?
Para un grid n×n necesitamos:
- n movimientos hacia la derecha (R)
- n movimientos hacia abajo (D)
- 2n movimientos en total
Un camino es una secuencia de 2n movimientos donde elegimos cuáles n son "R".
Ejemplo grid 2×2:
Posiciones: 1 2 3 4
Elegir 2 para "R": {1,2}, {1,3}, {1,4}, {2,3}, {2,4}, {3,4}
Caminos: RRDD, RDRD, RDDR, DRRD, DRDR, DDRR
C(4,2) = 6 ✓
Comparación de Métodos
| Método | Tiempo | Espacio | Uso |
|---|---|---|---|
| DP (tabla) | O(n²) | O(n²) | Didáctico |
| DP optimizado | O(n²) | O(n) | Memoria limitada |
| math.comb | O(n) | O(1) | Óptimo |
C(2n, n): El Número Central de Catalan
C(2n, n) es el número central de la fila 2n del triángulo de Pascal. Es el más grande de su fila y aparece en muchos problemas de combinatoria:
- Caminos en cuadrículas (este problema)
- Formas de subir escaleras
- Secuencias balanceadas de paréntesis (relacionado con Catalan)
- Aproximación de π (fórmula de Wallis)