装箱问题近似算法概述
2015-07-05 19:52
791 查看
问题描述:一维经典装箱问题可描述如下: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):先对物品按降序排序,再按照最佳适应算法进行装箱。
装箱问题是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):先对物品按降序排序,再按照最佳适应算法进行装箱。
相关文章推荐
- C中嵌入python
- linux ls
- Matlab矩阵幂运算
- 【BZOJ】1011 遥远的行星
- 实时监控mysql数据库变化
- iTween研究院之学习笔记Move移动篇(一)
- 5.4-2
- Android GPS架构分析(二)
- RHEL6.5系统更换Centos系统YUM源
- Unity3D与旋转相关的函数(C#)
- PowerDesigner 将Comment与Name内容互换
- hdu 4628 Pieces(状态压缩+记忆化搜索)
- 阅读《大数据》Tuzipeizhe
- hdu 1233
- leetcode Symmetric Tree 树
- Linux - Shell基本命令
- June Summry
- 开源p2p直播平台
- notice
- java异常常见问题汇总