Ver Mensaje Individual
  #19  
Antiguo 06-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
Hola Ñuño,
Es cierto que con emplear matrices se podría... aunque no estoy seguro... por la alta combinación de elementos (aunque esto no es tanto el problema) y también el hecho de como armaríamos la matriz.

el método de Karnaut... me suena, no se de donde... no recuerdo haberlo visto.

A mi este problema me ha dejado intranquilo. Intranquilo debido al hecho de que no se me ocurre que método emplear para conseguir evitar explorar las altas combinaciones posibles.

Mi idea:
1. Supuesto débil: todos los números son inferiores al resultado.
Tomar el resultado y buscar el valor más alto de entre la lista.
En base a la diferencia:
1. Si la diferencia es despreciablemente menor al número tomado de lista
1.1. La primera combinación a probar es la suma (es más probable que debido a cierta "proximidad" de los valores hallar un segundo número alto que de acuerdo a la suma se acerce al resultado)
2. SINO, es decir que la diferencia es apreciablemente mayor al número tomado de la lista:
2.1. La prima combinación a probar es la multiplicación
3. Elegir el segundo número según la proximidad
4. Actualizar el resultado siendo igual a la diferencia entre el resultado y la operación realizada: Resultado = Resultado - Operación(Numero1,Numero2)

La intención de esto es conseguir al menos el número más próximo al resultado.
El término despreciable y apreciable podría evaluarse según algunos indicadores estadísticos: varianza, media, mediana.

En pocas según la desviación que experimenten los números entre si y contra el resultado se vayan probando diversas operaciones. La regla sería así:
Cuanto mayor sea la varianza, la operación a probar es la multiplicación
Cuanto menor sea la varianza, la operación a probar es la suma

El problema de esto es que no se me hace sencillo codificarlo. Decirlo es sencillo pero cuando intento hacerlo en código es otra cosa. Si alguien me entiende y se anima a codificarlo lo animo a que continue. Tal vez funcione, tal vez no... pero al menos podríamos conseguir un número relativamente cercano. (algo que no se si con la técnica de matrices se pueda llegar a una solución).

En fin... es un punto de vista.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita