贪心算法

【贪心算法的定义】

贪心算法又称做“贪婪算法”。
在对问题求解时,总是做出在当前看来是最好的选择(贪心)。
不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题,它能产生整体最优解或者是整体最优解的近似解。

【数据结构中的贪心算法实例】

Huffman算法
单源点最短路径算法:Dijkstra算法
最小生成树算法
Prim算法
Kruskal算法
拓扑排序

【贪心算法的基本要素】

1.贪心选择性质

可通过做局部最优(贪心)选择来达到全局最优解。

2.最优子结构性质

问题的最优解包含了子问题的最优解。

【动态规划 VS. 贪心算法】

共同点:
都要求问题具有最优子结构性质;
动态规划算法:
自底向上,求解出很多子问题,然后再做出选择;
贪心算法:
自顶向下,第一步为贪心选择,将原问题变成一个相似的、但规模更小的问题,而后每一步都是当前看似最佳的选择。
从求解的全过程来看,每一次贪心选择都将当前问题归纳为更小的相似子问题,而每一次选择都仅做一次,无重复回溯过程,具有较高的时间效率。

原文地址:https://www.cnblogs.com/wxgblog/p/tanxinsuanfa.html