历史中的经典算法探秘
在算法的世界里,我们常常会接触到各种各样的算法,不同的算法有着不同的特点和应用场景。有时候,一种算法可能不是唯一的或最好的解决方案,我们需要保持开放的思维,去探索新的、可能更好的方法。
1. 算法设计的权衡
在算法设计中,速度和内存需求之间的权衡是一个重要的考虑因素。例如,RPM(Russian Peasant Multiplication)算法虽然速度可能较慢,但它前期需要记忆的内容较少,因为它不需要掌握大部分乘法表。这种为了降低内存需求而牺牲一点速度的做法,在很多算法设计和实现的场景中都很常见。
同时,像RPM这样优秀的算法,还能揭示看似不同的概念之间的联系。比如,二进制展开可能看似只是让晶体管工程师感兴趣的奇技淫巧,对普通人甚至专业程序员来说没什么用。但RPM算法却展示了一个数的二进制展开与一种只需最少乘法表知识就能进行乘法运算的便捷方法之间的深刻联系。这也是我们要不断学习的另一个原因:你永远不知道一些看似无用的知识什么时候会成为强大算法的基础。
2. 欧几里得算法
欧几里得算法是古希腊人留给人类的伟大遗产之一。欧几里得在他的13本《几何原本》中严谨地整理了理论几何知识。他的数学著作大多采用定理/证明的风格,从简单的假设中逻辑地推导出命题。他的一些工作还具有建设性,提供了使用简单工具绘制或创建有用图形的方法。虽然当时“算法”这个词还未被创造出来,但他的建设性方法实际上就是算法,其中一些算法背后的思想至今仍然有用。
2.1 手动执行欧几里得算法
欧几里得最著名的算法就是用于求两个数的最大公约数的算法。以下是手动执行该算法的步骤:
1. 取两个自然数,设为a和
-1
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



