裝箱問題近似演算法概述

2021-07-03 15:19:03 字數 919 閱讀 4006

問題描述:一維經典裝箱問題可描述如下:s=(s1,s2,..sn),其中0< si ≤ 1, 稱之為第i個物體的體積(或重量),1≤i≤n,現有n個容積(或載重量)為1 的箱子,要求如何設法將s1,s2,..sn放入盡可能少的箱中。

裝箱問題是np問題,即在多項式時間內無法精確求解,一般採用近似演算法,即啟發式演算法,這樣可以迅速得到滿意解,而不一定是最優解.

常見的演算法:nf(next fit)近似演算法,ff(first fit)近似演算法,ffd(first fit decreasing)近似演算法,bf(best fit),bfd(best fit deceasing)等,

下次適應演算法(nf, next fit):nf演算法是最簡單也是最早研究的乙個演算法,它的處理方法是始終維持乙個當前開啟的箱子,對於每乙個要裝入的物品,檢查該物品是否可以放入當前開啟的箱子,如果無法裝入,則開啟乙個空箱子,裝入該物品,以該箱子作為當前的箱子,由於每個物品在裝入時,只有當前開啟的箱子和空箱可以選擇,這必然造成裝箱的效率低下。

首次適應演算法(first fit):針對下次適應演算法的缺陷,首次適應演算法ff處理當前物品的時候,檢查所有非空箱子,找到第乙個能夠放下當前物品的箱子並將該物品放入,否則則開啟新的箱子。

最佳適應演算法(best fit):與首次適應演算法類似,唯一的區別時當物品裝箱時,不是直接裝在第乙個可裝入的箱子中,而是裝入在最適合該物體的箱子中,如果沒有該箱子,則開啟空箱。

首次適應演算法和最佳適應演算法有乙個缺陷,即由於物品沒有實現排序,則可能由於先裝入小的物品,使大的物品在後來放入時無法裝入,只得開啟新的箱子,造成了空間的浪費,因此才有了這兩種演算法的改進演算法。

降序首次適應演算法(ffd, first fit decreasing):先對物品按降序排序,再按照首次適應演算法進行裝箱。

降序最佳適應演算法(bfd, best fit decreasing):先對物品按降序排序,再按照最佳適應演算法進行裝箱。

近似演算法 貪心演算法與近似演算法

1.1 教室排程問題 假設有如下課程表,你希望將盡可能多的課程安排在某間教室上。你沒法讓這些課都在這間教室上,因為有些課的上課時間有衝突。你希望在這間教室上盡可能多的課。如何選出盡可能多且時間不衝突的課程呢?這個問題好像很難,不是嗎?實際上,演算法可能簡單得讓你大吃一驚。具體做法如下。1 選出結束最...

近似演算法作業

近似演算法作業 題目 證明g中的最大團size為 等價於 g m中最大團size為m 證明 充分性 若g中最大團size為 根據g m的構造過程,g m中至少有存在乙個size為m 的團。首先g m中的最大團不可能小於m 如果小於小於m 則說明,構成g m最大團,每個g貢獻了少於 的結點,這種情況是...

頂點覆蓋問題的近似演算法

問題描述 無向圖g v,e 的頂點覆蓋是它的頂點集v的乙個子集v 包含於v,使得若 u,v 是g的一條邊,則v v 或u v 頂點覆蓋v 的大小是它所包含的頂點個數 v 下面的近似演算法以無向圖g為輸入,並計算出g的近似最優頂點覆蓋,可以保證計算出的近似最優頂點覆蓋大小不會超過最小頂點覆蓋大小的2倍...