速度|算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论( 三 )


如 1(c) 所示 , 在被发现时 , 31% 的算法族属于指数复杂度类别(表示为 n!|c^n ) 。 这意味着随着输入大小的增长 , 算法至少会进行指数级的运算 。 1(d) 则表明 , 随着算法设计者发现更高效的实现方式 , 算法的复杂度类别会出现重大的转变 。

速度|算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论
文章图片

衡量算法改进
随着时间推移 , 算法族的性能会随着「用更少操作解决相同问题的新算法的出现」而提升 。 为了衡量进展 , 研究者着重于提升渐进复杂度的发现 , 例如从 O(n^2) 到 O(n log n) 或者从 O(n^2.9) 到 O(n^2.8) 。
下图 2 (a) 展示了四个不同算法族(不同颜色表示)随时间推移出现的进展 。 对于每个算法族 , 首个算法的性能都被归一化为 1 。 每当发现一种算法具有更高的渐进复杂度时 , 则由垂直步进(vertical step up)表示 。 比如 , 对于 n = 100 万的问题规模而言 , 最大子串等算法的改进速度明显快于硬件或摩尔定律 , 而自平衡树创建等其他算法不呈现这种特点 。
算法和硬件改进之间的重要对比在于改进的可预测性 。 虽然摩尔定律使得硬件随时间推移顺利地改进 , 图 2 展示了那些经历了大的但不频繁的改进的算法 。
此外 , 一种算法的渐进性能关乎于问题输入大小的函数 。 随着输入的增加 , 从一个复杂度类别转变到另一个复杂度类别的改进的规模也在增加 。 图 2(b) 展示了「最近邻搜索」族的这种效果 , 表明当输入大小从 10^2 增加至 10^8 时 , 改进大小也从 15 倍增至约 400 万倍 。

速度|算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论
文章图片

上图 2 展示了算法改进对四个算法族的影响 , 下图 3 将这种分析扩展至了 110 个算法族 。 具体地 , 研究者展示了问题规模分别为 1 千、100 百万和 10 亿时平均年度改进率 , 并将它们与 SPECInt 基准衡量的硬件平均改进率进行比较 。
如下图所示 , 研究者展示了两种大的算法族集群 , 以及一些中间值 。
第一个集群代表不到一半的算法族 , 即使对于大的问题规模而言 , 它们几乎没有出现改进 。 这个集群可能包含那些获得很少关注的算法族、在数学上已经达到最优实现并因而无法进一步改进的算法族、那些仍然无法解决某种大小的问题的算法族或者其他 。
第二个集群包含 14% 的算法族 , 它们的年改进率超过 1000% 。 这些算法受益于指数级加速 , 例如当初始算法具有指数级时间复杂度时 , 后续的改进使得问题可以在多项式时间内解决 。

速度|算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论
文章图片

推荐阅读