Programación Dinámica y Problema de la Mochila Hilda García Hernández Tania Abigail Martínez Chávez Adrián Sánchez García Programación Dinámica Es un método para resolver problemas complejos al quebrarlos en subproblemas mucho mas sencillos de una manera recursiva. Cuando se aplica? Una enorme cantidad de problemas. Problemas cuyas soluciones parciales se solapan. Grupos de problemas de muy distinta complejidad. Problema de la Mochila El problema de la mochila es un problema que consiste en escoger un conjunto de artículos para llenar una mochila de modo de que se cumplan ciertas restricciones. Se tienen n objetos fraccionables y una mochila. El objeto i tiene peso pi y una fracción xi (0≤xi≤1) del objeto i produce un beneficio bixi. El objetivo es llenar la mochila, de capacidad C, de manera que se maximice el beneficio. maximizar sujeto a bi xi 1i n pi xi C 1i n con 0 xi 1, bi 0, pi 0, 1 i n Algoritmo Recursivo M[0,W] M[i, 0] M[i, W] M[i, W] =0 =0 = m[i-1,W] si Wi>W = max(M[i-1,W, M[i-1,W-Wi] + Wi) si Wi<=W Ejemplo PRESUPUESTO TOTAL: $50,000 Solución Maximizar: 15x1 + 8x2 + 15x3 + 17x4 +7x5 Sujeto a: 50000x1 + 25200x2 + 36000x3 + 47000x4 + 12000x5 < 50000 x1,x2,x3,x4,x5 Є {0,1} P =NMaximize[{15x1+8x2+15x3+17x4+7x5, 50000x1+25200x2+36000x3+47000x4+12000x 5≤50000, x1≥0, x2≥0, x3≥0, x4≥0, x5≥0, x1≤1, x2≤1, x3≤1, x4≤1, x5≤1, x1Integers, x2Integers, x3Integers, x4Integers, x5Integers},{x1,x2,x3,x4,x5}] {22., {x1->0, x2->0, x3->1, x4->0, x5->1} Solución JUGADOR SUELDO APORTACION RAZON (A/S)*1000 1 $50,000 15 .30000 2 $25,200 8 .31746 3 $36,000 15 .41666 4 $47,000 17 .36170 5 $12,000 7 .58333 $36,000 + $12,000 = $48,000 GRACIAS