第五次作业

一、回溯法分析“最小重量机器设计问题”

1.1 最小重量机器设计问题的解空间

最小重量机器设计问题的描述:机器由n个部件组成,每个部件可以从m个供应商处采购,供应商j提供的部件i的重量为w_{ij}、价格为c_{ij}。要求总价格不超过预算C,选择每个部件的供应商,使得机器的总重量最小。

其解空间是所有满足“每个部件选且仅选一个供应商”的组合集合,形式化表示为X=(x_1, x_2, ..., x_n),其中x_i \in {1,2,...,m},表示第i个部件选择第x_i个供应商。解空间的规模为m^n(n个部件,每个有m种选择)。

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

该问题的解空间树为m叉树,树的深度为n(对应n个部件):

  • 根节点:第0层,未选择任何部件的初始状态。
  • 第k层节点(1≤k≤n):表示已确定前k-1个部件的供应商,正在选择第k个部件的供应商。每个第k层的节点有m个子节点,分别对应第k个部件选择第1~m个供应商。
  • 叶子节点:第n层节点,对应一个完整的解(所有部件的供应商都已选定)。

例如,当n=2、m=3时,解空间树是深度为2的3叉树,根节点生3个第一层节点(对应部件1选供应商1/2/3),每个第一层节点再生3个第二层叶子节点(对应部件2选供应商1/2/3),共9个叶子节点(对应全部解)。

1.3 遍历解空间树时每个结点的状态值

遍历过程中,每个节点需记录三个核心状态值,用于剪枝和计算解的属性:

1. 已选部件数:记为k,表示当前已确定前k个部件的供应商(对应解空间树的层数)。
2. 累计价格:记为sumC,表示前k个部件选择对应供应商后的总价格,用于判断是否超过预算C(若sumC > C,则该节点的子树无需遍历,剪枝)。
3. 累计重量:记为sumW,表示前k个部件选择对应供应商后的总重量,用于后续计算完整解的总重量,并与当前最优解比较更新。

此外,还可记录当前选择的供应商序列(x_1, x_2, ..., x_k),用于最终输出最优解的具体选择。

二、对回溯算法的理解

回溯算法是一种基于深度优先搜索的暴力搜索优化策略,核心是“尝试-回退”:

1. 解空间遍历:将问题的解表示为一个决策序列,通过递归或迭代遍历解空间树的节点,逐步构建解的候选。
2. 剪枝策略:在遍历过程中,通过约束函数(排除违反问题约束的路径,如机器设计问题中累计价格超预算)和限界函数(排除不可能得到更优解的路径,如累计重量已超过当前最优重量)剪枝,减少无效搜索,提升效率。
3. 适用场景:适用于组合优化问题(如0-1背包、旅行售货员、机器设计),尤其适合解空间规模较大但可通过剪枝大幅缩小搜索范围的问题。
4. 本质:是“穷举”的智能优化,不追求多项式时间复杂度,而是通过剪枝降低实际搜索的节点数,在小规模问题或中等规模问题中表现较好;但对于大规模问题,若剪枝效果差,时间复杂度仍会达到指数级。

posted @ 2025-12-23 16:20  吴秋微  阅读(3)  评论(0)    收藏  举报