Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

Latest commit

 

History

History
44 lines (27 loc) · 1.53 KB

File metadata and controls

44 lines (27 loc) · 1.53 KB

前言

决策是从给定的解决方案域中做出的。由于贪婪,选择了似乎提供最佳解决方案的最接近的解决方案。

贪婪算法试图找到局部最优解,最终可能导致全局最优解。但是,通常,贪心算法不会提供全局优化的解决方案。

现实问题

计数硬币

通过选择尽可能少的硬币来计数到期望值,并且贪婪方法迫使算法选择最大可能的硬币

问题1

我们给我们提供了面值为1、2、5和10的硬币,并且要求我们计数面值为18,那么贪婪的过程将是-

1-选择一个面值为10硬币,剩余数量为8

2-然后选择一个面值为5硬币,剩余数量为3

3 −然后选择一个面值为2硬币,剩余计数为1

4-最后,选择1个面值为1硬币解决了这个问题

问题2

对于货币系统,假设我们有面值为1、7、10枚硬币,则计数至18枚硬币绝对是最佳选择, 但对于15枚硬币,则可能会使用比必要数量更多的硬币。 例如,贪婪方法将使用10 +1 + 1 +1 +1 + 1,总共6个硬币。 只需使用3个硬币(7 + 7 + 1)就可以解决相同的问题

因此,我们可以得出这样的结论:

贪婪的方法选择了一种立即优化的解决方案,并且在全局优化问题上可能会失败。

大多数网络算法都使用贪婪方法

  • 旅行商问题 Prim的最小生成树算法
  • Kruskal的最小生成树算法
  • Dijkstra的最小生成树算法
  • 图形-地图着色
  • 图形-顶点覆盖
  • 背包问题
  • 作业调度问题