Autor Tema: A ver si alguien puede ayudarme a encontrar/inventar una fórmula matemática

0 Usuarios y 2 Visitantes están viendo este tema.

05 Septiembre, 2018, 10:09 am
Leído 2305 veces

JuanUP

  • Nuevo Usuario
  • Mensajes: 1
  • Karma: +0/-0
  • Sexo: Masculino
A ver si alguien puede ayudarme a encontrar/inventar una fórmula matemática para lo siguiente:
tengo una serie de n úmeros enteros y no divisibles
me gustar ía que se sumasen de tal manera que el resultado sea mayor o igual a un valor dado, pero que el resultado sea el menor posible que más se acerque a este valor dado y por supuesto no hace falta usar todos los numeros enteros disponibles previamente dados, solamente los necesarios para que el resultado sea el deseado.
ejemplo:
12
13
14
15
16
17
quiero que la suma sea la menor posible pero mayor o igual a 40
hay muchas opciones posibles pero la correcta es:

13+15+12=40

alguien puede ayudarme?
muchas gracias por adelantado

06 Septiembre, 2018, 05:14 pm
Respuesta #1

sqrmatrix

  • Novato
  • Mensajes: 172
  • Karma: +0/-0
  • Sexo: Masculino
Saludos, JuanUP.

Si no me equivoco, el problema que propones es una variante del conocido como problema de la mochila. Puedes buscar en Internet "Problema de la mochila", donde encontrarás abundante información. Yo no estoy muy al tanto de los algoritmos que hay para resolver el problema. Sí sé que las soluciones son lentas a medida que crece el número de elementos del conjunto, salvo que los elementos del conjunto tengan unas determinadas características especiales. Quizá alguien con más información sobre el tema te pueda orientar mejor, pero éste es un punto de partida por el que puedes empezar a investigar.

16 Abril, 2019, 05:40 pm
Respuesta #2

nia

  • Novato
  • Mensajes: 172
  • Karma: +0/-2
  • Sexo: Masculino
Nota 

Se me ocurre un tosco programa (a comprobar), que recorre todas las opciones.
He considerado 4 cifras (de las 6): 12,13,14,15. (Versión del 10/Mayo/2019).
         N1,      N2,      N3,       N4                                                ! variables
         a1,       a2,      a3,       a4,               AT,WT                        ! variables
         b1,       b2,      b3,       b4,               BT                             ! variables
         c1,       c2,       c3,       c4,               CT                             ! variables
         N1=12;N2=13;N3=14;N4=15;
         a1=  1;a2 = 1;a3 =  1;a4=  1;        AT=N1*a1+N2*a2+N3*a3+N4*a4
         DISPLAY "nºmáximo y sumandos =",AT, N1*a1,  N2*a2, N3*a3, N4*a4
         INPUT    "nº a aproximar             =":WT 
IF (WT<AT) THEN
                                                              CT=AT, c1=a1;  c2=a2; c3=a3; c4=a4; 
   FOR  b1=0 TO 1; FOR  b2=0 TO 1; FOR  b3=0 TO 1; FOR  b4=0 TO 1
                                                              BT=N1*b1+N2*b2+N3*b3+N4*b4
      IF (BT<CT) THEN                               CT=BT, c1=b1;  c2=b2; c3=b3; c4=b4;  ENDIF
   NEXT b4          ; NEXT b3           ; NEXT b2            ; NEXT b1
         DISPLAY "nº aproxi. y sumandos = ",CT, N1*c1, N2*c2,  N3*c3,  N4*c4
ENDIF   
         DISPLAY "FIN"