2012-04-04 48 views
4

有谁知道任何程序/脚本自动计算代码的计算复杂性(例如方法功能)?计算代码计算复杂度的软件/脚本?

如果没有,是否有支持它的好方法(例如设计模式,算法等)?

我不想这样做一般。

在大多数情况下,我知道输入,运行它的算法以及什么构成暂停。我试图用这种方式来比较2个或更多的算法。

E.g.

algo #1 - 2x^2 + 10x + 5 

algo #2 - 5x^2 + 1x + 3 

两种算法都是O(N^2)。但算法2在短期内效果更好,而算法1长远来看效果更好。

+0

你的意思是'是否有一个程序读取函数的源代码并为该函数的计算复杂度写出一个等式'?这似乎是你第一句话的主旨,但你的问题的其余部分让我感到困惑。啊哈,我不是唯一迷惑的人。 – 2012-04-04 09:46:42

+0

另外,你在寻找理论上的计算复杂性还是经验计算的复杂性? – 2012-04-04 10:04:56

+7

http://en.wikipedia.org/wiki/Halting_problem – 2012-04-04 10:21:29

回答

1

虽然不可能开发一种能够解决您的问题的算法,但您可以编写一个算法来计算一些软件的复杂度,用于几个示例输入。

我能找到的唯一软件叫做Trend-Profiler。但是,如果您对算法比结果更感兴趣,则有一篇描述软件及其算法的论文here

0

对不同数量的输入采样算法不是更好吗? 通过计算每个输入的时间,可以近似复杂度函数,从而确定哪个算法更好,哪个阶段更好。