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

2022-09-10 02:18:13 字數 1215 閱讀 6903

實踐題目名稱

最優合併問題

問題描述

給定k 個排好序的序列, 用 2 路合併演算法將這k 個序列合併成乙個序列。 假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m+n-1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。 為了進行比較,還需要確定合併這個序列的最差合併順序,使所需的總比較次數最多。

演算法描述(貪心選擇性質)

要求最多比較次數和最少比較次數。由於每次合併 2 個長度分別為m和n的序列需要m+n-1 次比較,所以如果想要最多的比較次數,那麼我們要將輸入資料從大到小排序,把每次組成的m+n再跟下乙個資料比較,每次都在ans上加m+n-1;由於兩個最大的資料加起來一定大於第三個最大的資料,這裡不用排序,直接往下遍歷即可。

對於想要求最少的比較次數,我們要將輸入資料從小到大排序,並每次在ans上加上m+n-1,把每次組成的m+n放回陣列重新排序,直到沒有數字了

這裡我們可以每次加入完資料後對陣列重新排序(nlogn),也可以用乙個小根堆(優先佇列)來維護陣列這樣能保證每次堆頂取出的都是最小的,這樣就減少了排序所要的時間,只需要維護小根堆的時間。

演算法時間及空間複雜度分析

求最多比較次數只用從大到小遍歷一次,o(n);

求最少比較次數:

若每次排序:o(n^2 logn)

若用優先佇列:o(nlogn)

ps:維護優先佇列插入和刪除的時間複雜度o(logn)

空間:o(n)

對貪心演算法的理解

貪心的每一步都是當前的最優解,所有步驟完成後就是總的最優解。

它有兩個重要性質:貪心選擇性質和最優子結構性質。

貪心選擇性質:指問題的最優解可以通過一系列區域性最優解的選擇得到。

最優子結構性質:指問題的最優解包含其子問題的最優解。

心得體會

優秀的貪心策略能極大的降低**的複雜度,也能減少時間複雜度。

想要對貪心演算法有更深刻的體會一定要多做題,感覺光看思想是遠遠不夠的。

(目前來看,很多貪心都會與排序有關(?))

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

題目 最優合併問題 1.問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這...

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

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

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

1.問題描述 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。2.演算法描述 3.問題求解 顯然高位數字的數值大小更對數字的大小起決定性作用,因...