434
社区成员
发帖
与我相关
我的任务
分享“最小重量机器设计问题"的解空间是所有可能的机器设计的方案,若有n个部件,m个供应商,那么解空间可以为{1,1,1...1}、{2,2,2....2}、{3,3,3..3}....、{m,m,m...m}....也就是对于每个部件来说都可以从1-m之间选择。
由解空间可以得知,该问题的解空间树是一颗n层的m叉树
代表当前结点已经选择部件的总价格以及总量,还有已选择的部件对应的供应商
可以设置一个min代表当前找到的最小重量,如果在当前节点下 当前总重量+此结点的部件重量<当前找到的最小重量 的话,则可以继续进行往下扫描,否则可以不必扫描。
回溯法是一个以深度优先方式系统搜索问题解的算法,从根节点出发搜索解空间树,算法搜索至解空间树的任一节点时,都需要判断是否为问题的最终解(临界条件)是则判断此时的状态值看是否需要更新数值;该节点是否包含问题的解(剪枝函数):如果不包含,则跳过以该节点为根的子树的搜索,即无需往下遍历了,直接返回上一级,逐层向其祖先节点回溯;如果包含,则继续向下搜索遍历,继续按深度优先策略搜索,直至到这个子树的根节点。
使用回溯法求解问题时,通常使用限界函数和约束函数来对我们解空间树进行一个剪枝,提高我们算法的效率。