算法第五章作业
一、回溯法分析最小重量机器设计问题
问题前提:机器包含 n 个部件,每个部件有 m 个供应商可选;wij 是第 i 个部件选第 j 个供应商的重量,cij 是对应成本;要求总成本不超过预算 C,总重量最小。
1.1 解空间
解是一个 n 维向量 X = (x₁, x₂, ... , x n),其中 x i 的取值是 1 到 m 之间的整数,代表第 i 个部件选择第 x i 个供应商。
解空间是所有满足“前 n 个部件的成本总和 ≤ 预算 C”的向量集合,解空间的总规模是 m 的 n 次方。
1.2 解空间树
这是一棵 m 叉树,总共包含 n+1 层:
第 0 层:根节点,代表还没有选择任何部件的初始状态。
第 i 层(i 从 1 到 n):对应第 i 个部件的供应商选择,每个节点都有 m 个子节点,分别对应 m 个供应商选项。
第 n 层:叶子节点,每个叶子节点都对应一个完整的采购方案。
1.3 结点状态值
遍历解空间树时,每个节点需要记录三个核心状态值:
- 已选部件的数量 k(对应树的第 k 层);
- 已选 k 个部件的累计成本总和;
- 已选 k 个部件的累计重量总和。
这三个值是剪枝的关键依据,比如累计成本超过预算 C 时,直接放弃该分支的后续搜索。
二、对回溯算法的理解
回溯算法是一种试探性的穷举搜索算法,核心思路是深度优先搜索加剪枝:
在解空间树中按深度优先的顺序逐步构建候选解,每一步都会判断当前候选解是否违反约束条件;如果违反,就放弃当前分支(剪枝),回溯到上一层重新选择;如果没违反,就继续向下探索。
这种算法适合解决组合优化类问题,剪枝操作能大幅减少无效搜索,但最坏情况下的时间复杂度仍然是指数级。

浙公网安备 33010602011771号