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

2022-05-20 04:19:21 字數 1023 閱讀 1302

1.實踐題目:

4-1 程式儲存問題 

設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。

2.問題描述:

在給定的一段長度的磁帶上要儲存盡可能多的程式           =>         每次儲存的程式要盡可能的小或者短才能使得存的多,那麼可以使用貪心的策略,同時,不可以超過磁帶長度。

貪心策略:

每一次優先選擇該次的所有程式的長度中最短的那乙個程式

貪心即只選在剩下的長度中選擇最短的程式

反證法證明貪心選擇:

設集合a=(該集合已經進行過排序,從小到大)

假設最優解b不包含x1(x1是該集合a最短長度的程式),其中最短的程式長度為j,假若j = x1,則最優解中包含x1; 若b中j > x1 ,x1餘b中其他的程式長度相容,故存在乙個c = ∪} ,從而c也是最優解,故可知最優解一定含有x1 - > 長度最短的程式  - > 貪心選擇成立。

證明最優子結構性質:

幾乎與貪心選擇證明類似,主要是,假設a是原問題的最優解,其中包含x1,同時有b = a -為取出x1的集合的最優解,假設存在b『 > b , 則b『+ >a 則此時相矛盾,故不存在此時的b『

4.演算法時間及空間複雜度分析(要有分析過程):

時間複雜度:

該程式的主要時間在sort()排序上,其中為快排,因此時間複雜度為o(nlogn)

空間複雜度:

僅儲存有限個變數結果和輸入陣列,其空間複雜度為o(1)

5.心得體會(對本次實踐收穫及疑惑進行總結):

本次很多題目都是自己打出來的,自己的實戰有所提高?

對貪心演算法主要是選擇好是取大還是取小比較好的問題,同時因為本章學習的是貪心演算法,在打題的時候直接跳過了論證步驟,下次要注意。

很多時候還是要注意一下演算法的選擇,比如揹包問題,0-1的揹包問題等等都需要去自己去論證,否則寫出來的**與事實不符。

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

引論 相比與動態規劃演算法,貪心演算法是比較容易理解的,其思想就在於得到當前狀態下區域性最好選擇,當乙個問題的最優解包含其子問題的最優解時,即每個貪心選擇都是子問題的最優解,那麼就能的到該問題的最優解了。本次上機實踐的題目雖然不是特別難,但相比前兩次,這一次上機實踐的效率遠低於上兩次,因為在實踐的時...

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

第四章演算法上機實踐報告 實踐題目 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。輸入格式 第一行...

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

一 實踐題目 程式儲存問題 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。第一行是2 個正整數,分...