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 de lectura • Equip Q2BSTUDIO

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

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat