贪心法的思想方法及证明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪心法的思想以及证明方法
摘要本文首先论述了贪心法的主要思想方法,针对利用贪心法的重要性质证明贪心法提出了自己的理解。贪心法的应用简单,证明却很麻烦。因此作者大胆猜想:是否可以将有相同性质的问题归类,按类进行证明,并给出了一类应用问题的证明过程。
关键词贪心法最优子结构性质贪心选择性质
我曾经向往着哲学的深邃和心理学的通透,而最终选择的是计算机专业。我认为计算机发展不过百年却能有如此成就,它不受积年陈旧规则的制约,依然葆有活力;同时仍有大片的区域有待挖掘,富有创新的可能性。它所运用的思想方法总是深刻而质朴,经几番思考研究,不仅有了新的理解,在对于事物的认识上也深有益处。
这个学期我们接触了计算机原理的知识。这是由宏观到微观的学习,揭示了如今呈现在我们面前的成熟的计算机,是如何仅仅凭借一高一低的信号便实现了令人类惊叹的智慧与计算能力。尤其对于磁盘的运用,虽不在课程范围内,但我却对它产生了很大兴趣。磁盘能够实现存储功能的核心在于磁道与磁头,磁头平移到目的磁道从而实现对该磁道文件的读取。磁头移动过程耗费的时间成为牵制访问速度的主要因素。假设n个文件每个文件占据一条磁道,不同文件被访问概率也不同。如将被访问概率最大的文件置于正中间的磁道,概率次大和第三大的文件分别置于其两边,按此方法依次放置所有文件就能够得到最佳的存储方式[1]。其中核心的思想正是贪心法。
在数据结构与算法中,贪心法也是算法的基本方法之一,它被完美应用在求最小生成树的Prim算法和Kruskal算法中。树是数据结构中的一种存储结构,由点集和边集构成。最小生成树是树的全部点和部分能使树的总权值最小且同时保持连通的边构成的子树。Prim 算法和Kruskal算法在本质上都是在每次递归中选择当前权值最小的边并纳入最小生成树。
贪婪法在计算机领域应用广泛,我想是因为贪婪法有着简单直接的构造方法和深刻的思想背景。贪婪法是在解决问题的过程中,每一步都按照最优贪心标准作出当前情况下的最优选择,使得在做出选择后问题得以稍加简化。经过多次贪心选择,最终达到总体最优解。
然而贪心法并不总是可行的,因为总是在没有排除过其他可选条件的情况下直接选择了局部最优解。在用贪心法解得可能最优解后,则需要证明在此种情况下使用贪心法的合理性。在一些教材以及前人的论述中,认为关键是证明当前问题存在贪心选择性质(全局最优解可以通过局部最优贪心选择达到)和最优子结构性质(问题的最优解包含了其子问题的最优解)[2]。
在对一些案例进行总结的基础上,我认为可以将证明思路进一步改进。把最小子问题的最优解与产生此子问题的选择合并,并按此一步步向前进行合并,当还原至原问题时,若所得到的解是总体最优的,那么此问题可以用贪心法解决。例如,经典的0-1背包问题是不适用贪心法的案例。假如度量标准选取单位重量物品的价值,最小子问题是选择背包中的最后一个物品。由于物品不可切分,多数情况下背包余量将不足以容纳任何所剩物品。矛盾由此产生,若这个位置就此空置,会极大拉低背包利用率,所以此法不能得到最优解。
常见的对贪心法的应用中,大多是涉及到某一特定问题时针对其加以证明。我认为可以将具有某些相同性质的问题归类,对这一类加以证明,从而使贪心法的应用更加便捷。例如,对基于集合的问题作如下猜想:已知一个特定有限非空的集合A,求在某最优化条件下从A中选择出的元素所组成的非空新集合。
首先证明该问题的最优子结构性质。设该问题最优解为集合B。由于B非空,必有元素a属于B。对于a产生的子问题,B中包含的它的解C也必是最优的。这是因为,若存在C’比C更符合优化条件,那么C就不是子问题最优解。用C’替代在B中属于C的元素,从而产生B’。B’中元素应会比B更优化,即B’才是最优解。这与原假设B是问题最优解产生矛盾,故原命题得证。也就是证明了问题的最优解包含了其子问题的最优解。
根据最优子结构性质可以证明此问题也存在贪心选择性质。由于总体最优解包含子问题最优解,用集合的“并”运算就可以从子问题和贪心选择构成全局最优解。
经过以上证明,我认为猜想是正确的。它的实质是集合具有明确性、无序性、互异性,并由此衍生出的集合性质与运算。同时也应当注意猜想使用的范围。就如在0-1背包问题中,最后一个位置有可能不足以容纳任何物品,它的地位与其它位置是不平等的,这不同于集合中元素之间的关系,所以0-1背包不能套用该猜想。
尽管贪心法在千变万化的实际情况中的证明仍是使用者的难题,
它已然在各个学科中有了丰富的应用。剥除复杂的学术环境,在生活中贪心法也已经烙印在人们的行为模式中。
当我们购物找钱的时候,每次总是选择不大于剩余应找数额的最大面值的货币,这样就能使找钱次数最少、速度最快。这是贪心法细微而潜在的应用。
贪婪法无处不在,是因为它的思想本质是方法最直接、思路最浅显地达成目的,不设迂回,这也是人朴素的本能。然而为它命名的人却很幽默。贪婪属于西方宗教中的七宗罪,是逃离控制的欲望。当欲望失去了枷锁,就没有了前进的路。我想前人学者们也是想通过这一名字警醒世人:无论是贪婪法,还是内心的欲望,都应该有选择的谨慎对待。
参考文献
[1].肖美华,刘文革,优化文件分配及磁盘文件存储之策略.南昌航空工业学院学报, 2001. 3
[2].Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein,Introduction to Algorithms,潘金贵(译),顾铁成(译),李成法(译),算法导论(第二版).机械工业出版社