Código 101: Ratón en un Laberinto

Backtracking para Rat in a Maze: obtiene todas las rutas de inicio a destino en una matriz N x N de 1s y 0s, sin celdas repetidas y en orden lexicográfico.

27 ago 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Code 101: Rat in a Maze

Descripción del problema

Se tiene una matriz cuadrada de orden N por N donde cada celda vale 1 o 0. El ratón comienza en la posición 0,0 y debe llegar a la posición N-1,N-1. El valor 1 indica que la celda es transitable y el valor 0 que está bloqueada. El ratón puede moverse en cuatro direcciones: U arriba, D abajo, L izquierda y R derecha. Se pide encontrar todas las rutas posibles desde el origen hasta el destino sin visitar ninguna celda más de una vez y devolverlas en orden lexicográfico.

Ejemplo 1

Entrada N = 4 m = {{1,0,0,0},{1,1,0,1},{1,1,0,0},{0,1,1,1}} Salida DDRDRR DRDDRR Explicación: Hay dos caminos válidos y ordenándolos lexicográficamente obtenemos DDRDRR DRDDRR

Ejemplo 2

Entrada N = 2 m = {{1,0},{1,0}} Salida No existe camino o la celda destino está bloqueada

Enfoque general

Este es un problema clásico de backtracking y recorrido en profundidad. Desde la celda inicial se exploran recursivamente las cuatro direcciones permitidas respetando las restricciones: no salir de los límites, no entrar en una celda bloqueada, y no visitar una celda ya visitada en la ruta actual. Cada vez que se alcanza la celda destino se registra la ruta construida. Para evitar repetir celdas se emplea una estructura de visitados o se marca la celda temporalmente como no transitables durante la exploración y se restaura al retroceder.

Puntos clave

1 Validar si la celda inicial es transitables 1 y si la celda destino es alcanzable en principio. 2 Usar backtracking con un array de visitados o marcadores temporales. 3 Generar las llamadas recursivas en el orden que permita obtener luego las rutas ya en un orden cercano al lexicográfico o bien ordenar la lista final de rutas. 4 Restaurar marcas al retroceder para permitir que otras rutas reutilicen las celdas.

Pseudocódigo y explicación paso a paso

Función principal findPath(arr,N) Crear lista ans vacía Si arr[0][0] != 1 devolver ans vacío Llamar a findPathHelper(arr,N,0,0,ans,cadena ruta vacía, matriz visitados inicializada a 0) Ordenar ans lexicográficamente Devolver ans

Función recursiva findPathHelper(arr,N,i,j,ans,path,visitados) Si i == N-1 y j == N-1 entonces añadir path a ans y retornar Si i fuera de límites o j fuera de límites o arr[i][j] == 0 o visitados[i][j] == 1 entonces retornar Marcar visitados[i][j] = 1 Llamar a findPathHelper con i+1,j y path + D Llamar a findPathHelper con i-1,j y path + U Llamar a findPathHelper con i,j+1 y path + R Llamar a findPathHelper con i,j-1 y path + L Marcar visitados[i][j] = 0 y retornar

Nota sobre la construcción de la cadena path En el pseudocódigo anterior se indican los movimientos como D U R L sin incluir comillas en la explicación. En una implementación real en Java se concatenarían caracteres o cadenas que representen esos movimientos.

Versión optimizada y alternativa de implementación

En lugar de mantener una matriz visitados separada se puede marcar temporalmente la propia matriz cambiando el valor 1 por -1 cuando se entra en una celda y restaurarlo a 1 al retroceder. Esta técnica reduce uso de memoria auxiliar y simplifica el código. También es importante, tras generar todas las rutas, ordenarlas lexicográficamente antes de devolverlas para cumplir la restricción del enunciado.

Ejemplo de fragmento estilo Java en pseudocódigo (símbolos < y > están escapados para que se vean correctamente) ArrayList<String> ans = new ArrayList<>() if arr[0][0] == 1 then call helper(arr,N,0,0,ans,'') helper pseudocódigo helper(arr,N,i,j,ans,path) if i < 0 or j < 0 or i >= N or j >= N or arr[i][j] == 0 or arr[i][j] == -1 return if i == N-1 and j == N-1 add path to ans and return arr[i][j] = -1 helper(arr,N,i+1,j,ans,path + D) helper(arr,N,i-1,j,ans,path + U) helper(arr,N,i,j+1,ans,path + R) helper(arr,N,i,j-1,ans,path + L) arr[i][j] = 1

Complejidad

En el peor de los casos, donde casi todas las celdas son transitables, el algoritmo explora muchas rutas posibles. La complejidad temporal es exponencial en N por la naturaleza del backtracking; más precisamente puede llegar a O(4^(N*N)) en términos del número de estados si no se elimina simetrías, aunque en la práctica las restricciones de límites y visitados reducen enormemente el espacio explorado. La complejidad espacial es O(N*N) por la matriz visitados y la pila de llamadas recursivas.

Buenas prácticas

1 Evitar reconstruir cadenas demasiado grandes en bucles inncesarios; usar StringBuilder si se desea optimización en Java. 2 Verificar condiciones de borde al inicio para evitar llamadas inútiles. 3 Ordenar la lista final de rutas antes de imprimirla para garantizar el orden lexicográfico. 4 Para instancias muy grandes valorar algoritmos alternativos o heurísticas si sólo se requiere una ruta y no todas.

Variantes y ampliaciones

1 Limitar movimientos a solo derecha y abajo: simplifica mucho el problema y permite DP. 2 Incluir costes por celda y buscar ruta mínima: pasa a ser un problema de caminos con pesos que se resuelve con Dijkstra o A estrella. 3 Permitir saltos o movimientos especiales: requiere adaptar la generación de vecinos.

Acerca de Q2BSTUDIO

Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida. Ofrecemos soluciones completas que incluyen inteligencia artificial para empresas, agentes IA, ciberseguridad, servicios cloud AWS y Azure, e inteligencia de negocio con herramientas como Power BI. Nuestro equipo diseña aplicaciones empresariales personalizadas, integra modelos de IA para resolver problemas reales, y proporciona estrategias robustas de ciberseguridad para proteger datos y aplicaciones. Si necesitas software a medida, aplicaciones a medida, o servicios de inteligencia de negocio, contamos con experiencia para acompañarte desde el análisis hasta la puesta en producción.

Keywords para posicionamiento

aplicaciones a medida, software a medida, inteligencia artificial, ia para empresas, agentes IA, ciberseguridad, servicios cloud aws, servicios cloud azure, servicios inteligencia de negocio, power bi, soluciones IA, desarrollo a medida

Conclusión

El problema Rat in a Maze es un excelente ejercicio para practicar backtracking y profundizar en control de recorridos, marcadores de visitados y generación de soluciones completas. Para soluciones en producción en Q2BSTUDIO podemos adaptar este patrón a problemas reales de navegación, análisis de rutas, o incluso planificación en robots virtuales o físicos integrando capacidades de inteligencia artificial y servicios cloud para escalabilidad y monitorización.

#HappyCoding con Q2BSTUDIO: construimos software a medida, aplicaciones a medida e implementamos inteligencia artificial y ciberseguridad para llevar tus proyectos al siguiente nivel

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat