ALGORITHM LAB · 算法实验室

算法之美

有限的规则,无尽的形态。

背景里的每一种颜色都来自同一个简单过程:从一个格子出发,随机向尚未连接的邻居伸出一条边,直到连通整个平面——得到一棵随机生成树。颜色只表示它离起点有多远。

进入展厅 点击画面任意处,从那里重新生长

随机遍历生成树

“An algorithm must be seen to be believed.”

算法必须亲眼看见,才能令人信服。

Donald E. Knuth · 《计算机程序设计艺术》第一卷 · 1968

TIMELINE · 年表

两千三百年的步骤

从泥板与羊皮纸上的演算,到今天每秒运行数十亿次的程序,一些想法穿越了整个文明史。

  1. 约前 300

    欧几里得算法

    《几何原本》中的辗转相除法,求两数的最大公约数;它的扩展形式至今仍用于 RSA 密钥生成。

  2. 约 825

    花拉子米

    他的名字被拉丁化为 Algoritmi,最终演变成了 algorithm 这个词。

  3. 1805

    高斯的快速变换

    高斯在计算小行星轨道时已用到与 FFT 相同的思路,只是生前没有发表。

  4. 1936

    图灵机

    Alan Turing 用一台想象中的机器,给出了“可计算”的精确定义。

  5. 1945

    归并排序

    John von Neumann 提出先分后合的排序方法,分治思想由此深入人心。

  6. 1947

    单纯形法

    George Dantzig 为线性规划给出了实用解法,至今仍是运筹学的基石。

  7. 1956–57

    最小生成树

    Kruskal 与 Prim 先后给出贪心构造最小生成树的算法。

  8. 1959

    Dijkstra 与快速排序

    Dijkstra 发表单源最短路径算法;同年 Hoare 构思出快速排序,1961 年发表。

  9. 1965

    快速傅里叶变换

    Cooley 与 Tukey 让 DFT 从 O(N²) 降到 O(N log N),数字信号处理从此起飞。

  10. 1968

    A* 搜索

    Hart、Nilsson 与 Raphael 为机器人 Shakey 的路径规划提出 A*。

  11. 1970

    生命游戏

    John Conway 的元胞自动机登上《科学美国人》,同年 Gosper 找到滑翔机枪。

  12. 1977

    RSA

    Rivest、Shamir 与 Adleman 发表公钥密码体制,安全性建立在大数分解之难上。

  13. 1980

    Mandelbrot 集

    Benoit Mandelbrot 在 IBM 用计算机绘出这一分形的高分辨率图像。

  14. 1986

    Boids

    Craig Reynolds 用三条局部规则模拟鸟群,开启了群体智能的计算机图形学。

  15. 1996

    Wilson 算法

    用擦除回路的随机游走,比覆盖时间更快地生成均匀随机生成树。

  16. 1998

    PageRank

    Brin 与 Page 把整个网络看成一条马尔可夫链,用它的平稳分布衡量网页的重要性。

  17. 2007

    快速泊松圆盘采样

    Robert Bridson 给出任意维度下线性时间的蓝噪声采样算法。

CREDITS · 参考与致敬

站在这些作品的肩膀上

本站所有展品均由原生 JavaScript 与 Canvas 实现,不使用框架,不加载任何第三方资源,也没有任何追踪。下面这些文章和项目给了它最多的灵感。