这两节课老师讲了贪心算法,贪心算法,顾名思义,就是解决问题的过程中要贪心,通过几次的贪心的选择,寻找到最优的的结果。这是一种思想,而非什么函数啥的。我的理解就是贪心算法并不是从整体去找最优解,而是把整体分成一个个小部分,寻找局部的最优解。如果一个问题可以用好几种方法去解决,那贪心算法我们应优先使用。 1,理论基础 贪心算法是一种在每一步都选择最优的选择,在每一步做的选择都是在当前状态下最好的选择,通过局部最优解来得到整体最优解。 2,最优子 当一个问题的最优解包含其子问题的最优解时,那么撑这个问题具有最优子结构的性质。 3,求解过程 使用贪心算法时要考虑几个因素 (1),候选集合A 问题的最终解来自于候选集合A。 (2),解集合S (3),解决函数solution 检查解集合S是否构成问题的完整解。 (4),选择函数select 贪心策略,这个指出哪个候选对象最有希望构成问题的解。 (5),解决函数feasible 检查解集合扩展后是否满足约束条件。 4,一般流程 Greedy(A) { S={ }; while (not solution(S)) { x = select(A); if feasible(S, x) S = S+{x}; A = A-{x}; } return S; } 以上基本就是我的感悟,其实并没有学到太多,还是自己水平不够感悟不深。-_-||