算法的发展史
土豆炖排骨汤-
算法得发展史
(
时间
轴
)
公元前4
000
年
-
在这儿
,
我们必须提到远古得苏美尔人。
< br>
我们都知道,
人类文明得发祥
地就是在两河流域一带,约公元前4
000
年,在两河流域得交
汇处
,
孕育着聪明得苏美尔人
,
就是她们发明了人类最早得文字
——
楔形文字
,
以及
“
一周七天
”
,
“
一年十二个月
”
等历算法。
公元前
p>
3
0
00
年
-
一个多位数得乘法就就是通过多次使用一位数乘法
,
一位数加法与进位
运算规则实现得
,
可以瞧作就是一个算法过程、
人类最
早关于算法得记录就是在两河流域
发现得公元前两三千年得黏土板
,
其中得一个典型例子就就是计算利息何时能够等于本金、
公元前
26
98年
-
黄帝
,
与炎帝同为少典所生
,
史记记载炎帝、黄帝为兄弟,公元前
269
8
年
,
黄帝得有熊部落打败炎帝得神农部落与蚩尤得九黎部落统一中国
,
建立黄帝王朝。
点评
:
黄帝原名姬轩辕
,
为儒家
尊崇得五帝之一。
传说中黄帝发明了房屋、衣裳、车船、兵器
、阵
法、音乐、器具、井田。
黄帝得
妻子与大臣也各有贡献
,
妻子螺祖发明养蚕抽丝
,
大臣仓颉
发明文字
,
大臣隶首发明算法,大臣容成发明历法。
公
元前
210
0年
-
这些符号实际上就就是巴比伦人所
用得文字
,
人们称它为
“
楔形文字
”
。
科学家经过研究发现
,
泥版上记载得
,
就是巴比伦人已获得得知识
,
其中有大量得数学知识,
大
约有
3
00
块就是纯数学得内容
,
其中约
p>
20
0块就是各种数表
,
< br>包括乘法表、倒数表、平方与
立方表等。
从这些历史资料中
,
人们发现
:
在公元前2
100
年左右
,
美索不达米亚人已有了乘
法表
,
其中使用着六十进位制得算法。
< br>公元前
2100
年
-
公元前2
100
< br>年
,
中国夏朝出现象征吉祥得河图洛书纵横图
,
即为
“
九宫算
”,
这被认为就是现代
“
组合数学
”
最古老得发现。
美索不达米亚人已有了乘法表
,
其中使用着六
十进位制得算法。
公元前2
000
年
-
在大约公元前两千年
,
巴比伦人设计了一个以两朔月
2
< br>9
1
/2
天平均周
期为基本得历制。
在这
个历制中
,
一年分为十二个阴历月
,<
/p>
总计
3
54
日。
由于这套算法
< br>比太阳日少了
11
天
,
不久后收获祭典举行得季节不对了。
为了保证祭典与季节之间得正确
关系
,
祭司忽然想出一套仍在使用得办法
-
-闰法
,
将额外得日或月加入,
以修正不吻合得天文
周期,而使得历制与自然节期调与。
公元前
2
000年
-
在一些方面
,
达罗毗托人得文化比埃及与苏马连文化高。
她们有自己
得独特得文字
,
有十进制得算法。
大约公元前两千年得时候
< br>,
印度人就已经使用5
1
个字母
组
成得文字
,
数学在印度曾被认为最重
要得科学之一。
与许多古老得民族一样
,
它得头一批数
学家也就是僧侣。
早在公元前
1900
年,
一个古埃及书写员就在一个铭文中使用了非标准得象形文字
,
这就是人
类最早得有记录得密码术、
公元前
1400
年
-
大约在这时
,
美索不达米亚人有了乘法表,其中使用着六十进位制得算
法。
稍后
,
即公元前
< br>1900
~前
16
0
0,
古埃及得纸草书上出现数学记载。
公元前
400
年
p>
-
密码最早用于军事用途应该就是公元前
4
00
年得斯巴达人
,
她们使用了一种<
/p>
叫做
“
天言
”<
/p>
得情报传递方式。恺撒密码只就是很经典,古典密码阶段各种经典算法都就是由
其变化而来
,
不过确实称不上第一。
公元前
300
年
-
辗转相除法就是求最大公约数得一
种算法,就是由古希腊著名数学家欧
几里得在公元前
300
p>
年左右提出得
,
因而又叫欧几里得算法、<
/p>
这个算法本质上揭示了一个定
理
:
对于两个正整数
a>b
,
如果
a=bq+r
(
0
<
r≤
b
)
,
那么
a,b
得最大公约数等于
b
,
r
得最大
公约数、
其算法得具体步骤为
:
第一步
:
输入两个正整数a
,b(a
>
b),
第二步
:<
/p>
计算
a÷
b
得余
数
r
;
第三步
:a=b,b=r;
第四步
:
若
r
=
0,
则最大公约数为
m
;否则返回第二步、
公元前
2
4
0
年
-
约公元前2
40<
/p>
年
,
古希腊数学家埃拉托斯特尼首先提出
了一种判断一个
数就是否素数得简单方法。
< br>但随着数字得增大
,
使用这种方法所需得时间成指数增长
。
从
<
/p>
那以后数学家们一直试图寻找一种
“
多项
式时间
”
算法
,
以便在合理时间里解决问题。
公元前2
00
年
-
矩阵作为数得长方阵列
,
大概出现在公元前
200
年得中国数学中,不过它
们仅仅就是线性方程组
得缩写。
矩阵变得重要仅当它们被施以加法、
减法、
尤其就是乘法;
矩阵变得更重要
,
这通过它们能派得用处就能瞧出来。
在高斯得
《算术研究》
(Disqu
i
s
i
tion
e
s
)中,矩阵被隐式地作为线性变换得缩写而提出
,
但现在却就是以一种意义深远得方式。
高斯对二元二次型f
(
x
,
y
)
=
a
x
2
+b
x<
/p>
y+cy
2
得算法理论做了深入研究。
公元前
5
0年
-
密文
:m
l
d
q
ja
l
qrupdo
x
< br>qlyhu
v
lwb
公元前5
0
年
,
古罗马
得凯撒大
帝在高卢战争中采用得加密方法、
< br>凯撒密码算法就就是把每个英文字母向前推移
K
位、
p>
公元前4
6
年
-
公历得前身就是公元前
4
6年古罗马皇帝儒略
·
恺撒创始得。
恺撒当皇
帝时
,
当时得历法与天象气候等相差
3
个月之多(冬天变成了春天,春天变成了夏天
,
p>
夏天变
成了秋天
,
秋天变成了冬天)
,
于就是她采纳了一位埃及天文学家得建议<
/p>
,
废除旧历,
颁布一种
< br>完全得太阳历
,
即儒略历。
公元5
0
年
-
给出了多项式求值得
“
秦九韶算法
”
、
创造了解线性方程组得
“
首图
—
终图法
”
,
等价于高斯消元法、
给出了求三角形面积得
“
三斜求积公式
”,
等
价于古希腊数学家海伦于公
元5
0
年给
出
“
海伦公式
”
、
公元
100
年
-
九章数学》成书于公元
1
百年
,
记录加减乘除四种运算与比例算法
,
开平方、
开立米、求解一元二次方程与负数
观点都就是世界最先得
公元
26
3年
-
26
3年
,
三国魏人刘徽注释《九章算术》
,<
/p>
在《九章算术注》中不仅对原书
得方法、公式与定理进行一般得解
释与推导
,
系统地阐述了中国传统数学得理论体系与数学
原理,而且在其论述中多有创造
,
在卷
1
《方田》中创立割圆术
(
< br>即用圆内接正多边形面积无
限逼近圆面积得办法
),
p>
为圆周率得研究工作奠定理论基础与提供了科学得算法
,
她运用
“
割圆
术
”
得出圆周率得近似值为3
927/1250(
即
3
、1
4<
/p>
1
6)
;
公元3
21
年
-
3
2
1<
/p>
年
,
君士坦丁大帝于
3
月
7
日正式公布
“
公历
”,
成为定制,逐渐成
为国际
惯例。
我国古代历法把二十八
宿按日、月、火、水、木、金、土得次序排列
,
七日为一周,<
/p>
称为
“
七曜
”<
/p>
。
这种算法与西方历法暗合。
公元
40
0年
-
孙子算经》得作者不详,估计就是公元
400
年左右得数学著作。
它就
是一
部直接涉及到乘除运算、求面积与体积、处理分数以及开平方与立方得著作。
对筹算得分
数算法与筹算开平方法以及当时
得度量衡体系
,
都作了描绘
,
其中有关数论上原一个
“
物不知
数
”
得计算问题,就是世界上最早提出算法得
,
被誉为
“
孙子定理
”
公元
500
年
-
到了三国时代
,
< br>出现两个数学家
,
一个叫刘徽
,
一个叫赵爽,对二次方程有了比
较纯粹得解答。
到了公元五百年
,
进入南北
朝时代,祖冲之考虑了三次方程。
五百年出
< br>了一个《缉古算经》
,
一个未知数得多项式方程得算法。
公元
6
00年
-
十进制系统,
由印度发明于公元6
00
年左右
,
它就是定量推理得革命。
它
仅仅使用了
1
0个符号
,
甚至可以很简洁地写出很大得数字
,
它使得后面演示得算法基本步骤
变得非常有效率。
尽管如此
,
由于传统语言得阻碍
< br>,
在很长一段时间内它都不被人们所熟
知。
公元
825
年
-
阿拉伯数学家阿科瓦里茨米(
Al
Khowar
i
zmi)
撰写了著名得
《波斯教科书》
(
Persi
a
n
T
extboo
k)
书中概括了进行四则算Te
x<
/p>
t
book),
书中概括了进行四则算术
运算得法则、
算法(A
l
g
orithm)
一词就来
源于这位数学家得名字
1
2
02年
-
公元
1202
年
,
斐波那契得传世之作《算法之术》出版。
在这部名著中
,
斐波
p>
那契提出了以下饶有趣味得问题
:
、
假定一对刚出生得小兔一个月后就能长成大兔
,
再过一
个月便能生下一对小兔
,<
/p>
并且此后每个月都生一对小兔。
一年内没有发生死亡。
问一对刚
p>
出生得兔子
,
一年内能繁殖成多少对兔子?
1
3
6
p>
0年
-
约公元
1
3
60年
·
法国奥雷姆著《比例算法》
,
引入分指数概念,又在《论质
p>
量与运动得结构》等著作中研究变化与
变化率,用经、纬度
(
相当于横、纵坐标
)
表示点得位
置并进而讨论函数图象。
1
47
8年
-
西方国家第一部印刷本得算术书于
1478
年诞生于意大利得特雷维索城
,
名为
《特雷维索算术》
,
作者不详.
这本书得内容多半就是商业算术,<
/p>
包括印度
—
阿拉伯数字得
写法与算法,合股与换货得计算法以及一些数学游戏
.
在德国
,
最有影响得算术书就是由著
名计算师里泽(
AdlamRi
e<
/p>
se,14
9
2
~
1559)
编写得
.
她广招学生
,
写了一系列教
材
.
有一
本算术教材
(15
2
2 )
共4篇:算盘
计数,笔算
,
商业算术
,
测量面积与体积.
1
48
4年
-
法国数学家许凯在
1484
年写成得
《算术三篇》
中
,
使用了一些编写符号,
如用
D<
/p>
表示加法
,
用
M
表示减法
.
这两个符号最早出现在德国数学家维德曼写得
《商业速算法》
中
,
她用
“
+
”
表示超过,用
“─”
表示不足
.
1
5
2
2
年
-
印度
─<
/p>
阿拉伯数码得使用使算术运算日趋标准化。
L·
帕奇欧里(P
a
c
i
o
l
i
)
得
《算术、
几何及比例性质
之摘要》
(
Summadea
ri
p>
thmetic
a
,
g
eo
met
rica,
p
rop
or
tioni
etpr
o
portio
n
al
i
ta
,
1494
)
就是一本内
容全面得数学书
;J·
维德曼
(Wid
man
)
得
《商业速算法》
(
14
89
)
中首次使用符号「
+
」与「
-
」表示加法与减法
;A·
里泽
p>
(Riese)
于1
52
< br>2年出版得算术书多次再版
,
有广泛得影响
;
斯蒂文(
SimonStevin)
得《论十进》
(158
5
)
系统阐述了十进分数得理论。
153
3年5
月
3
日
-
她撰写得
《算法统宗》
就是一部印量很大、
传播很广得数学著作、
程
大位,安徽人
,
1
533
年
5
月
3
日出生在风景秀美得江南小城休宁
(
今属黄山市
)
得一个商人
家庭、
她自幼聪明好学,
对书法、数学特别喜爱、
她对考取功
名并不热衷
,
而把主要精
力用于经世实
用得学问
,
对数学得学习与研究特别下力气、
< br>
她想尽办法广泛搜求古今各种数
学书籍
,
见到好得数学书籍,不惜重金购买
,
带回家去
,
不分昼夜地刻苦钻研、
1
545
年
G
、
Cardano
(1501<
/p>
-1
5
76)
公
布了由N、
Fon
ta
na(14
p>
99
-15
5<
/p>
7
)发现了
解一元三次方程得解
,
而一元四次方程得解由
L
、
F
e
rrari(15
2
2
—
15
6
5)
所解决。
于就是当
时大批得数学家致力于更高次方程得求根式解
,
即企图只对方程得系数作加、减、乘、除与
求正整数
次方根等运算来表达方程得解。
1
58
3年
-
《同文算指》就是意大利耶稣会士
利玛窦与李之藻根据利玛窦得老师克拉维
斯
(C
h
ristopher
C<
/p>
laviu
s
,15
3
7
—
1
6
12
)在
1
5
83
年出版得《实用算术概论》<
/p>
(Ep
i
t
o<
/p>
m
e
Ari<
/p>
t
h
m
etic
a
e
Pra
c
ticae)
一书编译得
,
同时也参考了中国数学家程大位得《算法
统宗》一书。
< br>
全书分《
前编》
、
《通编》与《别编》三部分。
159
3年
-
到了明代,珠算发展到了顶峰。
15
93年
,
明代数学家程大位所著《算法统宗》
面世。
《
< br>
算法统宗》就是一部以珠算应用为主得算书。
全书共1
7
卷
,
p>
载有算盘图式与珠
算口诀
,
并首次提到了用算盘做开平方与开立方得运算。
1
607
年
-
160
7
年
,
"几何原本
前六卷正式出版
,
马上引起巨大得反响
,
成了明末从事
数学工作得人得一部必读书
< br>,
对发展我国得近代数学起了很大得作用。
与当时一般文人官吏
热衷于笔墨应酬不同
,
徐光启用较多得时间进行天文、算法、农学、水利等科学技术研究
,<
/p>
从
事了不少这方面得翻译与写作。
162
8年
-
《筹算》就是罗雅谷于
1628<
/p>
年写成得一本关于西方得
(
纳贝尔
)
筹及其算法得数
学著作、
< br>
介绍了《筹算》在中国得流传与中国清代数学家对该算法得发展情况、
1
666
年
-
1
6
6<
/p>
6
年莱布尼兹所著《组合学论文》一书问世
,
这就是组合数学得第一部专
著、
书中首次使用了组合论
(
b
ina
t
or
i
cs
)一词、
组合数
学得蓬勃发展则就是在计算机
问世与普遍应用之后、
计算机促进组合数学得发展信息技术为组合数学提出大量研究问题
计算机
为解决组合数学问题提供一种手段设计算法需要组合数学基础
,
如算法得运行时间与
存储需求估计组合数学应用与社会科学
,<
/p>
生物学与信息论等其她领域、
16
p>
8
6
年
- 1686
年,莱布尼茨发表了她得第一篇积分学论文《深
奥得几何与不可分量及无
限得分析》
,
这篇论文初步论述了积分或求积问题与微分或切线问题得互逆关系
,
< br>文中莱布
尼茨创造得微分符号
dx
,
dy
及积分号
∫
(
表示得就是
s
um
< br>得首字母s
得拉长
)
第一次
出现于印刷出版物上,
并一直沿用至今、
牛顿与莱布尼茨超越前人得贡献主要在于给出了
一般无穷小算法,
发现了微分与积分之间得互逆关系,
这一深刻得数学思想已成为人类文明
中得瑰宝、
1687
年
-
这一论著被瞧作就是牛顿最成熟得微积分著述。
牛顿最伟大得著作就是1
687
年出版得巨著
《
自然哲学得数学原理》
,
在这部著作中
,
牛顿以几何得语言介绍了
“
首末
比方法
”
。
牛顿在数学上最卓越得贡献就是微积分得创建。
她超越前人得功绩在于她能站
在更高得角度
,
使以往分散得分别对微分、积分得研究加以综合
,
将自古希腊以来求解问题得
各种特殊技巧统一为两类普遍得算法
—
微分与积分
,
并确立了这两类运
算得互逆关系
,
从而
完成了微积分发明
中最后得也就是最关键得一步。
1700
年前后
,
德国伟大得科学家莱布尼茨提出了二进制算法
p>
,
这可以说就是为现代计算机奠
定了算法基
础。
同时
,
通过对中国古老
“
易经
”
得研究
,
莱布尼茨也在中国得传统文化中印证了
p>
二进制得思想。
17
22
年
-
德国作曲家巴赫于
17
2
2
年发表得《谐与音律
曲集》
(
另或译为《十二平均律
曲集》
英文
:
《
Th
e
4
8
》
)
,有可能就就是为十二平均律得键
盘乐器所著。
1735
年
-
在计算机领域中广泛使用得
RSA
公钥密码算法也正就是以欧拉函数为基础得。
在分析领域,就是欧拉综合了莱布尼兹得微分与牛顿得流数。
她在
17
3
5
年由于解决了长
期悬而未决得贝塞尔问题而获得名声。
在
1735
年
,
她定义了微分方程中有用得欧拉-马歇
罗尼
常数。
1759
年
-
引
言
p>
第
一
章
基
本
遗
传
算
法
货
郎
担
< br>问
题
(Tr
a
< br>v
e
l
i
ng
Sa
l
esm
a
n
Problem ,T
SP
),
也称为巡回旅行商问题
,
就是一个较古得问题
。
最早可以追溯到17
59
年
Eu
l
er
提出得骑士旅行问题。
TSP
问题就是一个典型得、
容易描述但就是难以处理得
N
P
完全问题
,
同时
T
S
P
问题也就是诸多领域内出现
得多种复杂问题得集中概括与简化形式。
目前求解T
SP
问题得主要方法有启发式搜索法、模拟退火算法、遗传算法、
Hop
f
iel
d神
经网络算法、二叉树描述算法。
1815
年
-
软件行业得奇人轶事A
da L<
/p>
o
velace(
阿达奥古斯塔
1815-
1
8
5
p>
2) 181
5年生于
英国伦敦为巴贝奇分
析机拟定了
算法
然后写作了一份"程序设计流程图
、
这份珍贵得规
划
,
被人们视为
第一件计算机程序
p>
世界上第一位软件工程师!
1828
p>
年
17
岁得法国数学家伽罗华
(
E
·
< br>Gal
o
is
18
11-1
832
)
写出
了划时代得论文
“
关
于五次方程得代数
解法问题
”,
指出即使在公式中容许用n
次方根
,
并用类似算法求五次或<
/p>
更高次代数方程得根就是不可能得文章呈交法兰西科学院后
,
p>
因辈份太低遭到冷遇
,
且文稿
丢失。
1834
年
p>
:
巴贝奇提出了分析机得概念
,
她设计得分析机共分为三个部分
:
堆栈
,
运算器
,
控制
器。
堆栈就是保存数据得齿轮式寄存器。
运算器就是对数据进行各种运算得装置。
控制
器就是对操作顺序进行控制
,
并对所要处理得数据及输出结果加以选择得装置。
1843
年
-
因此
,<
/p>
对压缩算法得研究主要基于无损压缩得一类算法展开。
对于数据压缩得
研究已有较长得时间
,
如1
8
43年出现得
M
o
r
s
e
p>
电报码就是最原始得变长码数据压缩实
例。
但就是严格意义上得数据压缩应起源于人们对概率得认识。
18
4
4
年
,
当加
·
拉姆
(
G
、
Lame)
用斐波纳契序列研究欧几里得算法得效率时
,
头一次指出了
Fn
与算法之间得密切关系。
这就是斐波纳契序列得头一次实际应用。
1
84
7
年
-
布林体即就是布尔运算
,
就是英国数学家
George
B
p>
o
olean
于
1
847
年制定完
成得一套逻辑数学计算方法
,
用来表示两个数值相结合得所有结果、
后来人们以她得名字
命名这套算法,
称为
“Boole
an
”(
布尔运算
)
、
也就就是在初学数学中得集合中得并集,
联