Un diagrama de árbol representa decisiones sucesivas mediante ramas y permite visualizar, enumerar y contar las posibilidades de un problema.
Los diagramas de árbol son una herramienta visual para organizar problemas de conteo. Cada rama representa una decisión y cada recorrido completo desde el inicio hasta una hoja representa un resultado posible.
Cuando un problema tiene pocas etapas, el diagrama permite observar todos los casos. Cuando tiene muchas, ayuda a descubrir una regla de conteo, como el principio del producto, sin necesidad de dibujar cada rama.
El número de hojas representa la cantidad de resultados completos cuando cada hoja corresponde a una configuración válida.
Supongamos que una operación puede ejecutarse en 2 modos y que cada modo puede utilizar 3 niveles de prioridad.
Cada rama del primer nivel se divide en 3 ramas del segundo nivel. Como hay 2 grupos de 3 hojas, el total es 6.
Elige la cantidad de opciones de tres etapas. La simulación genera las hojas del árbol y muestra el cálculo correspondiente al principio del producto.
Si todos los nodos de un nivel tienen la misma cantidad de ramas, podemos contar las hojas multiplicando la cantidad de ramas de cada nivel.
El diagrama de árbol explica visualmente por qué se aplica el principio del producto: cada rama de un nivel se combina con todas las ramas válidas del nivel siguiente.
El siguiente programa genera recorridos completos para dos niveles de decisiones.
const modos = ["manual", "automático"];
const niveles = ["bajo", "alto"];
const resultados = [];
for (const modo of modos) {
for (const nivel of niveles) {
resultados.push(`${modo}-${nivel}`);
}
}
console.log(resultados);
console.log(`Hojas del árbol: ${resultados.length}`);
El primer recorrido elige un modo y el segundo elige un nivel. El árbol tiene 2 × 2 = 4 hojas.
No todos los diagramas tienen que ser regulares. Una rama puede tener más o menos continuaciones que otra.
Cuando el número de ramas depende de las decisiones anteriores, se cuentan las hojas de cada rama y luego se suman. En ese caso, un producto único podría dar un resultado incorrecto.
Una restricción puede impedir que ciertas ramas continúen. Por ejemplo, si una opción ya fue utilizada y no se permite repetirla, esa opción desaparece de los niveles siguientes.
const simbolos = ["A", "B", "C"];
const secuencias = [];
for (const primero of simbolos) {
for (const segundo of simbolos) {
if (segundo === primero) continue;
secuencias.push(`${primero}${segundo}`);
}
}
console.log(secuencias);
console.log(`Hojas válidas: ${secuencias.length}`);
Hay 3 opciones para la primera posición y solo 2 para la segunda, porque no se permite repetir el símbolo elegido. El total es 3 × 2 = 6.
En informática, cada camino de un árbol puede representar una secuencia de decisiones de un algoritmo. Las hojas pueden ser soluciones válidas, soluciones inválidas o estados que deben seguir explorándose.
Contar las ramas permite estimar el tamaño del espacio de búsqueda. Explorar solo algunas ramas o podar las imposibles puede hacer que un algoritmo sea mucho más eficiente.
Los diagramas de árbol también muestran cuándo deben combinarse suma y producto. Si la raíz tiene caminos alternativos, se suman las hojas de esos caminos. Si cada camino tiene varios niveles, se multiplican sus ramas internas.
Esta representación es equivalente a la expresión (2 × 3) + (4 × 2).
El árbol no solo sirve para contar: también ayuda a explicar por qué una solución tiene determinada cantidad de casos y dónde aparecen las restricciones.
Los diagramas de árbol convierten un problema de conteo en una secuencia visible de decisiones. Al recorrer sus ramas podemos enumerar resultados, detectar restricciones y reconocer cuándo aplicar suma, producto o una combinación de ambos.
En el próximo tema estudiaremos tablas y técnicas de enumeración para organizar resultados de forma sistemática.