どのアルゴリズム実行時間のモデルが存在しますか?アルゴリズムの実行時間をモデル化するには?
私たちはすべて、mergesortがbublesortより高速であることを期待しています。また、mergesortはbubblesortのO(n log n)とO(n )の比較を行います。他のアルゴリズムについては
、あなたは実行時間をモデル化するために、他のどのような方法などポインタ参照、配列の検索、固定サイズの整数に対する算術演算、などの他の操作(比較とスワップ以外)、
がある数えます?
自分自身が知っているのは、ディスクから読み取られ、ディスクに書き込まれたブロックの数を数えることです。私の答えはWhen does Big-O notation fail?です。長い記述があります。
もう1つは、キャッシュミスの数をカウントしています。これは、メモリ階層のすべてのレベルを見ることによってI/Oモデルを拡張します。
分散アルゴリズム(セキュアなマルチパーティ計算など)の場合は、ネットワークを介して送信されるデータの量を計測することが一般的です(通信ラウンドまたはメッセージ数で一般的に測定されます)。
アルゴリズムのパフォーマンスを予測するために、他に興味深いものがいくつありますか(数えられません)?
また、これらのモデルはどれくらい良いですか?私が聞いた限りでは、キャッシュにないアルゴリズムはディスク上のデータのI/O効率的なアルゴリズムと競合しますが、メモリ内のアルゴリズムでは競合しません。
特に:これらのモデルで特定のインスタンスが相対的なパフォーマンスを誤予測していますか?私自身の実験によると、フィボナッチヒープは、データがメモリに収まるのに十分小さい場合、Dijstraの最短パス(バイナリヒープと比較して)を高速化しません。
「他に興味深いものがありますか?」とは実際の質問ではありませんか?多分タイトルを調整しますか? –
興味深いスレッドだが、ポイントには向かない。 – ralphtheninja
O(n2)の四角形を正しくフォーマットするために+1してください。P –