爱迪生欺骗了世界.docx

上传人:b****7 文档编号:8879117 上传时间:2023-02-02 格式:DOCX 页数:7 大小:22.33KB
下载 相关 举报
爱迪生欺骗了世界.docx_第1页
第1页 / 共7页
爱迪生欺骗了世界.docx_第2页
第2页 / 共7页
爱迪生欺骗了世界.docx_第3页
第3页 / 共7页
爱迪生欺骗了世界.docx_第4页
第4页 / 共7页
爱迪生欺骗了世界.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

爱迪生欺骗了世界.docx

《爱迪生欺骗了世界.docx》由会员分享,可在线阅读,更多相关《爱迪生欺骗了世界.docx(7页珍藏版)》请在冰豆网上搜索。

爱迪生欺骗了世界.docx

爱迪生欺骗了世界

自然计算方法导论课程研究报告

爱迪生欺骗了世界

——“自然计算方法导论”课程研究报告

【摘要】“自然计算方法导论”这门课程已经结束,梁教授带给我们的不仅仅是一场自然算法的视听盛宴,更教会了我们一些做人的道理。

本文意在通过分析课堂上所涉及的算法,揭示出自然算法中也蕴含了一定的人生哲理,值得我们细细品味。

【关键字】自然计算方法爱迪生欺骗算法NP难

【前言】爱迪生有一句至理名言,或许我们每个人都曾无比自豪地在或是作文,或是演讲中使用到过:

“天才,是百分之一的灵感加上百分之九十九的汗水”,后面还有鲜为人知的一句:

那百分之一的灵感比百分之九十九的汗水更为重要。

然而事实真的如此吗?

学习过“自然计算方法导论”这门课后,我回想起遗传算法、人工免疫学、贪心算法等时,印象最深的并非算法本身,而是深刻体会到了这样一句话——爱迪生,欺骗了世界……

一、勇往直前+持之以恒=屡战屡胜?

“天才是百分之一的灵感加上百分之九十九的汗水”,爱迪生的名言从幼儿园时代起就被各式各样的人挂在嘴边以帮助我健康成长,我自然也将其奉为神明。

然而,在经过“自然计算方法导论”这门课的“心灵洗礼”后,我渐渐开始重新认识这句话的真实性,不为其他,只因由此联想到了两个算法,“坚持不懈”和“投机取巧”的代表——线性规划和贪心算法。

二、线性规划&贪心算法

1、线性规划

1)线性规划简述

线性规划是运筹学中研究较早、发展较快、应用广泛、方法成熟的一个重要分支。

它是辅助人们进行科学管理的一种数学方法,在经济管理、交通运输、工农业生产等经济活动中都有一定应用。

线性规划所研究的是在一定条件下,合理安排人力物力等资源,使经济效果达到最好。

由于数字电子计算机的发展,出现了许多线性规划软件,可以很方便地求解几千个变量的线性规划问题。

2)线性规划数学模型建立步骤

首先,根据影响所要达到目的的因素找出决策变量;

其次,有决策变量和所在达到目的之间的函数关系确定目标函数;

最后,由决策变量所受的限制条件确定决策变量所要满足的约束条件。

2、贪心算法

1)贪心算法简述

所谓贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。

也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

按照我的观点,说道贪心算法,一般都会想到像我这样只考虑近期短期投资和收益的人,就是有些目光短浅的人吧。

2)贪心算法的基本思路

首先,建立数学模型来描述问题;

其次,把求解的问题分成若干个子问题;

再次,对每一子问题求解,得到子问题的局部最优解;

最后,把子问题的解局部最优解合成原来解问题的一个解。

3、小结

算法介绍完毕,以上文字对于你我来说不过是一道开胃小菜。

那么,线性规划以及贪心算法和爱迪生的名言又有什么关系呢?

先别急,请听我娓娓道来。

三、假如可以给“天才”建模……

众所周知,我们生活在一个光怪陆离的世界,每天都有千百万件不可能的事情,变为可能。

话虽如此,爱迪生的名言中所谓的“天才”是否也可以建立一个方便我们进行分析的逻辑模型呢?

为了研究问题方便,我们假定有这样一个世界,世界里生存的全部都是爱迪生口中的那种由百分之一灵感加上百分之九十九汗水构成的“天才”。

现在我们所要研究的问题,就变成了是否能用一个确定的、静态的、清晰模型,去描述这样一个不确定的、动态变化的、模糊的概念。

从直觉上来讲,我觉得这个问题相当有难度。

不过直觉归直觉,如果我的直觉百分之百灵验,那么我就得改名叫“池半仙”了。

下面,我们不妨假设可以给名为“天才”的世界建立一个精确的逻辑模型。

于是乎我们也很容易在这个模型的基础上预测(不对。

其实事到如今,在那个世界应该不存在“预测”这个词,取而代之的必然是“断定”)未来所发生的一切事情。

具体步骤如下:

1、了解世界的一小部分;

2、对这一部分建立精确的逻辑模型;

3、对这一个模型求解其变化趋势;

4、将这一变化趋势转化为实际变化。

显然,以上步骤解决了长久以来困扰我们的一大难题——如何预知未来。

相信这将是一项任何投机业(如股市,博彩等)经营者都不愿意看到的重大发现。

而事实上,我们非常清楚地知道,哪怕仅仅是世界的凤毛麟角,我们也很难,甚至是不可能作出100%正确的预测,比如我们的一生(投机业者松了一口气)。

这个故事告诉我们:

为“天才”建模至少和准确预测世界未来一样难,由此推断出为“天才”建模是一个NP难问题。

四、爱迪生名言说出了NP难?

绕了一圈,原来爱迪生的名言中居然还蕴含了一个NP难问题。

而我们接下来的任务,便是分析这个所谓的NP难究竟会给爱迪生欺骗我们带来怎样的便利条件。

1、何为NP难

有数学家说过:

“一个好的问题胜过十个好的解答”。

因为解答一出此问题已经到了终点,对不断追求创新的人们而言,已经不再构成任何挑战。

而新的问题是源头活水,能开拓新的境界。

多数人都不愿沉醉在好的解答中不断玩味,而希望找到新的问题,不断思考。

我想,NP(nondeterministicpolynomial非确定性的多项式时间)难问题必定会让这些寻求刺激的人们感到一丝满足。

现在,请大家不妨记住“NP-hard”这几个伟大的字母,因为NP-hard问题不但代表“难”,而且还是NP的难。

我们可能会经常看到网上出现“这怎么做,这不是NP问题吗”,“这个只有搜了,这已经被证明是NP问题了”之类的话。

要知道,大多数人此时所说的NP问题其实都是指的NPC问题。

他们没有搞清楚NP问题和NPC问题的概念。

NP问题并不是那种“只有搜才行”的问题,NPC问题才是。

1)时间复杂度

还是先用几句话简单说明一下时间复杂度。

时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。

也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。

不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O

(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。

还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!

)的阶乘级复杂度。

不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。

同样地,O(n^3+n^2)的复杂度也就是O(n^3)的复杂度。

因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。

我们也说,O(n^100)的复杂度小于O(1.01^n)的复杂度。

容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者:

一种是O

(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是O(a^n)和O(n!

)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。

当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。

2、不可解问题

自然地,人们会想到一个问题:

会不会所有的问题都可以找到复杂度为多项式级的算法呢?

很遗憾,答案是否定的。

有些问题甚至根本不可能找到一个正确的算法来,这称之为“不可解问题”(UndecidableDecisionProblem)。

比如,输出从1到n这n个数的全排列。

不管你用什么方法,你的复杂度都是阶乘级,因为你总得用阶乘级的时间打印出结果来。

有人说,这样的“问题”不是一个“正规”的问题,正规的问题是让程序解决一个问题,输出一个“YES”或“NO”(这被称为判定性问题),或者一个什么什么的最优值(这被称为最优化问题)。

那么,根据这个定义,我也能举出一个不大可能会有多项式级算法的问题来:

Hamilton回路。

问题是这样的:

给你一个图,问你能否找到一条经过每个顶点一次且恰好一次(不遗漏也不重复)最后又走回来的路(满足这个条件的路径叫做Hamilton回路)。

这个问题现在还没有找到多项式级的算法。

事实上,这个问题就是我们后面要说的NPC问题。

3、P问题orNP问题

下面引入P类问题的概念:

如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。

P是英文单词多项式的第一个字母。

哪些问题是P类问题呢?

通常NOI和NOIP不会出不属于P类问题的题目。

我们常见到的一些信息奥赛的题目都是P问题。

道理很简单,一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。

接下来引入NP问题的概念。

这个就有点难理解了,或者说容易理解错误。

在这里强调(回到我竭力想澄清的误区上),NP问题不是非P类问题。

NP问题是指可以在多项式的时间里验证一个解的问题。

NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。

比方说,一个人RP很好,在程序中需要枚举时,可以一猜一个准。

现在另一个人拿到了一个求最短路径的问题,问从起点到终点是否有一条小于100个单位长度的路线。

它根据数据画好了图,但怎么也算不出来,于是来问这个人:

你看怎么选条路走得最少?

他说:

“我RP很好,肯定能随便给你指条很短的路出来。

”然后,他就胡乱画了几条线,说就这条吧。

那人按他指的这条把权值加起来一看,嘿,神了,路径长度98,比100小。

于是答案出来了,存在比100小的路径。

别人会问他这题怎么做出来的,他就可以说,因为我找到了一个比100小的解。

在这个题中,找一个解很困难,但验证一个解很容易。

验证一个解只需要O(n)的时间复杂度,也就是说他可以花O(n)的时间把他猜的路径的长度加出来。

那么,只要我RP好,猜得准,我一定能在多项式的时间里解决这个问题。

我猜到的方案总是最优的,不满足题意的方案也不会来骗我去选它。

这就是NP问题。

当然有不是NP问题的问题,即大家猜到了解但是没用,因为你不能在多项式的时间里去验证它。

之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。

我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。

相信读者很快明白,信息学中的号称最困难的问题——“NP问题”,实际上是在探讨NP问题与P类问题的关系。

很显然,所有的P类问题都是NP问题。

也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解——既然正解都出来了,验证任意给定的解也只需要比较一下就可以了。

关键是,人们想知道,是否所有的NP问题都是P类问题。

我们可以再用集合的观点来说明。

如果把所有P类问题归为一个集合P中,把所有NP问题划进另一个集合NP中,那么,显然有P属于NP。

现在,所有对NP问题的研究都集中在一个问题上,即究竟是否有P=NP?

通常所谓的“NP问题”,其实就一句话:

证明或推翻P=NP。

 

NP问题一直都是信息学的巅峰。

巅峰,意即很引人注目但难以解决。

在信息学研究中,这是一个耗费了很多时间和精力也没有解决的终极问题,好比物理学中的大统一和数学中的歌德巴赫猜想等。

目前为止这个问题还“啃不动”。

但是,一个总的趋势、一个大方向是有的。

人们普遍认为,P=NP不成立,也就是说,多数人相信,存在至少一个不可能有多项式级复杂度的算法的NP问题。

人们如此坚信P≠NP是有原因的,就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的NPC问题。

C是英文单词“完全”的第一个字母。

正是NPC问题的存在,使人们相信P≠NP。

而我们下面重点讨论的NP-Hard问题是这样一种问题:

NP-Hard问题难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。

即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。

事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。

不要以为NP难问题是一纸空谈。

NPC问题是存在的。

2、著名的NP难——旅行商问题

NP难问题中最著名的代表应该是旅行商问题,具体难到什么程度,梁教授在课堂上已有涉及,这里就不具体描述了。

总之十个字——“而生也有涯,尔知也无涯”。

区区十二个城市就要用三十个世纪才能算出答案,如此庞大的工作量,连大型电子计算机也只能望洋兴叹了。

以至于数学家们都想要证明,对于旅行商问题,没有比硬排好很多的算法。

之所以在这里强调算法一定要好很多才有效,是因为对于此类问题,若能计算快一倍或十倍、百倍甚至千倍,往往也起不了太大的作用。

还是那个旅行商问题,即使计算速度快乐千倍,仍然像需要三年的计算时间,而再加上三个城市就立刻把这种算法的效果抵消了。

总而言之,想用一般方法解决NP难问题,谈何容易,根本就是不可能。

悲剧的是,伟大的发明家爱迪生先生在名言中隐藏的,恰恰是一个NP难问题。

五、爱迪生欺骗了世界

好,现在我们终于可以回到文章开篇所提到的问题上了。

“天才是百分之一的灵感加上百分之九十九的汗水”,原来我们被狡猾的发明家欺骗了这么久。

既然已经推断出爱迪生隐藏在名言中的问题属于NP难,那么我们开篇所提到的线性规划方法就只能抛弃了,原因很简单——这种方法几乎没有可行性。

那么其他的算法能不能稍微解释一下爱迪生的问题呢?

我想到了局部搜索和贪心算法。

局部搜索很好理解,这就好像是买彩票一样,能否得到最优解就凭两个字——运气。

至于考虑到贪心算法,纯粹是由于它的相关介绍中的一段话打动了我:

“贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。

但这种类型的算法究竟比普通算法高明多少?

以我目前的实力,还不得而知。

毕竟才疏学浅,从梁教授那里只学得一点皮毛而已,再继续研究下去恐怕要接近技术层面,对于我来说未免有些吃力了。

就先将想象的白鸽放飞至此吧。

以上分析正确也好,谬论也罢,全当是开拓了各位看官的视野——原来,我们也会被表面看上去很励志的言语所蒙蔽;,原来,算法中还蕴含着许多不为人知的道理有待我们的挖掘;原来,换个角度看世界,风景便会不一样。

其实这个世界上许多道理都是相通的,算法如此,人生亦然。

我想,梁教授开设这堂课的目的,也是一样的吧。

【参考文献】

1、《线性规划》武汉大学出版社2008年6月

2、《计算机教育》王利第10期

3、XX百科

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1