0-1背包问题的优化算法研究文献综述
2020-04-12 16:22:22
关于0-1背包问题的优化算法研究背景以及研究现状
一、背包问题研究背景
随着信息化的大数据时代的到来,网络上信息量正已爆炸性的速度增长,有价值的信息在不断增多,没有价值的信息或者虚假信息同样在增多。巨大的信息量给人类提出了一个问题:如何从巨大的数据中选择最优配置,让成本进一步降低,效率进一步上升?解决问题的关键在于对已有算法进行优化。在所有算法问题中,背包问题对实际应用有着举足轻重的意义。
背包问题(Knapsack Problem)是由Markel和Hellman[1]提出的一类具有实际应用背景的经典NP问题。背包问题主要思路是假定一个人拥有大量物品,物品的重量各不相同,他要选择一些物品放入背包中。物品的重量是已知的,所有可能的物品也是已知的,但是背包中的物品是保密的,此外还附加了背包的重量限制。对于大规模的背包问题要列出所有可能的物品在计算上是不可能实现的。在多种背包问题类型中,0-1背包问题是最基本的背包问题,其他背包问题往往也可以转化成0-1背包问题求解。
在我们的现实生活中许多问题都可以用背包问题来描述,例如工厂中的下料问题、管理中的资源分配问题、装箱问题、资金预算问题等等都可以建模为背包问题。此外背包问题还常常作为其他复杂组合优化问题的一个子问题出现,对于由简单结构组合而成的复杂结构体而言,对简单问题的深入探索往往可以使复杂的问题迎刃而解。所以在前人研究经验的基础上开展对背包问题的研究具有重要意义。
二、背包问题的研究现状
Dantzing在上世纪50年代首先进行了开创性的研究,利用贪婪算法[2]求得了0-1背包问题的最优解上界。此后20几年背包问题没有较大的发展,直到1974年,hoeowitz和salmi利用分支节点法[3]解答背包问题,他们提出背包问题的可分性,为该问题的求解指出了一条新型道路。随后balas和zemel提出了背包问题的”核”思想使得背包问题的研究获得了较大的发展。上世纪九十年代以后,随着生物仿生技术和网络技术的飞速发展,各种模拟生物物理规律的并行近似算法不断涌现,例如:遗传算法已经在0-1背包问题上得到了较好的应用,蚂蚁算法等仿生算法也很好的应用到了组合优化问题中。近几年还出现了许多将几种算法结合起来的混合算法用来解决背包问题并取得了不错的效果。
传统求解背包问题的方法可以概括为精确算法和近似算法,其中精确算法有动态规划法,回溯法和分支限界法,近似算法有遗传算法,贪婪算法和蚁群算法,由于精确算法的时间复杂性和空间复杂性等缺点,近年来利用近似算法求解背包问题已成为重点。
前人已经对背包问题做了一些深入的研究,得到了一些经典的方法,有些方法对于解决背包问题虽然能得到不错的结果,但是也存在着很多不足之处。首先,很多算法的计算量都很大,迭代的时间很长。例如:穷举法和动态规划法简单易行,但是效率很低、鲁棒性不强,只能用于较小规模的问题求解,但在现实问题中有时面对的问题搜索空间可能非常大,慢慢求解效率就会很低。第二,贪婪算法速度快,爬坡能力强,但是它适用于搜索局部最优解,可能会陷入局部极值而得不到全局最优解。第三,蚁群算法可以得到近似最优解,但是当数据规模较大的时候收敛太慢;第四,新出现的知识进化算法和DNA计算等方法也可以有效的解决背包问题,但这些理论还不太完善,背包问题属于组合最优化问题,在严格意义上求取最优解非常困难,所以研究高速近似的算法是一个重要的发展方向。与以上几种算法相比遗传算法具有一定的优势。首先,遗传算法对所求解的优化问题没有太多的数学要求,由于他的进化特性,搜索过程中不需要问题的内在性质,对于任意形式的目标函数和约束,无论是线性的还是非线性的,离散的还是连续的都可处理。其次,进化算子的各态历经性使得遗传算法能够非常有效地进行概率意义的全局搜索。最后,遗传算法对于各种特殊问题可以提供极大的灵活性来混合构造领域独立的启发式,从而保证算法的有效性。
背包问题是一个NP-完全问题,是一个典型的优化难题。背包问题在实际中有着非常广泛应用,例如在项目成本预算、材料分配以及信息安全等方面。因此,研究背包问题有非常重要的意义。目前,关于背包问题的描述有多重形式,例如整数背包问题在一定条件下等价为0-1背包问题。目前关于0-1背包问题的主要解法有回溯算法、模拟退火算法、以及热门的蚁群优化算法。
21世纪是知识经济的时代,是人才竞争的时代。在信息社会,信息产业正成为全球经济的主导产业。计算机科学与技术在信息产业中占据了最重要的地位。以最少的成本、最快的速度、最好的质量开发出适合各种应用需求的软件,必须遵循软件工程的原则,设计出高效率的程序。然而对一个高效率的程序来讲,合理的数据组织和清晰高效的算法是最重要不过的了。而其中0-1背包问题,又是一个非常典型而又颇具有代表性的一个问题,它是许多问题的抽象,现实在许多其它的算法问题都可以转化为0-1背包问题来求解。例如,可以把货船看做是背包,那么装运多种货物的求最大效益就是背包问题。当考虑优化问题时,库房或存储器使用安排,也可以看作是背包问题。关于这一点,将在论文中进行具体的分析和说明。
因此,深刻地理解并实现0-1背包问题的各种算法,通过分析各种算法的优劣之处,并从中取长补短。这无疑为更好地解决其它一些相关的类似问题提供帮助。
关于0-1背包问题的算法优化研究,旨在进一步提高系统效率,在规定时间内,完成最优解的计算。
首先要了解各种算法的思想、及其算法时间、空间复杂度以及算法效率,并根据实际效果对其定性分析,比较每种算法的优缺点。