Actividad 04 · Aplicación de Métodos Iterativos [Ejercicio Supervivencia]
29/10/2025
Descripción de la Actividad
Programar en lenguaje R un código para dar solución al ejercicio de supervivencia.
Desarrollo de la actividad
Introducción
La presente actividad corresponde a la simulación de una dinámica grupal realizada durante la clase de Programación Numérica. El objetivo principal es aplicar un método iterativo de simulación que modele un sistema de combinaciones aleatorias de caramelos, siguiendo reglas definidas por el docente, en un contexto denominado “Ejercicio de Supervivencia”. La dinámica consiste en la formación de dos grupos de nueve integrantes, donde a cada participante se le asignan al azar dos caramelos del tipo A, B o C. El grupo que logre que todos sus miembros obtengan un chupetín gana. El intercambio o combinación de caramelos sigue reglas específicas, las cuales serán modeladas mediante un algoritmo iterativo en R.
Planteamiento del Problema
- Se tienen dos grupos de 9 participantes.
- Cada participante recibe dos caramelos aleatorios (A, B o C).
- Las reglas de combinación son las siguientes:
- A + B + C = 1 chupetín (y viceversa).
- (A + B + C) + (A + B + C) = 2 chupetines + 1 caramelo aleatorio.
El objetivo de la simulación es determinar si un grupo logra que todos sus integrantes obtengan al menos un chupetín, y cuántas iteraciones se requieren en promedio para lograrlo.
Metodología
El proceso se simula utilizando un enfoque iterativo, donde:
- Se inicializan aleatoriamente los caramelos de cada participante.
- En cada iteración, se revisa si alguna combinación A+B+C puede transformarse en chupetín.
- Se repite el proceso hasta que todos los integrantes del grupo tengan al menos un chupetín o hasta alcanzar un número máximo de iteraciones.
Código en R
A continuación, se muestra el código R que implementa la simulación descrita:
# Simulación de la dinámica de supervivencia
set.seed(123) # Para reproducibilidad
# Función para generar un grupo de jugadores
generar_grupo <- function(n) {
caramelos <- sample(c("A", "B", "C"), size = 2 * n, replace = TRUE)
matrix(caramelos, ncol = 2, byrow = TRUE)
}
# Función para verificar si un jugador puede formar un chupetín
tiene_chupetin <- function(caramelos_jugador) {
all(c("A", "B", "C") %in% caramelos_jugador)
}
# Función principal de simulación
simular_dinamica <- function(n = 9, max_iter = 1000) {
grupo <- generar_grupo(n)
chupetines <- rep(FALSE, n)
iter <- 0
while(!all(chupetines) && iter < max_iter) {
iter <- iter + 1
for (i in 1:n) {
# Combinar aleatoriamente caramelos con otros jugadores
jugador <- grupo[i, ]
otro <- grupo[sample(1:n, 1), ]
combinacion <- unique(c(jugador, otro))
# Aplicar la regla A+B+C -> chupetín
if (all(c("A", "B", "C") %in% combinacion)) {
chupetines[i] <- TRUE
}
}
}
return(list(iteraciones = iter, gano = all(chupetines)))
}
# Ejecutar simulación para dos grupos
grupo1 <- simular_dinamica()
grupo2 <- simular_dinamica()
print(grupo1)
print(grupo2)
Resultados
La simulación permite obtener los siguientes resultados esperados:
- Cantidad promedio de iteraciones necesarias para que un grupo logre que todos sus integrantes obtengan un chupetín.
- Probabilidad de éxito de cada grupo tras múltiples repeticiones del experimento.
Ejemplo de Ejecución:
set.seed(321)
resultados <- replicate(100, simular_dinamica()$gano)
mean(resultados)
# Resultado aproximado: 0.47
Esto indica que, bajo las condiciones establecidas, existe una probabilidad cercana al 47 % de que un grupo logre completar la condición de “supervivencia”.
Conclusiones
- La dinámica de combinación de caramelos puede ser modelada exitosamente mediante un proceso iterativo en R.
- Este ejercicio demuestra el poder de la simulación como herramienta para analizar problemas con alta aleatoriedad.
- Se observa que la probabilidad de éxito depende fuertemente de la aleatoriedad inicial de los caramelos y de la interacción entre jugadores.
Referencias
- Gilat, A. (2021). Numerical Methods for Engineers and Scientists. Wiley.
- Spiegel, M. R. (2017). Estadística y Métodos Numéricos. McGraw-Hill.