《数据结构与算法分析》第十章整理
贪婪算法
greedy algorithm
optimal/suboptimal solution
简单调度问题
non-preemptive scheduling
- 平均完成时间最小化
- 最后完成时间最小化
近似装箱问题
bin packing problem
- 联机算法 on-line
脱机算法 off-line
将各项物品排序,把最大的物品放在最先。
下项适合算法 next fit
当处理任何一项物品时,检查看他是否还能装进刚刚装进物品的同一个箱子中去。如果能够装进去就把它放入该箱子中;否则,就放入一个新的箱子。
首次适合算法 first fit
依次扫描这些箱子,但把新的一项物品放入能装下它的第一个箱子中。
最佳适合算法 best fit
不是把一项新物品放入所发现的第一个能容纳它的的箱子中,而是放到所有箱子中能够容纳它的最满的箱子中。
哈夫曼算法
Huffman code
- 最优哈夫曼编码树
分治算法
divide and conquer
- 降低时间复杂度
- 最近点问题
- 选择问题
- 整数相乘
- 矩阵乘法
动态规划
dynamic programming
当编译器不能正确的对待递归算法,导致低效的算法时,将递归算法重新写成非递归算法,让后者把那些子问题的答案系统的记录在一个表内。
- 用一个表代替递归
- 矩阵乘法顺序安排
- 最优二叉查找树
- 所有点对最短路径
随机化算法
randomized algorithm
- 随机数发生器
- 跳跃表
- 素性测试
回溯算法
backtracking
- 收费公路重建问题
- 博弈