Algorithm 贪婪算法在以下情况下失败的原因

Algorithm 贪婪算法在以下情况下失败的原因,algorithm,dynamic-programming,greedy,Algorithm,Dynamic Programming,Greedy,我试着解决一个问题,这个问题被认为只能用动态规划来解决。问题如下。 一个人的总能量为H,他需要覆盖距离D。他希望在最短时间内使用最大能量覆盖距离H。他可以在5种模式下跑步。根据5种模式中的一种,每公里跑一次就可以覆盖总距离。 这五种模式使用两个排序的数组来描述 时间:-“5米10秒”,“6米11秒”,“7米7秒”,“8米11秒”,“9米11秒” 所需能量:-11,9,8,7,6 所以我的贪婪解决方案策略是 计算x=H/D的楼层 使用花费最少时间和能量的模式运行下一公里原因很简单;你还没有证明你的

我试着解决一个问题,这个问题被认为只能用动态规划来解决。问题如下。 一个人的总能量为H,他需要覆盖距离D。他希望在最短时间内使用最大能量覆盖距离H。他可以在5种模式下跑步。根据5种模式中的一种,每公里跑一次就可以覆盖总距离。 这五种模式使用两个排序的数组来描述

时间:-“5米10秒”,“6米11秒”,“7米7秒”,“8米11秒”,“9米11秒”

所需能量:-11,9,8,7,6

所以我的贪婪解决方案策略是

计算x=H/D的楼层
使用花费最少时间和能量的模式运行下一公里原因很简单;你还没有证明你的算法,所以你不能声称它是正确的。就这么简单。你知道研究文献中有多少启发式算法看起来是正确的,但它们没有正确性的证明吗。因此,它们只是试探法

你的解决方案是启发式的。作为反例。取H=100,D=3。也可以将模式与时间[1,2,3,4,5]对应,相应的能量为[35,34,32,32]


你的首字母x是100/3=33。精力最充沛的时候,你为什么希望这样做会奏效?试着证明你的算法是可行的,你会发现你的逻辑中有一个缺口。好吧,对于你的算法,你现在甚至需要循环-答案是时间:maxE:e你试过调试器了吗?你的x有一个错误的假设,即对于每单位公里,你只能选择具有最高平均总能量的模式。这不是真的,考虑H=8,D=4,具有两种模式1, 10, 5、1。x是2,所以你永远不能选择模式2,所以你将使用40秒和4能量,而最佳策略是模式1跑3公里,模式2跑1公里,模式2跑31秒和8能量total@shole不,看我的逻辑,我在每一步都更新D和H。所以对于最后一公里,H=5,D=1和x=5,所以算法将为最后一公里选择第二种模式。