|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 鱼C-小师妹 于 2022-9-22 10:01 编辑
课程更新至此,这一讲我要宣布:
在正式告别前,我想在这个时候再来说一说:
在算法科学家眼里,这个问题很简单,算法就是:
而对于我们初学者来说这还不够直白。
要真正搞懂什么是算法,要先搞清楚一件事:“计算机做事与人做事的核心差异是什么?”
咱们人类做事,往往可以接受模糊,算法必须有明确的标准。
例如生活中我们要做一道“宫保鸡丁”菜,要在锅中“输”入鸡肉、泡姜、木耳丝、盐少许、酱油少许。
而烤蛋糕要输入16克黄油,33克面粉,要放进200度烤箱,烤20分钟。
但请读者仔细回忆一下,宫保鸡丁的原材料稍微有些变化,或者换个大厨来做,味道可能就不一样了。
但烤蛋糕只要严格遵照规定,谁来烤都一样。
所以从这个角度来说,“宫保鸡丁”不是算法,烤蛋糕的才是。
因为烤蛋糕的食谱可以无数次复现,谁来干都一样。
这也就是为什么我们说:“算法要求极其明确。”
当一个解决方案足够明确,必然可以让这个算法无数次再现,同一个算法,相同的输入必然可以得到相同的输出。不会因为执行的计算机不同、人不同,就导致不同的结果。
能不能复现也是我们衡量明确性的标准。当你有一个问题要交给算法解决,就要不断明确每个细节,保证算法执行之后能够复现。
所以本质上来说,算法就是一套通过确定性保证解决问题的工具。
既然是工具那么并没有好坏之分,因为背后都是“设计者的思想”。
就像在第38课中课后作业,当我们输入浮点数,原本的算法会报错。
注意这不是算法错了,是使用者没有遵守算法设计者的规则。
所以,不要对算法评判对错、好坏,算法只是设计者思想的体现,如果算法出了问题,请回到人身上找问题。
我们一定要结合具体案例去选择适合的算法,问题通常有很多解决方案,如何找到一个解决方案并且确定其为优秀的方案,是需要反复练习、熟能生巧的。
到此,本书也完成了“敲门砖”的工作,带你走入了算法世界,请用你所学的不同算法去解决一个个真实发生在读者生活中的问题吧。
最后引述丘吉尔的一句名言来结束本课程。
这不是结束,这甚至不是结束的开始,这只是开始的结束。
|
评分
-
查看全部评分
|