回溯法解最小重量机器问题

题目为 

 

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

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

 

回溯法分析:

  设计一个函数,返回点为当n个部件都买完了且买的钱不超过d,这个时候如果总机器的总量比之前存的最轻的机器重量小的话,就把该值存入。否则的话,进入选择去这个厂商还是去另一个厂商买这几个选择,如果钱够

买这个零件的话就先买,然后继续到下一个零件,也有选择去哪个厂商买的步骤,买了这个零件后继续重复上述操作,直到钱没了或者东西买完了,然后回溯回去,回溯的同时要加上买该零件花的钱,(因为如果回溯的话就说明该零件不选)。最后遍历完所有可能的结果,然后输出最优解

解空间

  {1,3,1}、{1,3,2}、{1,3,3}       ,   {1,3,1} 代表第一个零件从第一个厂商买,第二个零件从第三个厂商买,第三个零件从第一个厂商买

解空间树

  如果从买零件的角度上看其实就是一个树,树的分支分别代表取不同的厂商买零件,树的深度代表第几个零件

 

在遍历树的过程中每个节点值有剩余的钱 和 已经买的零件的重量

回溯法就是用DFS的算法对每个可能的结果进行一个遍历,在这个过程中我们可以通过判断条件来找到我们想要的值,通过剪枝函数来优化时间。

posted @ 2021-12-14 21:39  堡皇泻  阅读(154)  评论(1编辑  收藏  举报