Sto cercando di risolvere il seguente problema nel modo più efficiente che riesco a trovare.
Voglio scambiare i miei articoli con articoli di qualcun'altro, ogni articolo ha un prezzo e un valore.
Voglio massimizzare il valore degli articoli che scambiamo, quindi ad esempio:
I miei articoli:
Banana, P: 10, V: 5
Pen, P:3, V:1
Paper, P: 1, V: 1
Loro articoli:
Phone, P: 10, V: 8
Key, P: 1, V: 2
Wallet, P: 30, V: 100
Puoi vedere che posso scambiare Banana e Carta (con valore 6) con Telefono e Chiave (con valore 10)
Posso pagare più del dovuto ma non posso pagare di meno e l'importo da pagare in eccesso è perso. Attualmente la mia soluzione è quella di utilizzare generare tutte le possibili combinazioni dei miei articoli e cercare di abbinare il prezzo all'algoritmo dello zaino e controllare ogni risultato.
Questo però non è molto efficiente perché posso avere più di 1000 oggetti (sia il mio che l'altra persona).
Qualcuno ha una possibile soluzione a questo problema? Ho bisogno che sia efficiente ma che mi dia anche la soluzione migliore (valore migliore)
-
Gli elementi non sono infiniti e hanno un limite.
-
Non ho una scala quanto sia efficiente avere bisogno ne ho bisogno per uno scenario di vita reale in cui utilizzo un processore i7 6700 a 4 core e il problema si esegue per centinaia di volte con diversi set.
-
Posso pagare più del dovuto, tuttavia, il valore è correlato al prezzo. e così Se scambi articoli del valore di 100 per 10 (prezzi) ne ho persi 90 (puoi pensare ai dollari se aiuta) e quindi solo per rompere il valore di cui ho bisogno per guadagnare oltre il +90.
-
Decido i valori di ogni elemento dal mio database