Resolver puzzles de vías de tren con algoritmos: una lección entre padre e hijo

Fuentes: How my 2yo taught me constraint solving

Un padre aficionado a la programación convierte las tardes de juegos con su hijo de dos años en una exploración algorítmica del sistema de vías de madera Brio. La pregunta que lo mueve es directa: dado un conjunto de piezas, ¿es posible encadenarlas todas formando un circuito cerrado donde cada conector quede emparejado?

El artículo repasa tres enfoques de complejidad creciente. El primero es una búsqueda por backtracking: el programa coloca una pieza, evalúa los conectores abiertos, prueba candidatos y retrocede cuando un ramo no lleva a una solución. Con ocho curvas E se cierra el círculo trivial, pero el algoritmo gasta estados probando orientaciones erróneas antes de encontrar la buena. Al añadir dos tramos rectos para crear un óvalo, el número de estados explorados sube de 254 a 1.930, ilustrando el crecimiento exponencial del espacio de búsqueda.

Cuando entra en escena la pieza de cruce H3, la discusión pasa al terreno de la teoría de grafos: dos ciclos superpuestos, cuatro conectores y la necesidad de ampliar el modelo de datos para representar ranuras internas además de geometría. El autor plantea entonces que con piezas de cuatro conectores el backtracking exhaustivo deja de ser viable y se requieren técnicas más avanzadas: resolución de restricciones y, finalmente, un solver SAT. A lo largo del texto, los diálogos con el niño (“Exponential, Dada”, “Graph with two cycles!”) funcionan como contrapunto humorístico y recuerdan que los algoritmos que parecen intuitivos al resolver puzzles pequeños pueden explotar combinatoriamente al aumentar el tamaño del problema.