13得票3回答
在背包中打印袋子里的物品

假设您是一名小偷,闯入了一所房子。你找到了以下物品: 一个重量为3磅的花瓶,价值50美元。 一个重量为6磅的银块,价值30美元。 一幅重4磅的画,价值40美元。 一面重5磅的镜子,价值10美元。 解决这个大小为10磅的背包问题的方案是90美元。 使用动态规划的方法制作的表如下: 现在我想知道...

8得票1回答
类似背包问题的动态规划算法Java代码

一个关键任务的生产系统有n个阶段,必须按顺序执行;第i个阶段由机器M_i执行。 每台机器M_i都有一个可靠运行的概率r_i和一个失效的概率1-r_i(故障是独立的)。因此,如果我们使用单个机器执行每个阶段,则整个系统工作的概率为r_1、r_2、...、r_n。为了提高这个概率,我们通过在执行...

19得票6回答
你需要为动态规划背包问题排序输入吗?

我发现在动态规划解决01背包问题时,每个例子中都存在物品的重量(成本)和收益,但从未明确提到需要对物品列表进行排序。然而,在所有这些例子中,它们都按照重量和收益递增的顺序进行排序(在这些例子中,重量越大,利润越高)。因此,我的问题是:当将物品从物品数组/列表添加到矩阵中时,我是否可以以任何顺序...

15得票5回答
Haskell中动态规划的高效表格

我已经使用Haskell编写了0-1背包问题的代码。到目前为止,我对实现的惰性和通用程度感到相当自豪。 我首先提供了创建和处理惰性二维矩阵的函数。 mkList f = map f [0..] mkTable f = mkList (\i -> mkList (\j -> f ...

7得票3回答
动态规划存在的问题

我遇到了理解动态规划的困难,所以我决定解决一些问题。我知道基本的动态算法,如最长公共子序列、背包问题,但我知道它们是因为我读过它们,但我自己想不出什么 :-( 例如,我们有一个自然数的子序列。我们可以对每个数字进行加减运算,最后取这个和的绝对值。对于每个子序列,找到最小可能的结果。 in1...

9得票1回答
有什么因素会影响优化尾递归吗?

我正在使用动态规划解决Haskell中的背包问题。我的第一次尝试是构建一个二维表。但是当输入很大时(例如100 * 3190802表),内存很容易耗尽。 由于任何给定行i只依赖于行(i-1),因此我编写了一个函数,希望利用尾递归的优势: import Data.Vector (Vector...

8得票3回答
Haskell背包问题

我已经用Scala编写了一个解决有限背包问题的答案,其中每种物品只有一个,现在想要将其转换为Haskell,并得到以下结果: knapsack :: [ ( Int, Int ) ] -> [ ( Int, Int ) ] -> Int -> [ ( Int, Int ) ...

8得票2回答
解决分配珠子难题的算法?

假设您有一个圆圈(如下所示),其中有 N 个点,您在插槽中分布了 N 个珠子。 这是一个例子: 每个珠子可以顺时针移动 X 个插槽,这需要花费 X ^ 2 美元。 您的目标是最终在每个插槽中放置一个珠子。 您需要花费的最少金额是多少? 此问题的更有趣的变体:分配珠子难题的算法(2)?

8得票5回答
曲棍球游戏池算法

这是一个小有趣的项目,我开始尝试最大化赢得我们办公室冰球比赛的机会。我正在尝试找到在最大薪资帽下能给我带来最多积分的20名球员。 例如,假设原始数据由以下信息组成: 球员姓名 位置(前锋、后卫、守门员) 本赛季预计得分 薪资 现在我想要在X薪资帽下选出使我获得最多积分的20名球员。以...

19得票4回答
如何使用背包算法找出袋子中有哪些元素,而不仅仅是袋子的价值?

我这里有一段代码,使用背包算法(二进制装箱NP难问题)计算出最优值:int Knapsack::knapsack(std::vector<Item>& items, int W) { size_t n = items.size(); std::vector&...