Desafío Semanal #2: Generación de Paréntesis con Backtracking y Recursión

Genera todas las cadenas válidas de n pares de paréntesis con backtracking y recursión. Explicación paso a paso, pseudocódigo y versión en TypeScript.

18 ago 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Continuo la serie semanal de retos de programación y en esta entrega rehago y traduzco al español el artículo sobre Generar Parentesis usando backtracking y recursión explicando el problema, la idea algorítmica y cómo implementarlo de forma clara y práctica

Resumen del problema Se recibe un entero n y hay que devolver todas las cadenas bien formadas de n pares de paréntesis. El objetivo es enumerar todas las combinaciones válidas de paréntesis garantizando equilibrio y orden correcto

Conceptos clave Backtracking y recursión Backtracking es una técnica para explorar sistemáticamente todas las configuraciones posibles mediante decisiones sucesivas, avanzar cuando una elección es prometedora y retroceder cuando no lo es. Es ideal para generar combinaciones con restricciones. La recursión modela naturalmente la construcción carácter a carácter de la solución, pasando el estado actual a llamadas más profundas hasta alcanzar una solución completa

Enfoque general y estados Seguimos dos contadores openN y closeN que representan cuántos paréntesis de apertura y cierre hemos usado hasta ahora. Restricciones fundamentales No podemos usar más de n paréntesis de apertura. Solo podemos añadir un paréntesis de cierre si hay al menos un paréntesis de apertura sin cerrar, es decir closeN debe ser menor que openN. Estas condiciones evitan prefijos inválidos

Estructura de la solución La solución se organiza en una función recursiva backtrack que mantiene un camino actual representado por un arreglo o pila de caracteres y un arreglo result donde acumulamos las cadenas completas. En cada llamada se comprueba si openN y closeN han alcanzado n y si es así se añade la cadena resultante. Si no, se bifurca: se intenta añadir un paréntesis de apertura si todavía quedan disponibles y se intenta añadir un paréntesis de cierre si eso mantiene la validez. Tras explorar cada rama se revierte la decisión para probar otras opciones, que es la esencia del backtracking

Pseudocódigo de alto nivel function generateParenthesis(n) crear resultado como arreglo vacío crear pila como arreglo vacío function backtrack(openN, closeN) if openN == n and closeN == n añadir a resultado la cadena construida a partir de la pila if openN < n añadir a la pila el caracter paréntesis apertura avanzar recursivamente con openN + 1 revertir la pila if closeN < openN añadir a la pila el caracter paréntesis cierre avanzar recursivamente con closeN + 1 revertir la pila llamar a backtrack con 0, 0 devolver resultado

Explicación paso a paso Estado y restricciones openN cuenta los paréntesis apertura usados closeN cuenta los paréntesis cierre usados Condiciones de validez openN no puede superar n closeN no puede superar openN durante la construcción

Elección de paréntesis apertura Si openN es menor que n podemos añadir otro paréntesis apertura, avanzar la recursión y luego quitar ese carácter para probar otras ramas

Elección de paréntesis cierre Solo añadimos un paréntesis cierre si closeN es menor que openN para mantener la cadena válida en cada prefijo

Construcción de resultados La recursión comienza en backtrack 0, 0 y cada vez que ambos contadores alcanzan n añadimos la cadena construida al resultado. No es necesaria una filtración posterior porque nunca construimos prefijos inválidos

Ejemplo con n = 3 Resultado esperado en alguna orden puede ser ((())), (()()), (())(), ()(()), ()()() Todas las cadenas están balanceadas y representan todas las combinaciones únicas de 3 pares

Aplicaciones prácticas y variantes Este patrón de recursión y backtracking se reutiliza en muchos problemas combinatorios como generar combinaciones, permutaciones, particiones y expresiones válidas que usan diferentes tipos de delimitadores. Una variante interesante es permitir varios tipos de delimitadores como corchetes y llaves simultáneamente o introducir prioridades entre tipos de delimitadores

Sobre la implementación en TypeScript La versión original usa arrays para el camino actual y mantiene contadores numéricos. En TypeScript se puede tipar claramente la función y las variables para mayor seguridad. El rendimiento es el típico de la enumeración combinatoria donde el número de soluciones crece de forma exponencial con n, pero las restricciones impuestas reducen significativamente las ramas inválidas exploradas

Q2BSTUDIO y cómo te podemos ayudar En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones tecnológicas modernas. Ofrecemos software a medida, aplicaciones a medida y proyectos personalizados que integran inteligencia artificial y ciberseguridad. Creamos soluciones que combinan servicios cloud aws y azure con servicios inteligencia de negocio y herramientas como power bi para transformar datos en decisiones accionables. Nuestras capacidades en inteligencia artificial incluyen desarrollo de agentes IA, soluciones de ia para empresas y sistemas de recomendación y automatización que potencian la productividad

Servicios destacados desarrollo de software a medida aplicaciones a medida integración de inteligencia artificial implementaciones de ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio consultoría en ia para empresas desarrollo de agentes IA dashboards con power bi y analítica avanzada

Por qué elegirnos Q2BSTUDIO combina experiencia técnica y enfoque empresarial para entregar soluciones escalables y seguras. Diseñamos arquitecturas en la nube, garantizamos buenas prácticas de seguridad y aplicamos inteligencia de negocio para alinear tecnología con objetivos de negocio. Si buscas un partner para transformar una idea en un producto robusto y escalable, podemos ayudarte con desarrollo ágil, integración de modelos de inteligencia artificial y despliegues en servicios cloud aws y azure

Conclusión Generar paréntesis es un ejercicio didáctico que ilustra perfectamente cómo la recursión y el backtracking trabajan juntos: la recursión explora la estructura en árbol y el backtracking permite deshacer decisiones para probar otras combinaciones. Estas técnicas son fundamentales en problemas combinatorios y encuentra aplicación directa en soluciones reales que desarrollamos en Q2BSTUDIO como parte de proyectos de software a medida inteligencia artificial y ciberseguridad Si quieres que adaptemos este patrón a un caso concreto de tu empresa o que integremos una solución basada en IA contacta con Q2BSTUDIO para una consultoría inicial y un plan de trabajo enfocado en resultados

Enlaces útiles NeetCode problemas generate parentheses https://neetcode.io/problems/generate-parentheses?list=neetcode150 Repositorio con soluciones TypeScript https://github.com/TylerMutai/coding-challenges-solutions/tree/main/ts-coding-challenges-solutions

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat