贪婪算法

在求解一个问题的过程中,每次选择都是当前最优解(即局部最优解,而非全局最优解)

贪婪算法使用场景:
1,遇到NP完全问题(没有快速算法的问题,即没有全局最优解)时
2,暂时没有想到更好的解法时,因为贪婪算法思路通常会相对简单

贪婪算法问题如背包问题,教室安排问题,广播问题

NP完全问题:简单定义为是,以难著称的问题,如旅行商人问题和集合覆盖问题。
例:(集合覆盖问题)
假如你需要将一则新闻广播到50个州,每个广播站都能广播一定数量的州,且都需要费用(假设费用相同),因此希望用到的广播站尽可能少。设计算法求出最小广播集合。

算法思路:假定一个州集合。每次选取一个广播,选取原则为当前广播占包含数量最多的未覆盖州。
直到需求州数目为0为止。

贪婪算法即属于近似算法的一种。判断一个近似算法的优劣标准如下:
1,速度有多快
2,得到的近似解和最优解的接近程度

如果能够判断一个问题是NP完全问题,则可以不必寻找最优解,直接使用近似算法即可。
那么,如何判断NP完全问题呢?

你可能感兴趣的:(贪婪算法)