軟件設計師案例分析當天每日一練試題地址:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4
往期軟件設計師每日一練試題匯總:m.xiexiliangjiufa.com/class/27/e4_1.html
軟件設計師案例分析每日一練試題(2021/12/24)在線測試:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4&day=2021/12/24
點擊查看:更多軟件設計師習題與指導
軟件設計師案例分析每日一練試題內容(2021/12/24)
試題四
閱讀下列說明,回答問題1至問題2。
[說明]
0-1背包問題可以描述為:有n個物品,對i=1,2,…,n,第i個物品價值為vi重量為wi(vi和wi非負數),背包容量為W(W為非負數),選擇其中一些物品裝入背包,使裝入背包物品的總價值最大,
個物品不放入背包,xi=1表示第i個物品放入背包。
【問題1】用回溯法求解此0-1背包問題,請?zhí)畛湎旅鎮(zhèn)未a中(1)~(4)處空缺。
回溯法是一種系統(tǒng)的搜索方法。在確定解空間后,回溯法從根結點開始,按照深度優(yōu)先策略遍歷解空間樹,搜索滿足約束條件的解。對每一個當前結點,若擴展該結點已經不滿足約束條件,則不再繼續(xù)擴展。為了進一步提高算法的搜索效率,往往需要設計一個限界函數,判斷并剪枝那些即使擴展了也不能得到最優(yōu)解的結點?,F在假設已經設計了BOUND(v,w,k,W函數,其中v、w、k和W分別表示當前已經獲得的價值、當前背包的重量、已經確定是否選擇的物品數和背包的總容量。對應于搜索樹中的某個結點,該函數值表示確定了部分物品是否選擇之后,對剩下的物品在滿足約束條件的前提下進行選擇可能獲得的最大價值,若該價值小于等于當前已經得到的最優(yōu)解,則該結點無需再擴展。
下面給出0-1背包問題的回溯算法偽代碼。
函數參數說明如下:
W:背包容量;n:物品個數;w:重量數組;v:價值數組;fw:獲得最大價值時背包的重量;fp:背包獲得的最大價值;X:問題的最優(yōu)解。
變量說明如下:
cw:當前的背包重量;cp:當前獲得的價值;k:當前考慮的物品編號;Y:當前已獲得的部分解。
BKNAP(W,n,w,v,fw,fp,x)
1 cw←cp←0
2 (1)
3 fp←-1
4 while true
5 while k≤n and cw+w[k] ≤W do
6 (2)
7 cp←cp十v[k]
8 Y[k]←l
9 k←k+1
10 if k>n then
11 if fp<cp then
12 fp←cp
13 fw←cw
14 k←n
15 X←Y
16 else Y(k)←0
17 while BOUND(cp,cw,k,W) ≤ fp do
18 while k≠0 and Y(k)≠1 do
19 (3)
20 if k=0 then return
21 Y[k]←0
22 cw←cw-w[k]
23 cp←cp-v[k]
24 (4)
【問題2】考慮下表所示的實例,假設有3個物品,背包容量為22。
下圖是根據上述算法構造的搜索樹,其中結點的編號表示了搜索樹生成的順序,邊上的數字1/0分別表示選擇/不選擇對應物品。除了根結點之外,每個左孩子結點旁邊的上下兩個數字分別表示當前背包的重量和已獲得的價值,右孩子結點旁邊的數字表示擴展了該結點后最多可能獲得的價值。為獲得最優(yōu)解,應該選擇物品 (5) ,獲得的價值為 (6) 。
對于上述實例,若采用窮舉法搜索整個解空間,則搜索樹的結點數為 (7) ,而用了上述回溯法,搜索樹的結點數為 (8) 。
信管網考友試題答案分享:
信管網試題答案與解析:m.xiexiliangjiufa.com/st/2458812610.html
溫馨提示:因考試政策、內容不斷變化與調整,信管網網站提供的以上信息僅供參考,如有異議,請以權威部門公布的內容為準!
信管網致力于為廣大信管從業(yè)人員、愛好者、大學生提供專業(yè)、高質量的課程和服務,解決其考試證書、技能提升和就業(yè)的需求。
信管網軟考課程由信管網依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學員考試保駕護航。面授、直播&錄播,多種班型靈活學習,滿足不同學員考證需求,降低課程學習難度,使學習效果事半功倍。
發(fā)表評論 查看完整評論 | |