算法第五章作业

1. 请用回溯法的方法分析“最小重量机器设计问题”

题目:

                                7-2 最小重量机器设计问题 (25 分)

设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设wij是从供应商j 处购得的部件i的重量,cij是相应的价格。 试设计一个算法,给出总价格不超过d的最小重量机器设计。

 

分析:此问题属于类01背包问题,即在某个变量的限制条件下,另一个变量的最优值问题。
首先考虑问题输出,应该为每个零件的供货商编号,如果设为x[i],则此算法最终输出为x[i]的遍历,其中i为第i件零件。
现在考虑回溯法的解空间树,因为每个商品可以从m个供货商获得,则问题的解空间树是一棵m叉树,该树属于子集树而非排列树。
然后考虑剪枝条件,此问题中的限制条件为价格上限c,最小重量设bestw,则当 当前价格<c 且 当前重量 < bestw时,执行树的深度遍历,否则,执行回溯,因此本问题中包含两个剪枝条件。
最后是更新最优值,以及问题的解,本题中最优解是bestw,解集合是x[i]。递归出口处更新一种最优解,以及对应解集合。

1.1 说明“最小重量机器设计问题"的解空间

假设有三件部件三个供应商,则得到解空间如下:

(1,1,1)(1,1,2)(1,1,3)

(1,2,1)(1,2,2)(1,2,3)

(1,3,1)(1,3,2)(1,3,3)

(2,1,1)(2,1,2)(2,1,3)

(2,2,1)(2,2,2)(2,2,3)

(2,3,1)(2,3,2)(2,3,3)

(3,1,1)(3,1,2)(3,1,3)

(3,2,1)(3,2,2)(3,2,3)

(3,3,1)(3,3,2)(3,3,3)

其中(i1,i2,i3)为第i个部件;1,2,3表示第i个部件选择第几个供应商。

1.2 说明 “最小重量机器设计问题"的解空间树

 

1.3 在遍历解空间树的过程中,每个结点的状态值是什么

每个结点的状态值是该点当前的总重量 cw 和总价格 cc 。

2. 你对回溯算法的理解

在学习了回溯算法后,我的收获以及理解如下:

  应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解。确定了问题的解空间结构后,回溯法将从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。开始结点成为活结点,同时也成为扩展结点。在当前的扩展结点处,向纵深方向搜索并移至一个新结点,这个新结点就成为一个新的活结点,并成为当前的扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前的扩展结点就成为死结点。此时应往回移动(回溯)至最近的一个活结点处,并使其成为当前的扩展结点。回溯法以上述工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。

解题步骤:(1) 针对给定的问题,定义问题的解空间;

(2) 确定易于搜索的解空间结构;

(3) 以深度优先方式搜索解空间,并且在搜索过程中在扩展结点处剪去不满足约束条件的分支,剪去得不到最优剪的子树,省去不必要的搜索。

 

posted @ 2021-12-16 17:50  Edward404  阅读(24)  评论(0编辑  收藏  举报