算法第五章作业实验报告

题目:最小重量机器设计问题

 

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

输入格式:

第一行有3 个正整数n ,m和d, 0<n<30, 0<m<30, 接下来的2n 行,每行n个数。前n行是c,后n行是w。

输出格式:

输出计算出的最小重量,以及每个部件的供应商

 

 

1. 请用回溯法的方法分析“最小重量机器设计问题”

通过遍历树的方式,利用回溯法来解决该问题。用层数表示来表示部件,用每一层的子树来表示供应商。回溯法有点类似于深度优先遍历,即先从上到下遍历到一个叶子结点,再往回走进行遍历(不满足题目要求的可以不遍历,同时可以进行减枝),当所有结点遍历遍后,利用一个数据来对最小重量进行储存,用一个数组将路径记录下来,就能得出我们想要的答案。

 

1.1 说明“最小重量机器设计问题"的解空间

解空间为长度为n的供应商各种组合向量的集合。

按照样例解空间为:{{1,3,1},{1,3,2},{1,3,3}}

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

解空间树是一棵n叉树n,m个分支表示对于每个零件的来说有m个供应商可以选择。

1.3 在遍历解空间树的过程中,每个结点的状态值是什么

当前的总价格和总重量。

2. 你对回溯算法的理解

回溯算法是一种计算量较大的算法,用来解决一些对人来说计算比较复杂的问题,比如八皇后问题、数独问题等等。回溯法本质是对问题的每种可能进行一次次的试错,利用深度优先的策略,当找不到解时就进行回溯,找到解后就进行记录保存,最终得出我们想要的结果。回溯算法说建立在计算机强大的计算能力上的,是一种时间复杂度较高的算法。

posted @ 2021-12-14 19:40  tZJQ  阅读(39)  评论(0编辑  收藏  举报