Skip to content
难度基础(★)
建议时长45分钟

14.3.4 贪心法

贪心法每一步都选择当前看来最优的方案,并希望这些局部最优选择最终组成全局最优解。它的优点是简单高效,风险是局部最优并不总能推出全局最优。

贪心法成立的两个条件

条件含义
最优子结构全局最优解包含子问题的最优解
贪心选择性质当前局部最优选择可以导向全局最优

如果只有最优子结构而没有贪心选择性质,往往要用动态规划。

典型例子

问题贪心选择
哈夫曼树每次合并最小的两个权值
Kruskal每次选不成环的最小边
Prim每次选连接集合内外的最小边
Dijkstra每次确定当前距离最小的未确定顶点

贪心为什么快

贪心通常不回溯、不填完整状态表,只做当前决策,因此实现简洁、效率高。但它依赖问题性质,一旦性质不满足,就可能得到错误结果。

本节例题

单选
下列问题中,最典型使用贪心策略的是:

自查清单

  1. 能否说明贪心法为什么不一定总正确?
  2. 能否区分最优子结构和贪心选择性质?
  3. 能否把哈夫曼树、Prim、Kruskal、Dijkstra 与贪心联系起来?