文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.2 要点1:算法中解决问题的步骤是明确且有限的
先正式介绍一下什么是算法,用词典查algorithm的意思,得到的解释是“算法”,这个解释很含糊,不知所云吧
再查查JIS(日本工业标准),上面算法的定义是“被明确定义的有限个规则的集合,用于根据有限的步骤解决问题。例如在既定的精度下,把求解sinx的计算步骤无一遗漏地记录下来的文字”。这个定义虽然看起来晦涩,但正确地解释了什么是算法
如果用通俗易懂的语言来说,算法就是“把解决问题的步骤无一遗漏地用文字或图表示出来”。要是把这时的“用文字或图表示”替换为“用编程语言表达”,算法就变成了程序。而且请注意这样一个条件,那就是“步骤必须是明确的并且步骤数必须是有限的”
接下来先举一个具体的例子,请想一想解决“求出12和42的最大公约数”这个问题的算法。最大公约数是指两个整数的公共约数(能整除被除数的数)中最大的数。最大公约数的求解方法应该在中学数学课上学过了。把两个数写在一排,不断地寻找能够同时整除这两个整数的除数。最后把这些除数相乘就得到了最大公约数(如图5.1所示)
图5.1 在中学学的求解最大公约数的方法
用这个方法求出了6是最大公约数,结果正确,但这些步骤能够称为算法治理?答案是不能,因为步骤不够明确
步骤1的“用2整除12和42”和步骤2“用3整除6和21”,是怎么知道要这样做的呢?寻找能够整除的数字的方法,在这两步中并没有体现。步骤3“没有能同时带队和7的除数”,又是怎么知道的呢?而且,到此为止无需后续步骤(即步骤数是有限的)的原因也是不明确的
其实这些都是凭借人类的判断。在解决问题的步骤中,有了与直觉相关的因素,就不是算法了,既然不是算法,也就不能用程序表示了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论