有哪些合法实用程序的算法过于复杂而难以实现?
让我清楚一点:我不是在寻找像当前的渐近最优矩阵乘法算法(Coppersmith-Winograd)这样的算法,该算法可以合理实施,但具有一个常数,使其在实践中毫无用处。我正在寻找一种可能具有实用价值,但很难编码的算法,以至于它们从未实现,仅在极其人为的环境中实现,或者仅针对非常特殊的应用而实现。
还欢迎具有良好渐近性但实际性能可能不佳的几乎不可能实现的算法。
有哪些合法实用程序的算法过于复杂而难以实现?
让我清楚一点:我不是在寻找像当前的渐近最优矩阵乘法算法(Coppersmith-Winograd)这样的算法,该算法可以合理实施,但具有一个常数,使其在实践中毫无用处。我正在寻找一种可能具有实用价值,但很难编码的算法,以至于它们从未实现,仅在极其人为的环境中实现,或者仅针对非常特殊的应用而实现。
还欢迎具有良好渐近性但实际性能可能不佳的几乎不可能实现的算法。
Answers:
用于计算基本反导数的Risch算法。根据Wikipedia的介绍,由于其复杂性,没有软件包可以实现完整算法。
任何使用罗伯逊-西摩结果的算法为涉及图的事物(不包括固定未成年人)推断出“多时”算法都在麻烦。隐藏在结果中的常数是“银河”。
丹·威拉德(Dan Willard)的“一种密度控制算法,用于在最坏的情况下在顺序排序的文件中执行插入和删除操作”,描述了一种算法,用于在大小为的数组中维护有序集合,并在最坏的情况,其中是页面大小。O (log 2 n乙
该论文长达55页,其结论指出了由于空间原因作者未描述的常数的一些改进。这使我怀疑常数可能不是那么银河,并且该数据结构将具有“合法效用”,尤其是因为它已被多次引用。
Qian的线性时间高阶模式统一算法由于其复杂性AFAIK尚未实现。
我不确定它在实践中有多大用处(尽管我正在考虑蛋白质折叠和比较以及RNA二级结构预测),但是Wolfgang Haken给出了第一个多项式时间算法来确定一个结是否是一个简单循环(Theorie derNormalflächen。Acta Math.105,1961,pp.245--375)。我记得,几十年来仍无法实施。
如果可以相信Wikipedia,那么以后还会提供其他几种算法,并且“了解这些算法的复杂性是一个活跃的研究领域”。
树分解,也许斐波那契堆。
完美的哈希构造(https://en.wikipedia.org/wiki/Perfect_hash_function#Construction)将适用于具有静态或不经常更改密钥的任何用例(例如,路由器上的顶级域名,编译器中的关键字或函数名)在标准库中),但最后一次我找不到任何实现。
参数搜索可以解决许多困难的优化问题,包括在多项式时间内可能看起来像是NP难的问题。广为人知的论文《参数化搜索》使实用化实现了参数化搜索的一种变体,但我仍然认为它尚未在实用软件中实现。
Chazelle和Edelsbrunner提出的线段相交的最佳算法是在时间内找到线段的所有交点,但是很复杂。CGAL是一个复杂的几何算法库,但实现了一个简单的算法是。n O (n log n + k )O ((n + k )log n )