一.问题
n个集装箱装上两艘载重分别为C和C2的轮船,w为集装箱i的重量,且之,W≤q+c2
问是否存在一种合理的装载方案将n个集装箱装上轮船?如果有,给出一种方案。
二.解析
定理:如果装载问题有解,则存在一一个使得第一条船装载量与c1的差达到最小的解。
证明:如果有解,假设一个解为船1 (c1)上装载: w1和w2
船2 (c2)上装载: w3,并且c1-(w1+w2)不为最小解。
由于现有解c1 -(w1+w2)不为最小解,则通过交换c1和c2上的物品,使得存在更小解,例如交换w2和w3,使得c1-(w,+W)<c1-(w1+w2);
通过以上方法,直到找到一个使得第一条船装载量与c1的差达到最小的解。
三.设计
(1)将w1, w2… wn按照递降排序(降序的目的是加快回溯,大的数据容易超出船1的载重).
(2)解向量<x1,x2…xk>. 其中x∈{0,1},1≤i≤n搜索空间是子集树
四.分析
最坏情况要遍历图中所有结点,算法的时间复杂度为O(2")。因为,叶子结点有2”,每个结点要计算机装载量以判断是否回溯。