Sto cercando un algoritmo che possa essere utilizzato per combinare i valori nell'array, per avvicinarsi il più possibile a "un altro valore".Ottenere il valore più vicino per le combinazioni di un array (JS)
Ad esempio, il numero che voglio scoprire è la combinazione che dà il risultato della chiusura a 2.5. E il mio array è [0.5, 1.0, 1.5, 2.0, 3.0]
. La combinazione in questo caso sarebbe 2.0+0.5
.
2.7 fornirebbe la stessa combinazione (2,5 è il più vicino), mentre 3,7 restituirebbe 3.0+0.5
e 7.0 sarebbe 3.0+3.0+1.0
.
Ho letto su diversi algoritmi per creare combinazioni disponibili e simili, ad esempio questo: https://codereview.stackexchange.com/questions/7001/better-way-to-generate-all-combinations Tuttavia, ho difficoltà a scrivere una funzione che consente di utilizzare lo stesso valore più volte (come il mio esempio con 7.0). Questo rende il numero di combinazioni abbastanza grande.
Chi ha un buon esempio nascosto? O hai qualche indicazione da dare?
EDIT @zkar mi ha parlato del "problema dello zaino". Posso aggiungere che per il mio esempio, il valore ricercato si trova in un intervallo specificato (1.0 e 10.0), il che limita un po 'le combinazioni.
Guardate questo [problema dello zaino] (http://en.wikipedia.org/wiki/Knapsack_problem) sembra me che questo è quello che dovresti leggere. – zkar
Mentre sono d'accordo che questo potrebbe rientrare nel "Problema dello zaino", c'è ancora la differenza che ho solo un tipo di valore di cui preoccuparsi (diciamo il peso nell'esempio di Wikipedia), non due. – Marcus
Se si desidera trovare più vicino nella matrice di quanto si possa spingere il numero di ordinarlo e quindi prendere il secondo e il precedente numero di quel numero e provare a utilizzare la matematica.round o prova qualcosa del genere;) – Givi