私は疑問に思っています、少なくともアルゴリズムの関連するサブセット(分析可能なアルゴリズム)で機能する自動ランタイム分析の方法はありますか?
私は私に与えた「自動アルゴリズム分析」ググこれを、それはあまりにもMathyさんです。私が理解できるpsuedocodeの簡単な例が欲しいだけです。具体的すぎるかもしれませんが、一見の価値があると思いました。
私は疑問に思っています、少なくともアルゴリズムの関連するサブセット(分析可能なアルゴリズム)で機能する自動ランタイム分析の方法はありますか?
私は私に与えた「自動アルゴリズム分析」ググこれを、それはあまりにもMathyさんです。私が理解できるpsuedocodeの簡単な例が欲しいだけです。具体的すぎるかもしれませんが、一見の価値があると思いました。
回答:
COSTAツールはこれを実行しますが、計算可能性の問題が原因で、ご想像のとおり多くの場合失敗します。これについては多くの論文があります。 E. Albert、P。Arenas、S。Genaim、G。Puebla、D。ZanardiniによるJavaバイトコードのコスト分析は、良い出発点です。
取られたアプローチは、Javabyteコードから実行時の反復を推測し、これを閉じた形式に変換することです。このツールは、スペース使用量の境界も計算します。
特定のアルゴリズムが停止するかどうかを決定できるアルゴリズムはないため、特に、特定のアルゴリズムの複雑さを厳密に分析できるアルゴリズムはありません。
(半)自動化された平均ケース分析への1つのアプローチ、つまりMaLiJAn knowを知っています。これは、KnuthがTAoCPで使用する分析の種類によく似ています。核となる考えは
追加のコスト測定(例:比較、「時間」)のみが機能し、期待値のみが正確であることに注意してください(完全確率関数を想定)、より高いモーメントは導出できません。
外挿を除くすべてのステップは厳密であり[2]、この方法はよく知られている結果を高精度で再現することが実証されています-もちろん、適切なランダムサンプル入力が与えられます。結果に対する証明または近似の保証はありませんが(これまでのところ、外挿ステップは純粋にヒューリスティックです)、ツールで得られた結果は、分析が難しいアルゴリズムで実験し、仮説を立てるのに役立ちます[3、4]。
もちろん、Yuval Filmusが指摘したように、そのような問題に対する一般的な解決策を期待するべきではありません。しかし、通常そうであるように、一般的なケースの興味深いサブセットに対する解決策が見つかります。
私はこの種の仕事についてたまたま知っているので、決してこの分野の専門家ではなく、かなりの知識があります。これは自動平均複雑度分析に関係し、作業はPhilippe Flajoletと彼の同僚によって行われました。
私がウェブで見つけた1つの論文は1990年の論文です:Philippe Flajolet、Paul Zimmermann、およびBruno Salvyによるアルゴリズムの自動平均ケース分析。
後の論文でこの作業が拡張されたと思いますが、実際にはわかりません。作品はかなりひどく引用されており、それをウェブで検索すると、同じトピックに関するより最近の作品が得られるはずです。
今、私はフラジョレットと彼の同僚の仕事が非常に数学的なものであったことを恐れています。