我想知道,是否有一种至少可以在相关算法子集(可以分析的算法)上运行的自动运行时分析方法?
我用Google搜索这给了我“自动算法分析” 这个,但实在是太mathy。我只想要一个我可以理解的psuedocode中的简单示例。可能太具体了,但我认为值得一试。
我想知道,是否有一种至少可以在相关算法子集(可以分析的算法)上运行的自动运行时分析方法?
我用Google搜索这给了我“自动算法分析” 这个,但实在是太mathy。我只想要一个我可以理解的psuedocode中的简单示例。可能太具体了,但我认为值得一试。
Answers:
该COSTA工具不只是这一点,虽然它在很多情况下出现故障,你可以想像,由于可计算性问题。有许多文章关于这一点; E. Albert,P.Arenas,S.Genaim,G.Puebla,D.Zanardini编写的Java字节码成本分析是一个很好的起点。
采取的方法是从Javabyte代码推断运行时重现,然后将其转换为封闭形式。该工具还可以计算空间使用范围。
没有算法可以决定给定算法是否暂停,因此特别是没有算法可以严格分析给定算法的复杂性。
我知道一种用于(半)自动平均病例分析的方法,即MaLiJAn¹。它与Knuth在TAoCP中使用的分析非常相似。核心思想是
请注意,只有累加成本度量(例如比较,“时间”)有效并且只有期望值是准确的(假设完美的概率函数),才能得出更高的矩。
除了外推法外,所有步骤都是严格的[2],并且已经证明该方法可以高精度地重现众所周知的结果-当然,要有适当的随机样本输入。尽管结果没有证据甚至没有近似保证(到目前为止,外推步骤仅是启发式的),但使用该工具获得的结果非常适合尝试难以分析的算法和提出假设[3,4]。
当然,正如Yuval Filmus所指出的那样,人们不应该期望对这些问题有一个总体解决方案。但是通常情况下,可以找到有关一般情况有趣子集的解决方案。
我碰巧知道这类工作,所以我绝不是专家,甚至也不是这方面的知识渊博的人。它涉及自动平均复杂度分析,该工作由Philippe Flajolet及其同事完成。
我在网上发现的一篇论文是1990年的一篇论文:Philippe Flajolet,Paul Zimmermann和Bruno Salvy 进行的算法的自动平均情况分析。
我希望以后的文章会扩展这项工作,但我真的不知道。这项工作被大量引用,并且在网络上搜索应该会产生更多关于同一主题的最新工作。
现在,恐怕Flajolet和他的同事的工作是非常数学的,并且我不希望有那么容易阅读的内容。