利物浦大学计算机科学家解决了一个长期存在的算法难题,以加速Python的核心构建块,Python是最流行的编程语言,也是现代人工智能系统的基础。
这一发现导致了一种更好的Python列表排序解决方案,称为Powersort,已在Python3.11(10月发布的最新版本)中实现。
Powersort通过“list.sort”和“sorted”函数按升序排列对象列表,利物浦大学计算机科学系讲师SebastianWild博士负责其发明。
Wild博士一直在研究TimSort,这是一种由有影响力的Python开发人员TimPeters发明的自定义排序算法,特别是它的合并策略,它确定检测到的运行被连续“合并”以形成更长运行的顺序,直到最终列表已完全排序。
Wild博士对其合并策略知之甚少感到惊讶,因为它甚至潜伏着一个算法错误和潜在的安全问题。事实证明,这个关键部件后来被发现存在缺陷。
Wild博士和他当时的博士后导师,加拿大滑铁卢大学的IanMunro教授的一次讨论发现,一个来自70年代的理论算法为寻找好的合并顺序的问题提供了最优解。
这一发现导致了“Powersort”的诞生,它最初发表于2018年欧洲算法研讨会,并在到达Python参考实现之前受到Python社区的进一步审查。
Wild博士说,“我很高兴我的研究已经投入实际使用,并已在Python3.11中实现。我通过调查Timsort的工作偶然发现了找到好的合并顺序的解决方案。找到50岁的一周后算法,'Powersort'诞生了。”
“我很高兴TimPeters亲自将我们的想法带入了CPython参考实现。他的Timsort实现是算法工程的杰作,没有人像他一样了解这段代码。”
CarlFriedrichBolz-Tereick是Python软件基金会的成员,也是Python的另一种实现PyPy的核心开发人员,他补充说:“Powersort是一个很好的例子,说明Python的开源特性如何使我们能够非常快速地带来前沿研究将发现用于每个人的生产使用。当我了解Powersort时,我可以在几天内将其包含到PyPy中。”
“随着今年10月Python3.11的正式发布,数以亿计的用户现在将享受到排序速度变得越来越快。尽管许多输入的改进很小,但Python安装的绝对数量可以显着节省能源全球范围内。”
Timsort还用于其他重要的软件平台,包括用于大多数智能手机的Java和Android运行时库,以及用于GoogleChrome和node.js的V8JavaScript引擎,驱动许多现代Web应用程序,这些应用程序都可以从Powersort中获益.
Wild博士继续对排序进行研究,他刚刚完成了Powersort的改进工作,现在在每个步骤中同时合并四个运行。