8.1.2解空间树的动态搜索重点.ppt

* 第8章 流塑法 8.1.2 解空间树的动态搜索 8.1.2 解空间树的动态搜索(1) 流塑法从根结点出发,按照深度优先策略遍历解空间树,搜索满足约束条件的解。在搜索至树中任一结点时,先判断该结点对应的部分解是否满足约束条件,或者是否超出目标函数的界,也就是判断该结点是否包含问题的(最优)解,如果肯定不包含,则跳过对以该结点为根的子树的搜索,即所谓剪枝(Pruning);否则,进入以该结点为根的子树,继续按照深度优先策略搜索。 例如,对于n=3的0/1背包问题,三个物品的重量为{20, 15, 10},价值为{20, 30, 25},背包容量为25,从图8.2所示的解空间树的根结点开始搜索,搜索过程如下: 1 不可行解 价值=20 价值=55 价值=30 价值=25 价值=0 1 1 1 1 0 0 0 0 0 0 1 1 2 8 11 12 14 15 13 10 6 9 不可行解 再如,对于n=4的TSP问题,其代价矩阵如图8.5所示, C= ∞ 3 6 7 12 ∞ 2 8 8 6 ∞ 2 3 7 6 ∞ 图8.5 TSP问题的代价矩阵 2 3 4 4 2 2 1 2 3 1 3 4 1 3 1 3 1 2 3 2 1 2 1 4 2 4 1 4 3 2 2 4 3 4 1 2 3 1 2 4 1 3 4 图8.6 TSP问题的搜索空间 5 47 54 4 11 27 46 48 51 53 58 3 8 13 24 29 35 40 45 50 55 60 2 18 34 24 1 2 3 4 1 流塑法的搜索过程涉及的结点(称为搜索空间)只是整个解空间树的一部分,在搜索过程中,通常采用两种策略避免无效搜索: (1)用约束条件剪去得不到可行解的子树; (2)用目标函数剪去得不到最优解的子树。 这两类函数统称为剪枝函数(Pruning Function)。 需要注意的是,问题的解空间树是虚拟的,并不需要在算法运行时构造一棵真正的树结构,只需要存储从根结点到当前结点的路径。 作业2:3 作业3:2 作业1:2 空闲:2 作业2:1 机器1 机器2 作业1:1 作业3:3 (e) 调度方案(3, 1, 2),最后完成时间为8 作业2:3 作业3:2 作业1:2 空闲:2 作业2:1 机器1 机器2 作业2:1 作业3:3 (f) 调度方案(3, 2, 1),最后完成时间为8 显然,批处理作业的一个最优调度应使机器1没有空闲时间,且机器2的空闲时间最小。可以证明,存在一个最优作业调度使得在机器1和机器2上作业以相同次序完成。 例:三个作业{1, 2, 3},这三个作业在机器1上所需的处理时间为(2, 3, 2),在机器2上所需的处理时间为(1, 1, 3),则最佳调度方案是(1, 3, 2)、(3, 1, 2)和(3, 2, 1),其完成时间为8。 作业1:2 作业2:3 作业3:2 空闲:2 作业1:1 机器1 机器2 作业2:1 作业3:3 (a) 调度方案(1, 2, 3),最后完成时间为10 作业1:2 作业2:3 作业3:2 空闲:2 作业1:1 机器1 机器2 作业2:1 作业3:3 (b) 调度方案(1, 3, 2),最后完成时间为8 作业2:3 作业1:2 作业3:2 空闲 作业2:1 机器1 机器2 作业1:1 作业3:3 (c) 调度方案(2, 1, 3),最后完成时间为10 作业2:3 作业3:2 作业1:2 空闲:3 作业2:1 机器1 机器2 作业1:1 作业3:3 (d) 调度方案(2, 3, 1),最后完成时间为9 *

文档评论(0)

1亿VIP精品文档

相关文档