甘肃省住房与城乡建设部网站,南京成旭通网站建设公司怎么样,中国机械加工网18易8下4拉hu,网站案例演示1.最优装载问题。
给出n个物体#xff0c;第i个物体重量为wi。选择尽量多的物体#xff0c;使得总重量不 超过C。
由于只关心物体的数量#xff0c;所以装重的没有装轻的划算。只需把所有物体按重量从小到大 排序#xff0c;依次选择每个物体#xff0c;直到装不下为止。…1.最优装载问题。
给出n个物体第i个物体重量为wi。选择尽量多的物体使得总重量不 超过C。
由于只关心物体的数量所以装重的没有装轻的划算。只需把所有物体按重量从小到大 排序依次选择每个物体直到装不下为止。
2.部分背包问题。
有n个物体第i个物体的重量为wi价值为vi。在总重量不超过C的情 况下让总价值尽量高。每一个物体都可以只取走一部分价值和重量按比例计算。
本题在上一题的基础上增加了价值所以不能简单地像上题那样先拿轻的轻的可能价 值也小也不能先拿价值大的可能它特别重而应该综合考虑两个因素。一种直观的 贪心策略是优先拿“价值除以重量的值”最大的直到重量和正好为C。 注意由于每个物体可以只拿一部分因此一定可以让总重量恰好为C或者全部拿走 重量也不足C而且除了最后一个以外所有的物体要么不拿要么拿走全部。
3.乘船问题。
有n个人第i个人重量为wi。每艘船的最大载重量均为C且最多只能乘两 个人。用最少的船装载所有人。
考虑最轻的人i他应该和谁一起坐呢如果每个人都无法和他一起坐船则唯一的方 案就是每人坐一艘船。否则他应该选择能和他一起坐船的人中最重的 一个j。这样的方法是贪心的因此它只是让“眼前”的浪费最少。可以用反证法说明。
情况1i不和任何一个人坐同一艘船那么可以把j拉过来和他一起坐总船数不会增 加而且可能会减少。 情况2i和另外一人k同船。由贪心策略j是“可以和i一起坐船的人”中最重的因 此k比j轻。把j和k交换后k所在的船仍然不会超重因为k比j轻而i和j所在的船也不会超 重由贪心法过程因此所得到的新解不会更差。 由此可见贪心法不会丢失最优解。最后说一下程序实现。在刚才的分析中比j更重 的人只能每人坐一艘船。这样只需用两个下标i和j分别表示当前考虑的最轻的人和最重的 人每次先将j往左移动直到i和j可以共坐一艘船然后将i加1j减1并重复上述操作。