贪婪算法

/greedy-algorithm

在本教程中,您将学习什么是贪婪算法。 此外,您还会找到一个贪婪方法的示例。

贪心算法是一种通过选择当前可用的最佳选项来解决问题的方法,而无需担心将来会带来什么结果。 换句话说,本地最佳选择旨在产生全局最佳结果。

对于所有问题,该算法可能都不是最佳选择。 在某些情况下,它可能会产生错误的结果。

该算法永远不会返回来扭转所做出的决定。 该算法以自顶向下的方式工作。

该算法的主要优点是:

  1. 该算法更容易描述
  2. 与其他算法相比,该算法的性能更好(但并非在所有情况下)。

可行的解决方案

一种可行的解决方案是为问题提供最佳解决方案的解决方案。


贪婪算法

  1. 首先,解决方案集(包含答案)为空。
  2. 在每个步骤中,将一个项目添加到解决方案集中。
  3. 如果解决方案集可行,则保留当前项目。
  4. 否则,该项目将被拒绝,不再考虑。

贪婪方法示例

Problem: You have to make a change of an amount using the smallest possible number of coins.
Amount: $28

Available coins:
  $5 coin
  $2 coin
  $1 coin

解决方案

  1. 创建一个空的solution-set = {}
  2. coins = {5, 2, 1}
  3. sum = 0
  4. sum≠38时,请执行以下操作。
  5. coins中选择一个硬币C,使得sum + C < 28
  6. 如果C + > 28之和,则不返回任何解。
  7. 否则,sum = sum + C
  8. C添加到solutionSet中。

在前 5 次迭代之前,解决方案集包含 5 个 5 美元个硬币。 之后,我们得到 1 个 2 美元硬币,最后得到 1 个 1 美元硬币。


贪婪算法应用