您的位置:首页 > 其它

读书-如何求解问题-现代启发式方法

2016-10-14 20:07 274 查看
(美)Zbigniew Michalewicz David B.Fogel 的《如何求解-现代启发式方法》,是导师极力推荐的一本书,与看国人写的体验不太一样(尤其还带有一些翻译特色),看了前两章,有很多新的观点,并且这两章作者也不是让你光看,还有思考,动手,有几道初中数学题,但脱离了知识背景,不一定能很快做出来(反正我试过了)。

这本书虽然充满了算法,但不是一本算法专著,主要还是讨论求解问题的可能性,帮助我们拓展自己的才能去构建新的问题和进行创造性的思维,以培养怎样求解问题的能力。本书说我们受限于用本章所学的知识来解决那一章后面的每一个问题,从小学到大学,从来都是(想想还真没错),这正是我们缺失求解问题的技巧的开发。通常发现在求解任何实际问题时都有困难,因为这些问题在书中的任何一章都找不到!

所谓问题就是决策人的目的意识驱使的产物,没有追求的人也就不会提出问题。但问题不在于我们不仅有追求的目标,而且很多时候这些想法各执一端,并不互补。问题存在于现实和理想状态之间的差异。为了寻找解决问题的最佳途径,我们不能孤立地看待事物,而应考虑别人的行为如何影响你的解答(比如,博弈、下棋)。然而不考虑“下一步将发生什么”而实施一个方案,就很容易受外界影响,就像在玩只有一个玩家的扑克牌游戏:你和你的钱财很快就要分家。

作者还认为有时候拥有一些解答比长时间等待一个更好的解更有用。但这需要我们自己去判断。然而,判断力也在衰减,因为要做出判断,我们必须知道每种特定的求解方法的假设条件、计算开销和可靠性等等。

作出判断后,我们还要选择一个能找到对现有资源进行最优分配的策略。将不同的方法有效地混合起来使用往往可以得到实际问题的更好解答。

第1章

举个例子吧,两个多年未见的朋友在街上偶遇,他们聊了很多事情,后来他们中的一个问道:既然你已经是数学方面的教授了,那你来算算这个题。今天对我来说是一个和特殊的日子,我的三个儿子都在今天庆祝他们的生日,那么你能算出来他们都有多大吗?

数学家:好,但你得跟我讲讲他们的情况。

我:他们三个的年龄之积是36。

数学家:好,但我还需要更多的提示。

我:指着旁边的一栋房子,他们三个的年龄之和等于那栋房子的窗户个数。

数学家:但是,我还要一点信息来解你这个难题。

我:我的大儿子的眼睛是蓝色的。

数学家:ok,并且给出了正确的答案,三个孩子的年龄9、2、2。

有些问题为何难以求解?

复杂问题的可能解很多。
在解任何类型问题的时候,我们都要将其进行简化使得问题易于求解,但这样做可能导致找到的解并无价值。
问题的条件随时间变化,甚至可能涉及一些不希望你成功的人(可以体会下)。
实际问题经常存在约束,需要进行特殊操作来产生可行解。
此外,由于我们害怕证明问题而使得问题变得比它本身更为复杂。

不要让证明这个词把你吓倒了。
考虑用不同的方法去证明。比如,反证法。
准备好第一步,即使问题没有给你任何开始的提示。自己创造条件,比如引入一个描述问题某一方面的变量,看看是否有帮助。
帮助自己迈出第一步的方法是理解搜索空间:有哪些变量?它们的可能值是什么?有什么约束?最重要的是:

不要偏离题意。
记住要紧紧扣住最终结果。要时常问问自己所做的是否是朝着你想要的方向走。

第2章 一个模型有多重要

为了实现搜索算法,你必须考虑一下几点:

表示方式
目标
评估函数
表示方式是指计算机如何存放你的候选解和搜索新解时的处理对象。目标就是你要达到什么样的目的。评估函数是一种衡量任何一个潜在解得质量的方式。

有时用几何的观点来看待搜索空间也是有用的,考虑围绕一个特定解的邻域,看看能否在该邻域内找到更好解。如果不能,那我们就已经找到了局部最优解,也许它真的就是全局最优;也就是说,不管搜索的邻域有多大,这个解仍然是最优的。但将搜索扩展到小邻域之外通常需要花费大量的计算时间。因此,我们面临陷入局部最优的危险,特别是使用爬山法时。

爬山算法的几个弱点:

它们经常在仅仅得到局部最优解后就停止搜索。
没有关于局部最优解偏离全局最优解的度量信息,甚至与其他局部最优解的差距也无法得出。
最优解的获得依赖于初始设置。
总的来说,它不能给出计算所需时间的上界。
优点:易于使用,用这种方法所需要的不过是表示方式、评估函数以及如何定义已知点的邻域问题。

最后一点,在构建一个问题时,千万不要拘泥于现实的物理性质。要允许自己自由地去问一些这样的问题:如果是台球桌相对于球进行移动,那会怎么样?如果跳出桌子的平面,用这些火柴棍来构造一个金字塔那又会怎样?

观点:

搜索空间的大小并不是由问题本身决定,它只取决于问题的表示方式和处理这种编码的方式。

如果从一个错误的搜索空间开始,你将永远不可能找到正确答案。例如,用6根火柴棒,以它们为边搭建起4个等边三角形。

在解决问题时,你得学会在“盒子以外思考”——或者说在台球桌外思考(不太理解这个台球撞击问题)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  读书 思维 算法