第五章作业
- 回溯法分析“最小重量机器设计问题”
首先明确问题:最小重量机器设计问题通常是指:机器由n个部件组成,每个部件有m个可选型号,第 i个部件的第 j 个型号的重量为 wij、价格为 cij;要求选择每个部件的一个型号,使总价格不超过预算 C,且总重量最小。
1.1 解空间
解空间是所有满足“每个部件选一个型号”的选择组合,形式为 (x_1, x_2, ..., x_n) ,其中 x_i 属于{1, 2, ..., m} ( x_i ) 表示第 i 个部件选择的型号)。
解空间的规模为 m^n(每个部件有 m) 种选择,共 n 个部件)。
1.2 解空间树
解空间树是排列树(或子集树的变体),树的层次对应“部件的选择步骤”:
- 根节点:未选择任何部件的初始状态;
- 第 i 层的节点:已确定前 i-1 个部件的型号,当前正在选择第 i 个部件的型号;
- 叶节点:已确定所有 n 个部件的型号,对应一个完整的选择组合。
每个非叶节点有 m 个子节点(对应当前部件的 m 种型号选择)。
1.3 遍历过程中每个节点的状态值
每个节点需记录以下状态,用于剪枝和计算:
-
已选部件的序号:当前选择到第 k 个部件(对应树的层次);
-
已选型号的总重量:前 k 个部件的重量之和 W ;
-
已选型号的总价格:前 k 个部件的价格之和 C ;
-
当前最优解的总重量:已找到的满足价格约束的最小总重量(用于剪枝:若当前节点的 W + 剩余部件的最小可能重量={当前最优重量},则剪枝)。
-
对回溯算法的理解
回溯算法是一种深度优先的暴力搜索优化方法,核心是“尝试-回退-剪枝”: -
核心思想:从根节点出发遍历解空间树,尝试每一种可能的选择;若当前选择不符合约束(或无法得到更优解),则回退到上一节点,尝试其他选择(即“回溯”);同时通过剪枝(提前舍弃不可能得到最优解的分支)减少搜索量。
-
适用场景:解空间规模较大,但可通过约束条件剪枝的问题(如组合优化、排列问题、子集问题等)。
-
关键特征:
- 基于“解空间树”遍历,保证不遗漏可行解;
- 通过约束函数(排除违反问题条件的分支)和限界函数(排除无法得到更优解的分支)剪枝,提高效率;
-
局限性:若解空间规模极大且难以剪枝,时间复杂度仍较高(最坏情况为 O(2^n) 或 O(n!))。
浙公网安备 33010602011771号