(这章大家就当学霸文来看,如果看不懂就当主角装比好啦,这一章是为今后生物基因工程做铺垫,大家看完就知道了,后面的更新就不会出现这种劝退类的章节了,定都定好含着泪也要写完……o(╥﹏╥)o)
——
叶华望着几位学生微笑:“作为千禧年数学七大难题之首的「p=np?」问题到现在也没有人能证明或证伪,如果你们有谁将来能解决这个问题就可以立马去美国克雷数学研究所领取100万美元的赏金,这份悬赏至千禧年宣布至今仍然有效。”
“它既是世界七大数学难题之首,但同时它又是七个问题中最容易理解的一个数学问题,其实就是一个做数独的问题,这个问题诞生于1971年,是理论计算机领域诞生的一个数学问题。”
教学是一门授业解惑的学问,而叶华可以说是一个无证教师,不过这并不妨碍他成为一名合格的讲师。
“同学们,在生活中,你们是怎么去衡量一个问题的?它是简单还是复杂?或者说容易还是困难?”叶华在课堂上踱步而走,时而用余光扫视几名学生是否在认真听讲,什么小动作都逃不过叶校长的法眼,上课的时候这几个学生还算乖巧,包括平常爱搞事的柳玲双。
片刻便自问自答:“这好像没有一个具体的量化标准,而且问题还会因人而异。但是计算机不一样,计算机的计算效率是一个定值,也没有智力商数。”
“比如两个问题,一台计算机从1显示到10,和从1显示到1000,显然后面的问题要用到100倍的时间,相对前面的问题就困难。”
“对于一台计算机来说,衡量一个问题的简单或困难,看解决问题的时间或者步骤多少,因为效率在一定的情况下,时间和步数是等价的,给个定义就叫时间复杂度,时间复杂度越小、越少问题越简单。但实际情况还得考虑什么?”
说完叶华看向了他们几个,不一会儿,柳玲双便道:“还得考虑计算机所占用的空间。”
“回答完全正确。”
黑客少女被表扬的暗喜,计算机可是本女侠的拿手好戏。
叶华对她投去了一个表扬的目光,算是奖励了,然后说道:“空间问题就放一边,我们今天讲时间问题,举个例子……”
再也没有什么比经典的“举个栗子”容易理解了。
“一道题,现在我给你出n个数,要求选出其中最大的一个数,需要多少步?谁知道?”
话音刚落,最小的宁杰便飞速应答:“n1步。”
“回答正确!”
叶华点点头,数学小天才宁杰这么快答出来是在他的意料之中,调出浮空屏幕罗列一串数字:“方法其实很简单,先比较前两个,取其中最大的数与第三个数进行比较,然后取其中最大的数再与第四个比较,以此类推,取n个数就比较n1次。”
“第二道题,还是给出n个数,但这道题是要求把n个数从大到小依次排序,那又需要多少步呢?”
宁杰再次不假思索的道:“需要n(n1)/2步。”
叶华再次点头:“回答正确。宁杰同学你可以和其他的同学介绍一下计算的过程么?”
宁杰立马回答:“用刚才的办法先选出最大数需要用到n1步,然后选出剩下的所有数中最大的数用n2步,类推下去就是(n1)+(n2)+(n3)+……一直加到最后的答案就是n(n1)/2。”
柳玲双一看很快就看明白了,这不就是计算机编程里面的“冒泡法”嘛,黑客少女自然一看就懂,其实这些都是简单问题,在场的八个学生都能快速理解。
叶华接着讲道:“显然,随着n的增加,排序问题的难度就比之前选最大数的难度高了。n1当这个n很大的时候,1可以省略了,有没有无影响,数量级就是由n来决定的,第二个问题时间的数量级是由n^2决定,别的也可以省略,包括系数。”
说到这里叶华调出一块模拟黑板的浮空大屏幕,用手指替代粉笔,在色板上点了一下白色,然后在面板上罗列式子:“用渐进符号o表示,第一个问题的计算量表示为o(n),第二个问题表示为o(n^2)。两个问题一对比就发现随着n的增加o(n^2)更难一些,这很好理解,因为n^2比n大。”