裝載問題(回溯法過程和方案選取)

2021-10-05 12:32:21 字數 996 閱讀 1782

一、問題描述

有一批共n個貨櫃要裝上2艘載重量分別為c1c2的輪船,其中貨櫃i的重量為wi,且

裝載問題要求確定,是否有乙個合理的裝載方案可將這n個貨櫃裝上這2艘輪船。如果有,找出一種裝載方案。

二、問題分析主要思想:將第一艘船盡可能裝滿,剩餘的裝入第二艘船。1.n和t是什麼?2.框架中的解向量,f(n,t)和g(n,t)在這裡是什麼?

3.是np問題

4.運用框架(解空間):子集樹

void backtrack(int t)

}

5.約束限界函式:

①遞迴法

class loading;

void loading::backtrack(int t)

//右子樹,如果剩下的空間放不下第t個物品

else

while(cw+r<=bestw)

if(t==0) break;//最優的解已經無法超越了,退到了極致

x[t]=0;//修改1為0

cw-=w[t];

t++;}}

return bestw;

}

——參考自王曉東《演算法設計與分析》(第5版)

裝載問題 回溯法

描述 有一批共n個貨櫃要裝上艘載重量為c的輪船,其中貨櫃i的重量為wi。找出一種最優裝載方案,將輪船盡可能裝滿,即在裝載體積不受限制的情況下,將盡可能重的貨櫃裝上輪船。輸入 由檔案load.in給出輸入資料。第一行有2個正整數n和c。n是貨櫃數,c是輪船的載重量。接下來的1行中有n個正整數,表示貨櫃...

裝載問題 回溯法

有n個貨櫃要裝上2艘載重量分別為c1和c2的輪船,其中貨櫃i的重量為wi,且 問題 是否有乙個合理的裝載方案,可將這n個貨櫃裝上這2艘輪船?如果有,找出一種裝載方案。例如 當n 3,c1 c2 50 1 若w 10,40,40 可將貨櫃1和貨櫃2裝上第一艘輪船,而將貨櫃3裝上第二艘輪船 2 如果w ...

回溯法 裝載問題

有n個貨櫃要裝上載重量為w的輪船,其中貨櫃i的重量為wi。不考慮貨櫃體積的限制,現在要將若干貨櫃裝上輪船,使他們的總重量為w,如果總重量相同要盡可能的使用少的貨櫃。有n個貨櫃要裝上載重量為c1 c2的輪船,其中貨櫃i的重量為wi。問兩艘輪船能否裝下所有貨櫃。深搜所有情況,重點是要剪枝。題目一剪枝條件...