Algorithm for highest value inside budget

浪子不回头ぞ 提交于 2019-12-24 01:23:59

问题


I wasn't entirely sure the best way to ask this question (or do the research to see if it has been previously answered).

Given a data set where each entry has a Point value and a Dollar value, I'm looking to generate a list of length N entries that yields the highest aggregate Point value whilst staying within budget B.

Example data set:

Item    Points    Dollars
Apple   3.0       $1.00
Pear    2.5       $0.75
Peach   2.8       $0.88

And with this (small) data set, say my budget (B) is $2.25, and list length (N) must be 2. You MUST use the fixed list length, but are not required to use ALL of the budget.

Obviously the example provided is easy to do in one's head, but given a much larger data set, and both higher N and B values, I'm looking for an algorithm that can generate the list. Having a hard time wrapping my head around this one.

Just looking for a pseudo-algorithm, but if you prefer any given language feel free to respond with that!


回答1:


I am quite positive that this can be reduced to an NP-complete problem and hence it's not really worth trying to develop a process that will always give you the 'correct' answer as many people have tried and failed to do this efficiently over a large data set. However, you can use a much more efficient approximation technique that whilst it will not guarantee to give you the correct answer, many popular approximation algorithms are capable of achieving a high degree of accuracy.

Hope this helps you out :)




回答2:


This problem is NP-Complete (NP and NP-Hard), meaning, that until now there is no algorithm found, that solves this problem in a polynomial amount time (polynomial to the input size) and if you find an algorithm that does, you would have solved one of the greatest problems in computer science (P=NP), which would you at least bring a million dollar reward.

If you are satisfied with an approximation, I would recommend the Greedy-Algorithm:

https://en.wikipedia.org/wiki/Greedy_algorithm



来源:https://stackoverflow.com/questions/33533472/algorithm-for-highest-value-inside-budget

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!