贪心算法概述:
贪心算法总是做出当前看来最好的选择,并不从整体最优上考虑,它所做出的选择只是某种意义上的局部最优选择,我们希望通过选择合适的贪心策略使算法得到的结果也是整体最优的。
优化子结构:若一个优化问题的优化解包含它的子问题的优化解,则称其具有优化子结构。
贪心选择性:一个优化问题的全局优化解可以通过局部优化选择得到。
一、活动排布问题:
重新构造一个优化解。 原解和新解都得满足“优化解”该满足的东西 譬如相容 譬如活动个数最大
熟悉的反证法。
合理。证明不管这个基数是多少,挑出来的都是优化解。
二、Huffman Codes
想设计一种编码方式,既可变长又是前缀编码。于是想到采用树这种结构来编码。
依然是反证。B(T)和B(T‘)的关系是因为f(x)和f(y)的深度。
依然是使用交换论证法。和上个问题想法是一样的捏。仅最后位不同指的是x、y相对位置。
最小堆参考:图解:最小堆构建、存储、插入、删除过程 - 爱吃牛油果的璐璐的文章 - 知乎 https://zhuanlan.zhihu.com/p/341418979
三、最小生成树 Minimal spanning tree problem
对于一个连通图来说,不管其中顶点如何扩张,都变不出回路来捏。
在更新之后将key[r]设为0,这个操作保证了r作为树的根节点。有一个节点会连接到r节点……
四、Minimum Makespan Scheduling
妙啊~利用平均时间和贪心策略来建立联系。