首先,我们需要将问题转化为回溯法的搜索空间树。每个节点表示当前考虑到哪个物品,背包中放了哪些物品,以及当前的总价值和总重量。每次决策可以选择放当前物品或不放,直到考虑完所有物品或者背包已经装满。

搜索空间树如下所示:

          (0,0,0)
         /       \
      (1,4,5)   (0,0,5)
       /   \        /   \
 (2,16,10) (1,4,7.5)  (1,12,5) (0,0,9)
   /  \       /   \        /   \
(3,19,12.5)  (2,16,12.5) (2,17,7.5) (1,12,9)
  /    \         /   \          /   \
(4,22,13) (3,19,17.5) (3,21,10) (2,17,12.5)
   |        /   \         |        /   \
  (4,22,13) (4,22,13)  (4,22,13)  (3,21,17.5)

其中,每个节点的三个数分别表示当前的物品编号、当前的总价值和当前的总重量。

从根节点开始,我们依次考虑四个物品。对于每个物品,我们可以选择将其放入背包或不放入背包。如果放入背包,则总重量和总价值都要相应增加;如果不放入背包,则只有总重量增加,总价值不变。

在搜索空间树中,每个节点代表一个状态,即当前选择的物品及其对应的总价值和总重量。如果当前状态已经超过了背包的容量,则该节点不再扩展。

最终,我们要选择搜索空间树中的一个叶子节点,使得总价值最大且总重量不超过背包的容量。在上面的搜索空间树中,可以看出最优解是放入物品2和物品4,总价值为22,总重量为13

设有01背包实例背包最大容量为13有四件物品价值分别为41253重量分别为55254。问背包内装入哪些物品可以不超重并且达到最大价值。使用回溯法搜索解空间树如下

原文地址: https://www.cveoy.top/t/topic/fjkJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录