Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复杂背包变化的有效算法_Java_Algorithm_Options_Processing Efficiency_Multipleselection - Fatal编程技术网

Java 复杂背包变化的有效算法

Java 复杂背包变化的有效算法,java,algorithm,options,processing-efficiency,multipleselection,Java,Algorithm,Options,Processing Efficiency,Multipleselection,我正试图找到一个有效的算法来解决我的问题 我有一份人员名单,每个人都知道他需要/想要订购多少物品,以及他可以订购的物品清单 选项列表包含按某种“分数”排序的选项 人: num-需要的项目数 availableItems-包含此项目可用项的列表 人 选项 应该订购的物品 项目和人员之间存在某种联系(格式不重要) 输入- 人员名单 batchNum 输出- 选项列表 注释(可用于提高效率) 每个人需要大约1-8个项目 每人大约有3-n件可用物品 可用项来自包含n个可用项的封闭列表

我正试图找到一个有效的算法来解决我的问题

我有一份人员名单,每个人都知道他需要/想要订购多少物品,以及他可以订购的物品清单

选项列表包含按某种“分数”排序的选项

人:

  • num-需要的项目数
  • availableItems-包含此项目可用项的列表 人
选项

  • 应该订购的物品
  • 项目和人员之间存在某种联系(格式不重要)
输入-

  • 人员名单
  • batchNum
输出-

  • 选项列表
注释(可用于提高效率)

  • 每个人需要大约1-8个项目
  • 每人大约有3-n件可用物品
  • 可用项来自包含n个可用项的封闭列表 (n约为30,但将来可能会有一点变化)
  • 选项列表按得分排序
  • 每个人都喜欢订购独特的物品(效果分数)
  • batchNum表示每个项目的批次(通常为2、3或4),这意味着一个项目只能在batchNum的批次中订购
如果batchNum=3,则如果有3,6,9个项目,则可以订购项目x。。。需要一个如此之多的副本

目前,我的算法是愚蠢的,只是计算所有的选项,但它需要太多的时间,我无法找到一个聪明的解决方案

假设我只需要20个最佳分数,有人能推荐一个更好的算法吗


它将用java编写,但如果伪代码好的话,它将受到欢迎:)

欢迎使用SO。你能告诉我们你试过什么吗?最好是您已经拥有的代码。我想我不理解您的问题,但是为什么第一个人不能从项目列表中尽可能地订购,然后第二个人,依此类推,直到您的项目或人员用完为止?每个人都“知道”他到底要买多少项目(在带有字段“num”的人员中指定),这是限制条件之一