POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

RAM en Marcha

Del recorrido recursivo a la optimización: lecciones de Advent of Code 2024 Día 18 Parte 1 sobre escalabilidad y rendimiento

Publicado el 18/09/2025

Advent of Code 2024 Dia 18 Parte 1 presenta una variacion del clasico reto de hallar la respuesta mas pequena valida. En muchas de las ultimas entregas se pide encontrar la ruta mas corta dentro de un laberinto y, en lugar de implementar un algoritmo de rutas optimas como Dijkstra o A estrella, yo opte por mis herramientas habituales: recursividad, memoizacion basica y fuerza bruta. Este enfoque funciona bien para ejemplos pequeños pero suele chocar con la escala de los datos de la segunda parte de muchos puzzles.

El problema se transforma en una rejilla donde la entrada son coordenadas X,Y en una cuadricula. Para interpretar el input hay que convertir cada linea en un par de numeros y poblar la matriz con celdas libres y celdas bloqueadas. En el ejemplo la rejilla es pequena, mientras que en el input real puede ser mucho mayor. Una tecnica practica es añadir un borde de una celda alrededor de la rejilla para evitar condiciones borde complejas al explorar movimientos.

Mi estrategia para explorar caminos fue recursiva. Mantuve un conjunto de celdas visitadas para evitar ciclos y definir casos base: cuando se llega a la celda final, cuando las cuatro celdas adyacentes son muros o ya han sido visitadas, y cuando la cantidad de pasos supera la mejor solucion conocida para podar la busqueda. Las direcciones posibles son las cuatro vecinas ortogonales. En cada movimiento añado la celda actual al conjunto visitados y al retroceder la elimino para que otras ramas no queden contaminadas por visitas temporales.

Un punto critico fue asegurar que cada llamada recursiva trabaje con su propia copia del conjunto visitados cuando corresponde, de forma que explorar una direccion no borre opciones en otras ramas. Tambien implemente una poda que corta la exploracion si la longitud actual menos uno es mayor que el mejor resultado encontrado, ya que el enunciado pide numero de pasos y no numero de nodos visitados. Tras corregir errores tipicos como sobrecarga de pila, variables no inicializadas y conteo incorrecto por incluir la celda inicial, el algoritmo funciona y da la solucion esperada para el ejemplo.

Sin embargo, al aplicar la misma tecnica al input real el tiempo de ejecucion se dispara. Tras horas corriendo el algoritmo todavia no convergia a la respuesta correcta. Esto ilustra por que en problemas a escala es preferible recurrir a algoritmos especializados o a optimizaciones que eliminen billones de caminos inutiles, o bien a soluciones heuristicas y a capacidades de computo distribuido.

Si tu proyecto requiere transformar una idea en una aplicacion que resuelva problemas complejos a escala, en Q2BSTUDIO somos especialistas en desarrollo de software a medida y aplicaciones a medida pensadas para rendimiento y escalabilidad. Podemos ayudar a reescribir algoritmos recursivos en soluciones eficientes, integrar inteligencia artificial y desplegar en la nube. Con servicios que abarcan desde la creacion de software a medida hasta la implementacion de soluciones de inteligencia artificial para empresas, ofrecemos experiencia en aplicaciones a medida, ia para empresas, agentes IA y mucho mas.

Ademas de optimizacion y desarrollo, Q2BSTUDIO proporciona ciberseguridad y pentesting, servicios cloud aws y azure, y consultoria en servicios inteligencia de negocio y power bi para que tus datos impulsen decisiones. Si tu reto es reducir tiempos de ejecucion, mejorar modelos o desplegar sistemas robustos, podemos asesorarte y construir la solucion adecuada a medida.

Resumen rapido: el enfoque recursivo con copia local de visitas y poda temprana permite resolver ejemplos pequeños y entender el problema, pero para inputs grandes conviene combinar algoritmos optimizados, mejores estructuras de datos y escalado en la nube. Si buscas llevar ese salto, contacta con Q2BSTUDIO para convertir esa necesidad en un proyecto real y eficiente.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio