算法导论笔记(五)

来源:互联网 发布:ubuntu wine 1.9 编辑:程序博客网 时间:2024/05/17 08:53

12章:超越算法能力的极限

12.1回溯法

12.1.1八皇后问题:

皇后既不可以放在同一行也不可以放在同一列甚至都不可以放在同一对角线上面

回溯法的应用:空棋盘,逐行放置。第一个放置下后,寻找第二行的皇后位置,然后寻找第三行皇后位置...直到寻找完所有皇后位置并且满足条件为止,如果走到某一步找不到了就回溯到上一步找另外一种情况,能放置所有皇后的即为解

12.1.2哈密顿回路

深度遍历,按照字母的顺序,路走不回原点/路无法经过所有的点的路都是死胡同,回溯到最近的有分支的点,执行另外一种情况

12.1.3子集 和问题

初始为0,包含/不包含,初始均为包含,深度,一条路走到黑,子集和等于目标值则停止否则回溯,直到得到所有的情况

12.2分支界限法

12.2.1分配问题

把所有任务下界限计算出来(最小值)作为初始值

然后从第一个人开始分配任务,每一个任务作为一个分支,重新计算下界限,选择最小的下界限的值作为选择

下一个值从n-1个任务中挑选,同样计算下界限,选择最小的

直到为1的时候,停止即为最佳

12.2.2背包问题

对每个物品的价值和他对应的质量作比求得性价比

计算ub = v(当前价值) + (W-w)(vi+1/wi+1)

W剩余称重量,w选中物品的重量,vi+1/wi+1 取最大的性价比

超出则不可行,否则重新计算ub,区最大的ub,执行下一次计算

12.2.3旅行商问题

对每个节点和相邻节点最近的两条边求和

lb = 每个节点的两条最短边的和/2向上取整

选择不同路径计算lb使得lbmin

然后重复执行下届lb最小即可

原创粉丝点击