0.b.1 - Pensamiento Computacional - Descomposición

Objetivo

Entender qué es la "descomposición" de un problema y cómo aplicarla a problemas reales.

1. Contenidos

1.1 ¿Qué es la descomposición?

La descomposición es la técnica de dividir un problema complejo en partes más pequeñas, simples y manejables. En lugar de intentar resolver el todo de una vez, se separa en subproblemas que pueden abordarse de forma independiente.

Características clave:

  • Jerarquización: Los subproblemas pueden descomponerse a su vez en partes aún más simples.
  • Independencia relativa: Cada componente puede analizarse y resolverse por separado.
  • Enfoque sistemático: Sigue una lógica ordenada para fragmentar el problema original.

Ejemplo práctico:

Problema: Organizar un viaje familiar

Descomposición:

  • Transporte (vuelos, coche, tren)
  • Alojamiento (hotel, Airbnb, camping)
  • Actividades (turismo, comidas, excursiones)
  • Presupuesto (costos por categoría)
  • Documentación (pasaportes, visados, seguros)

Beneficios en la vida real:

  • Facilita resolver problemas grandes.
  • Permite asignar tareas a diferentes personas o equipos.
  • Facilita la detección de errores o cuellos de botella.
  • Hace visible la complejidad real del problema.

Esta técnica, fundamental en programación y gestión de proyectos, es igualmente valiosa para planificar proyectos personales, resolver conflictos laborales o tomar decisiones estratégicas.

1.2 Técnicas para la Descomposición

Hay varias técnicas que podemos aplicar para descomponer un problema.

a) Descomposición funcional

Dividir según las funciones o acciones que deben realizarse.

  • Ejemplo: Preparar una cena → cocinar carne, preparar ensalada, poner la mesa, servir bebidas
  • Cuándo usar: Problemas orientados a procesos o tareas

b) Descomposición estructural

Dividir según las partes físicas o componentes del sistema.

  • Ejemplo: Arreglar un coche → motor, frenos, transmisión, sistema eléctrico
  • Cuándo usar: Problemas con entidades físicas o componentes identificables

c) Descomposición secuencial

Dividir según pasos o fases temporales ordenadas.

  • Ejemplo: Hacer una mudanza → empacar, cargar, transportar, descargar, desempacar
  • Cuándo usar: Problemas con orden obligatorio o dependencia temporal

d) Descomposición jerárquica

Dividir en niveles de detalle (de lo general a lo específico).

  • Ejemplo: Administrar un proyecto → fases → tareas → subtareas → actividades
  • Cuándo usar: Problemas muy grandes con múltiples niveles de complejidad

e) Descomposición por responsabilidad

Dividir según quién o qué se encarga de cada parte.

  • Ejemplo: Lanzar un producto → equipo marketing, equipo desarrollo, equipo ventas, equipo soporte
  • Cuándo usar: Problemas que requieren especialización o trabajo colaborativo

f) Descomposición por criterios lógicos

Dividir según categorías o clasificaciones del dominio del problema.

  • Ejemplo: Analizar gastos → fijos, variables, discrecionales, de emergencia
  • Cuándo usar: Problemas con múltiples categorías naturales o claras

g) Descomposición top-down

Empezar con el problema general e irlo subdividiendo recursivamente hasta llegar a partes elementales.

  • Ejemplo: Planificar boda → ceremonia → iglesia → flores → ramo de novia
  • Cuándo usar: Cuando se conoce bien el problema desde una vista general

h) Descomposición bottom-up

Identificar primero las partes más pequeñas y luego agruparlas en componentes mayores.

  • Ejemplo: Mejorar servicio → identificar 20 quejas concretas → agrupar en 5 áreas problemáticas
  • Cuándo usar: Cuando se tienen muchos detalles pero falta la visión general

i) Descomposición por patrones

Dividir identificando subproblemas conocidos que ya tienen solución.

  • Ejemplo: Construir casa → cimientos (patrón conocido), muros (patrón conocido), techo (patrón conocido)
  • Cuándo usar: Problemas con partes estandarizadas o recurrentes

j) Descomposición modular

Dividir en módulos independientes con interfaces claras entre ellos.

  • Ejemplo: Crear tienda online → módulo catálogo, módulo carrito, módulo pagos, módulo usuarios
  • Cuándo usar: Problemas donde las partes pueden resolverse por separado

Resumen práctico:

Técnica Pregunta guía
Funcional¿Qué acciones hay que hacer?
Estructural¿De qué partes se compone?
Secuencial¿En qué orden debe ocurrir?
Jerárquica¿Qué nivel de detalle necesito?
Responsabilidad¿Quién hace cada parte?

Regla de oro: La mejor técnica de descomposición es la que hace que cada subproblema sea lo suficientemente pequeño como para poder resolverlo de forma directa y entendible.

2 Ejercicios

Ejercicio 1: Descomposición Funcional + Jerárquica

Organizar una mudanza internacional (casa completa de 3 habitaciones, de Madrid a Buenos Aires)

Tarea:

Descomponer este problema en al menos 15 subproblemas, organizados jerárquicamente por niveles, utilizando principalmente descomposición funcional (qué hay que hacer) y jerárquica (niveles de detalle).

Esquema guía (incompleto a propósito):

Nivel 1 (Fases generales)
  1. Planificación
  2. Preparación
  3. Embalaje
  4. Transporte
  5. Aduanas
  6. Recepción
Nivel 2 (Subproblemas de "Planificación")
  • Calcular volumen y peso total
  • Investigar empresas de mudanza
  • Gestionar presupuesto
  • (Añadir al menos 2 más)
Nivel 2 (Subproblemas de "Aduanas")
  • Investigar requisitos argentinos
  • Preparar documentación requerida
  • Calcular aranceles
  • (Añadir al menos 1 más)
Nivel 3 (Detalle de un subproblema)

Elegir UN subproblema del Nivel 2 y descomponerlo en 3-5 tareas concretas.

Criterios de éxito:

  • Cada subproblema debe ser una acción (verbo + objeto)
  • No debe haber solapamiento entre subproblemas del mismo nivel
  • La jerarquía debe tener al menos 3 niveles de profundidad

Reflexión final:

¿En qué nivel de detalle se volvería contraproducente seguir descomponiendo?

Ejercicio 2: Descomposición Estructural + Por Criterios Lógicos

Reducir el consumo energético de una oficina de 20 personas en un 40% en 6 meses

Tarea para el alumno:

Descomponer este problema utilizando descomposición estructural (por componentes físicos del sistema) y por criterios lógicos (categorías de consumo), generando al menos dos visiones diferentes del mismo problema.

Parte A - Descomposición estructural:

Dividir el problema según los elementos físicos de la oficina que consumen energía:

  1. Sistema de iluminación
    • Subproblema 1: _______________
    • Subproblema 2: _______________
    • Subproblema 3: _______________
  2. Equipos informáticos
    • Subproblema 1: _______________
    • Subproblema 2: _______________
  3. Climatización (calefacción/aire)
    • Subproblema 1: _______________
    • Subproblema 2: _______________
  4. Electrodomésticos de cocina/office
    • Subproblema 1: _______________
  5. Otros equipos (impresoras, fotocopiadoras...)
    • Subproblema 1: _______________

Parte B - Descomposición por criterios lógicos:

Dividir el MISMO problema según categorías lógicas diferentes:

Criterio "tiempo de uso":
  • Energía consumida en horario laboral
    • Subproblemas: _______________
  • Energía consumida fuera de horario (standby, olvidos)
    • Subproblemas: _______________
Criterio "control humano":
  • Energía controlable directamente por empleados
    • Subproblemas: _______________
  • Energía automática o técnica (termostatos, temporizadores)
    • Subproblemas: _______________
Criterio "costo de solución":
  • Medidas de bajo costo (cambios de hábito)
    • Subproblemas: _______________
  • Medidas de inversión media (cambios de equipos)
    • Subproblemas: _______________
  • Medidas de alta inversión (reformas)
    • Subproblemas: _______________

Parte C - Comparación:

Seleccionar UNA sub-categoría de la Parte B y descomponerla estructuralmente.
Ejemplo: "Energía fuera de horario" → iluminación, ordenadores en standby, climatización nocturna...

Categoría elegida: _____________________________

Descomposición estructural:

  • _______________
  • _______________
  • _______________

Reflexión final:

¿Qué tipo de descomposición (estructural o por criterios) resultó más útil para generar soluciones concretas? ¿Por qué?

Reto

Describe una situación real en la que hayas resuelto un problema mediante descomposición.

Bibliografía