You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于《Grokking Algorithms》8.2题贪心策略的最优解疑问

《Grokking Algorithms》8.2题贪心策略疑问解析

问题本质:这是0-1背包问题

首先明确,这道题属于不可拆分的0-1背包问题——7天是背包总容量,每个游览项目是要么全做、要么不做的物品,目标是最大化总价值(意愿分值)。贪心算法在这类问题里没有普适的最优策略,不管是优先选最高分、最短耗时还是最长耗时,都只在特定场景下有效,无法保证所有情况都得到最优解。

为什么作者说“优先选最高分”得不到最优解?

举个简单反例就能直观理解:
假设总时间7天,有三个项目:

  • 项目A:分值10,耗时6天
  • 项目B:分值9,耗时3天
  • 项目C:分值9,耗时3天

按“优先选最高分”的策略,会先选项目A,剩余1天无法安排其他项目,总得分10。但如果选项目B+C,总耗时6天,剩余1天,总得分18——明显比选A的结果好。这就直接证明了优先最高分的贪心策略会失效。

优先短耗时 vs 优先长耗时,哪个更合理?

没有绝对的“更合理”,完全取决于具体的项目组合:

优先短耗时更优的场景

总时间7天:

  • 项目X:分值5,耗时1天(共5个)
  • 项目Y:分值20,耗时6天

优先选短耗时的X,5个项目总耗时5天,总得分25;如果选Y,得分只有20。这时候短耗时策略更优。

优先长耗时更优的场景

总时间7天:

  • 项目P:分值15,耗时7天
  • 项目Q:分值7,耗时3天(共2个)

选项目P的话,总得分15;如果选两个Q,总耗时6天,得分14,比15低。这时候优先长耗时的策略反而能得到更优结果。

再举个极端场景:
总时间7天:

  • 项目M:分值14,耗时7天
  • 项目N:分值8,耗时4天
  • 项目O:分值8,耗时4天

选M的话得分14;而N和O加起来耗时8天超了,只能选一个,得分8。这种情况下优先长耗时的选择显然更好。

结论

0-1背包问题中,所有贪心策略(包括选最高分、最短/最长耗时)都是“启发式”的,只能在部分场景下得到最优解,无法覆盖所有情况。如果要确保得到真正的最优解,必须使用动态规划算法,而不是贪心。

内容的提问来源于stack exchange,提问作者Chandler Bong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:39:19