贪心算法和最优子结构

时间:2013-11-11 09:58:50

标签: algorithm greedy

Wikipedia page上,据说贪婪算法仅适用于具有最佳子结构的问题。

问题:

  1. 什么是最佳/非最佳子结构?
  2. 什么是本地和全球最优?
  3. 如何证明贪婪算法能够产生全局最优?

1 个答案:

答案 0 :(得分:16)

我找到了答案,很高兴分享:

  1. 什么是最佳/非最佳子结构?如果可以从子问题的最优解中有效地构造最优解,则认为问题具有最优子结构。此属性用于确定动态编程和贪婪算法对问题的有用性

  2. 什么是本地和全球最优? 优化问题的局部最优是在相邻候选解集合中最优(最大或最小)的解决方案。 全局最优 - 是所有可能解决方案中的最佳解决方案,而不仅仅是特定价值邻域中的解决方案。

  3. 如何证明贪婪算法能够产生全局最优? 通常,全局最优可以通过归纳来证明。通常,贪婪算法用于解决具有最佳子结构的问题,如果可以通过归纳证明这在每个步骤是最佳的。否则,提供问题也会出现重叠的子问题,使用动态编程。

  4. 为了证明使用贪婪算法可以解决优化问题,我们需要证明问题具有以下内容:

    最优子结构属性:最优全局解包含所有子问题的最优解。

    贪婪的选择属性:通过贪婪地选择局部最优选择,可以获得全局最优解。

    在某些情况下,可以使用拟线来机械地证明特定问题可以通过贪婪的方法来解决。

    最后,some good examples of greedy algorithms