算法世界:从古代到现代的演进与应用
1. 算法发展的现状与未来趋势
算法自古代美索不达米亚时期首次被刻在泥板上以来,已经取得了长足的进步。最初的计算机改变了算法的重要性和能力,自集成电路发明后,算法的力量呈指数级增长。量子计算可能会带来进一步的加速,虽然很难预测未来几年的情况,但人工智能似乎将彻底改变我们世界的运行方式。
目前,量子计算机设计虽面临诸多挑战,但已展现出巨大潜力。例如,某些任务在超级计算机上需两天半完成,而量子计算与之相比,时间差距显著(4分钟与3600分钟)。
同时,由于翻译人员匮乏,世界博物馆里有数千块古代美索不达米亚泥板尚未解读。如今,最新的人工智能算法正被用于自动翻译公元前21世纪美索不达米亚南部的67000块行政泥板,新技术有望解读古老的信息。
2. 常见算法介绍
-
PageRank算法
- 输入链接计数表。
- 计算PageRank,即页面的入链数量除以平均入链数量。
-
重复以下步骤:
-
对每一列重复:
- 将运行总和设为零。
-
对列中的每个条目重复:
- 查找当前行的PageRank。
- 乘以行与列之间的链接数。
- 除以该行的总出链数。
- 乘以阻尼因子。
- 加到运行总和中。
- 处理完列中的所有条目后停止重复。
- 将阻尼项添加到运行总和中。
- 将此值存储为该列的新PageRank。
- 处理完所有列后停止重复。
- 当PageRank的变化较小时停止重复。
-
对每一列重复:
- 输出PageRank。
graph LR
A[输入链接计数表] --> B[计算初始PageRank]
B --> C{PageRank变化小?}
C -- 否 --> D[对每列处理]
D --> E[设置运行总和为零]
E --> F[遍历列中条目]
F --> G[查找行PageRank]
G --> H[乘链接数]
H --> I[除总出链数]
I --> J[乘阻尼因子]
J --> K[加入运行总和]
K --> L{列条目处理完?}
L -- 否 --> F
L -- 是 --> M[加阻尼项到总和]
M --> N[存储新PageRank]
N --> O{列处理完?}
O -- 否 --> D
O -- 是 --> C
C -- 是 --> P[输出PageRank]
-
人工神经网络训练
- 输入训练数据集和网络拓扑。
- 用随机参数填充拓扑。
-
重复以下步骤:
-
对每个训练示例重复:
- 将输入应用于网络。
- 使用前向传播计算网络输出。
- 计算实际输出与期望输出之间的误差。
-
从后向前遍历网络的每一层:
-
对层中的每个神经元重复:
-
对神经元中的每个权重和偏置重复:
- 确定参数与误差的关系。
- 计算参数的校正值。
- 校正值乘以训练率。
- 从参数中减去该值。
- 神经元更新后停止重复。
-
对神经元中的每个权重和偏置重复:
- 层更新后停止重复。
-
对层中的每个神经元重复:
- 网络更新后停止重复。
- 训练数据集耗尽后停止重复。
- 误差不再减小时停止重复。
-
对每个训练示例重复:
- 冻结参数,训练完成。
| 步骤 | 操作 |
|---|---|
| 1 | 输入训练数据集和网络拓扑 |
| 2 | 随机填充参数 |
| 3 | 循环训练示例 |
| 3.1 | 应用输入 |
| 3.2 | 前向传播算输出 |
| 3.3 | 算误差 |
| 3.4 | 反向遍历层 |
| 3.4.1 | 遍历神经元 |
| 3.4.1.1 | 遍历权重和偏置 |
| 3.4.1.1.1 | 确定参数与误差关系 |
| 3.4.1.1.2 | 计算校正值 |
| 3.4.1.1.3 | 乘训练率 |
| 3.4.1.1.4 | 减参数 |
| 4 | 数据集耗尽或误差不再减小停止 |
| 5 | 冻结参数 |
-
比特币算法
-
发送者
:
- 创建交易,记录发送者公钥、接收者公钥、金额和交易输入ID。
- 为交易添加数字签名。
- 向比特币网络广播签名交易。
-
比特币网络计算机
:
- 检查签名是否真实。
- 检查输入交易是否未被花费。
- 将交易纳入候选块。
- 将候选块链接到链上。
-
重复以下步骤:
- 生成随机数并添加到块中。
- 计算块的哈希值。
- 当哈希值小于阈值时停止重复,或当其他计算机获胜时放弃。
- 向网络广播有效块。
- 接收者 :当交易和另外五个块添加到链上时接受交易。
-
发送者
:
graph LR
A[发送者创建交易] --> B[添加数字签名]
B --> C[广播交易]
C --> D[网络计算机检查签名]
D --> E[检查输入交易]
E --> F[纳入候选块]
F --> G[链接到链]
G --> H[生成随机数]
H --> I[计算哈希值]
I --> J{哈希值小于阈值?}
J -- 是 --> K[广播有效块]
J -- 否 --> H
K --> L[接收者等待6个块添加]
L --> M[接收交易]
-
Shor算法
- 输入一个大数。
-
重复以下步骤:
- 选择一个质数作为猜测。
- 将猜测存储在内存中。
- 创建一个空列表。
-
重复以下步骤:
- 将内存中的值乘以猜测。
- 更新内存中的值。
- 计算输入除以内存中值的余数。
- 将此余数添加到列表中。
- 大量重复后停止。
- 对余数列表应用傅里叶变换。
- 识别最强谐波的周期。
- 计算猜测的周期除以2的幂减1。
- 对该值和输入应用欧几里得算法。
- 当返回的值是输入的质因数时停止重复。
- 用输入除以质因数。
- 输出两个质因数。
3. 算法发展历程中的关键节点与事件
算法的发展历程中,有许多关键节点和事件,它们推动了算法从古代到现代的不断演进。
-
古代算法
- 美索不达米亚时期,算法首次被刻在泥板上,这是算法发展的起源。
- 古埃及数学具有实用性,围绕数值计算展开,但由于记录在纸莎草上,很多内容可能已失传。
- 印加文明是青铜时代唯一已知未发明文字的文明。
- 古希腊的海伦算法是更通用的牛顿 - 拉夫逊方法的简化形式,且其近似算法可通过特定方式加速。欧几里得算法最初使用减法,也可用除法或在对数域用减法实现。
| 文明 | 算法特点 | 记录方式 |
|---|---|---|
| 美索不达米亚 | 算法起源 | 泥板 |
| 古埃及 | 实用,围绕数值计算 | 纸莎草 |
| 印加 | 未发明文字 | - |
| 古希腊 | 海伦算法、欧几里得算法 | - |
-
古代到中世纪的算法发展
- 阿基米德螺旋可能由巴比伦人发明,后传入埃及。阿基米德在计算时没有现代的三角函数,其算法最终被基于无穷级数的计算方法取代。
- 二次算法具有特定形式,《还原与对消计算概要》在1145年左右被罗伯特·切斯特翻译成拉丁文。不同文化发展了十进制数系统,但使用不同的数字表示和位置系统。
- 傅里叶提出任何变量函数可表示为一系列正弦函数的求和,他的工作普及了这一概念。图基还创造了“软件”和“比特”这两个术语。
graph LR
A[阿基米德螺旋] --> B[巴比伦发明传入埃及]
C[阿基米德算法] --> D[被无穷级数计算取代]
E[二次算法] --> F[特定形式]
G[《还原与对消计算概要》] --> H[翻译成拉丁文]
I[傅里叶理论] --> J[普及函数表示概念]
K[图基] --> L[创造术语]
-
计算机时代的算法发展
- 差分机一号的成品在伦敦科学博物馆展出,它看起来更像维多利亚时代的现金寄存器。艾达·洛夫莱斯虽未参与分析机的设计,但理解其功能并推动了巴贝奇思想的传播。
- 图灵提出图灵测试,其与阿隆佐·丘奇在大致相同时间提出基于微积分的证明,且图灵的工作与库尔特·哥德尔的早期工作密切相关。Z3通过一个技巧可实现图灵完备,贝尔实验室也开发了基于继电器的计算器。
| 事件 | 相关人物 | 关键成果 |
|---|---|---|
| 差分机一号 | 巴贝奇 | 机械计算装置 |
| 分析机 | 巴贝奇、艾达·洛夫莱斯 | 思想传播与应用理解 |
| 图灵测试 | 图灵 | 判断计算机智能的标准 |
| Z3 | - | 实现图灵完备 |
| 贝尔实验室计算器 | 乔治·斯蒂比茨 | 基于继电器的计算 |
4. 算法在不同领域的应用案例
算法在各个领域都有广泛的应用,以下是一些具体的案例。
-
天气预报领域
- 这里的“计算机”指伪图灵完备计算机,它们处理数字以代表信息,而模拟计算机使用连续物理量代表信息。
- 拉森裁决指出埃克特和莫奇利并非自动电子数字计算机的发明者,其技术来源于约翰·文森特·阿塔纳索夫。
- 大数定律表明随机过程的多次试验平均结果会趋近真实值,蒙特卡罗方法被用于天气预报,恩里科·费米曾进行相关实验但未发表。亨利·庞加莱在19世纪80年代发现了三体轨道的混沌系统并发展了相关理论,如今集成电路中的晶体管数量每24个月翻倍。
graph LR
A[伪图灵完备计算机] --> B[处理数字代表信息]
C[模拟计算机] --> D[使用连续物理量]
E[拉森裁决] --> F[技术来源判定]
G[大数定律] --> H[平均结果趋近真实值]
I[蒙特卡罗方法] --> J[用于天气预报]
K[庞加莱] --> L[发现混沌系统]
M[集成电路] --> N[晶体管数量翻倍]
-
人工智能领域
- 斯特雷奇的计算机音乐作品被英国广播公司录制,相关历史录音已在线发布。
- 肖在1971年离开兰德公司成为软件和编程顾问,于1991年去世。
- 乔纳森·谢弗编写的跳棋程序奇努克在1994年击败了世界冠军马里恩·廷斯利。塞缪尔的学习和极小极大程序借鉴了克劳德·香农的建议,纽厄尔和西蒙的部分预测得以实现。
| 事件 | 相关人物 | 关键成果 |
|---|---|---|
| 计算机音乐 | 斯特雷奇 | 作品录制与发布 |
| 软件顾问 | 肖 | 职业转变 |
| 跳棋程序 | 乔纳森·谢弗 | 击败世界冠军 |
| 学习程序 | 塞缪尔 | 借鉴香农建议 |
| 预测 | 纽厄尔和西蒙 | 部分实现 |
-
其他领域
- 在解决旅行商问题方面,目前最快算法具有指数复杂度,1976年尼科斯·克里斯托菲迪斯提出的算法可快速生成保证不超过最小路线50%的路线,后来的快速近似算法将保证率提高到40%。
- 全国住院医师匹配计划(NRMP)算法最初由约翰·穆林和J.M. 斯塔尔纳克开发,盖尔 - 沙普利算法曾两次因过于简单被拒,最终于1962年发表。
- 霍兰德的遗传算法工作有其独特之处,虽然之前尼尔斯·巴里塞利和亚历山大·弗雷泽曾用计算机算法模拟生物进化过程,但霍兰德的工作包含了一些关键元素。美国最早的两个计算机科学博士学位于1965年6月7日同时授予。
| 领域 | 算法或事件 | 关键信息 |
|---|---|---|
| 旅行商问题 | 尼科斯·克里斯托菲迪斯算法 | 快速生成近似路线 |
| 住院医师匹配 | NRMP算法、盖尔 - 沙普利算法 | 匹配机制 |
| 遗传算法 | 霍兰德 | 独特关键元素 |
| 计算机科学博士 | 1965年6月7日 | 最早授予 |
超级会员免费看
19

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



