2012-04-04 13 views
4

コードの計算上の複雑さ(例えばメソッド関数)を自動的に計算するプログラム/スクリプトを知っている人はいますか?コードの計算量を計算するソフトウェア/スクリプト?

そうでない場合は、それをサポートする良い方法(たとえば、デザインパターン、アルゴリズムなど)がありますか?

私はこれを一般的に行うつもりはありません。

ほとんどの場合、私は入力、それを実行するアルゴリズム、および停止を構成するものを知っています。私はこの方法で2つ以上のアルゴリズムを比較しようとしています。

など。

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

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

どちらのアルゴリズムもO(N^2)です。しかし、アルゴ#2は短期的には良いが、アルゴ#1は長期的には良い。

+0

「関数のソースコードを読み込んで、その関数の計算複雑度の式を書き込むプログラムはありますか」ということですか?それはあなたの最初の文の推力と思われるが、残りの質問は私を混乱させる。ああ、私は混乱した唯一の人ではありません。 –

+0

また、理論的計算の複雑さや経験的計算の複雑さを探していますか? –

+7

http://en.wikipedia.org/wiki/Halting_problem –

答えて

1

問題を一般的に解決するアルゴリズムを開発することは不可能ですが、いくつかの入力例のソフトウェアの複雑さを計算するアルゴリズムを書くことができます。

参照できるソフトウェアは、Trend-Profilerです。しかし、結果よりもアルゴリズムに関心がある方は、ソフトウェアとそのアルゴリズムを記述した論文hereがあります。

0

異なる入力量でアルゴリズムをサンプリングするほうがよいでしょうか? 各入力に対して計算された時間を使って、複雑さ関数を近似することができます。したがって、どちらのアルゴリズムがより優れているか、どの段階にあるかを決めることができます。