434
社区成员
发帖
与我相关
我的任务
分享题目如下:
设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设wij是从供应商j 处购得的部件i的重量,cij是相应的价格。
试设计一个算法,给出总价格不超过d的最小重量机器设计。
第一行有3 个正整数n ,m和d, 0<n<30, 0<m<30, 接下来的2n 行,每行m个数。前n行是c,后n行是w。
输出计算出的最小重量,以及每个部件的供应商
3 3 4
1 2 3
3 2 1
2 2 2
1 2 3
3 2 1
2 2 2
在这里给出相应的输出。例如:
4
1 3 1
1.1 说明“最小重量机器设计问题"的解空间
答:解空间及该问题涉及到的所有解。对于共需n种零件,有m个厂家的“最小重量机器设计问题”,一共有 m^n 种可能解,其中可能有部分解不满足总价小于d;该题样例的解空间为:
(1,1,1)(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),(1,3,1),(1,3,2),(1,3,3)
(2,1,1)(2,1,2),(2,1,3),(2,2,1),(2,2,2),(2,2,3),(2,3,1),(2,3,2),(2,3,3)
(3,1,1)(3,1,2),(3,1,3),(3,2,1),(3,2,2),(3,2,3),(3,3,1),(3,3,2),(3,3,3)
1.2 说明 “最小重量机器设计问题"的解空间树
答:如表格所示:
| A | ||||||||||||||||||||||||||
| 1 | 2 | 3 | ||||||||||||||||||||||||
| B | C | D | ||||||||||||||||||||||||
| 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | ||||||||||||||||||
| E | F | G | H | I | J | K | L | M | ||||||||||||||||||
| 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
| 111 | 112 | 113 | 121 | 122 | 123 | 131 | 132 | 133 | 211 | 212 | 213 | 221 | 222 | 223 | 231 | 232 | 233 | 311 | 312 | 313 | 321 | 322 | 323 | 331 | 332 | 333 |
1.3 在遍历解空间树的过程中,每个结点的状态值是什么
答: tmpw 记录当前已选择的零件的总重量;total 用于记录当前已选择的零件的总价格
最终只有当前最优方案会被记录;
回溯法采用深度优先系统式搜索问题,适合解组合数较大的问题;当解空间过大时,我们可以根据题述条件采用一定的限界函数和约束函数对其进行剪枝处理,避免不必要的系统开销;有时函数中常与与贪心算法结合。