1. 程式人生 > 其它 >演算法第五章上機實踐報告

演算法第五章上機實踐報告

1. 請用回溯法的方法分析“最小重量機器設計問題”

1.這道題利用回溯法來解決。首先題目給出了價格上限d,初始化設定cv(當前價值)和cw(當前重量)為0。還要設定一個變數minn表示選擇機器的最小總重量,初始化為一個很大的值。

2.利用回溯法進行迴圈,從第1號機器開始迴圈,機器的號數代表層數。在迴圈選擇第i號機器時,需要判斷從第j號供應商購買機器後的價格是否大於價格上限,小於則可以選擇,並且更新cv和cw;大於則不選,看下一供應商滿不滿足這個條件。


3.當所有機器的供應商都選擇結束後,判斷目前總重量是否比之前的minn小,如果小就更新minn,然後從最後一個機器開始回溯到上一機器,選擇新的合適供應商,繼續搜尋可行解。這個過程中,需要判斷選擇這個新的供應商後的重量是否比minn小,如果比minn大,可以直接剪枝,不選這個供應商,繼續下一個供應商的選擇,直到將整個樹搜尋完畢。最終得到的minn即為最優解。


4.在迴圈過程中,需要多開一個數組,記錄每個機器選擇了哪個供應商。

1.1 說明“最小重量機器設計問題"的解空間

[(1,3,1),(1,3,2),(1,3,3)]

1.2 說明 “最小重量機器設計問題"的解空間樹

1.3 在遍歷解空間樹的過程中,每個結點的狀態值是什麼

2. 你對回溯演算法的理解

回溯演算法的基本做法是搜素,我認為其中很重要的一點就是剪枝,這樣可以避免無效搜尋。回溯演算法應該用於解一些組合數相當大的問題。