返回介绍

5.2 要点1:算法中解决问题的步骤是明确且有限的

发布于 2023-05-19 17:35:11 字数 1006 浏览 0 评论 0 收藏 0

先正式介绍一下什么是算法,用词典查algorithm的意思,得到的解释是“算法”,这个解释很含糊,不知所云吧

再查查JIS(日本工业标准),上面算法的定义是“被明确定义的有限个规则的集合,用于根据有限的步骤解决问题。例如在既定的精度下,把求解sinx的计算步骤无一遗漏地记录下来的文字”。这个定义虽然看起来晦涩,但正确地解释了什么是算法

如果用通俗易懂的语言来说,算法就是“把解决问题的步骤无一遗漏地用文字或图表示出来”。要是把这时的“用文字或图表示”替换为“用编程语言表达”,算法就变成了程序。而且请注意这样一个条件,那就是“步骤必须是明确的并且步骤数必须是有限的”

接下来先举一个具体的例子,请想一想解决“求出12和42的最大公约数”这个问题的算法。最大公约数是指两个整数的公共约数(能整除被除数的数)中最大的数。最大公约数的求解方法应该在中学数学课上学过了。把两个数写在一排,不断地寻找能够同时整除这两个整数的除数。最后把这些除数相乘就得到了最大公约数(如图5.1所示)

图5.1 在中学学的求解最大公约数的方法

用这个方法求出了6是最大公约数,结果正确,但这些步骤能够称为算法治理?答案是不能,因为步骤不够明确

步骤1的“用2整除12和42”和步骤2“用3整除6和21”,是怎么知道要这样做的呢?寻找能够整除的数字的方法,在这两步中并没有体现。步骤3“没有能同时带队和7的除数”,又是怎么知道的呢?而且,到此为止无需后续步骤(即步骤数是有限的)的原因也是不明确的

其实这些都是凭借人类的判断。在解决问题的步骤中,有了与直觉相关的因素,就不是算法了,既然不是算法,也就不能用程序表示了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文