贪心算法(greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。贪心算法在有最优子结构的问题中尤为有效。
看这个算法的名字:贪心,贪婪,两个字的含义最关键,好像一个贪婪的人所有事情都只想到眼前,看不到长远,也不为最终的结果和将来着想,贪图眼前局部的利益最大化,接下来我们看几个关于贪心算法的案例情形。
从这里我们能简单总结出贪心算法的基本思路:
- 建立数学模型来描述问题。
- 把求解的问题分成若干个子问题。
- 对每一个问题求解,得到子问题的局部最优解。
- 把子问题的解局部最优解合成原来解问题的一个解。