贪心算法

FRACTIONAL KNAPSACK · MAX CONTAINER · MAX PRODUCT

什么是贪心算法?

贪心算法(Greedy Algorithm)是一种在每一步都做出当前看起来最优的选择的算法策略。它不会回溯,也不会瞻前顾后,而是坚信「局部最优」能逐步导向「全局最优」。

贪心适用的前提是问题具有贪心选择性质:即每一步的局部最优解,最终能组成全局最优解。并非所有问题都满足这一性质(例如 0-1 背包问题贪心就不能得到最优解),但当满足时,贪心往往能得到简洁高效的解法。

下面通过三个经典问题来理解贪心的思想与应用。

分数背包 (Fractional Knapsack)

▸ 要解决什么问题?

你有一个容量为 W 的背包,和若干物品,每个物品有重量 w 和价值 v。与 0-1 背包不同,这里的物品可以分割(例如大米、液体),你可以只取某个物品的一部分。目标是:在不超过背包容量的前提下,使装入背包的总价值最大

贪心策略:按单位价值 v/w 从高到低选取,优先拿“性价比”最高的;空间不足时取分数。

按 v/w 降序排序 → 依次装入背包,空间不足时取分数

参数 · 可视化

0 / 50