アルゴリズムの予想実行時間と平均実行時間はどういう意味ですか?


17

アルゴリズムの実行時間を分析したいとしましょう。入力サイズがnで、最悪の場合はO(n)で示される場合に、アルゴリズムの実行時間を見つけたいと言うことがあります。時々、アルゴリズムの予想時間を見つける必要があると言っている本/論文を見ます。また、平均実行時間が使用されることもあります。

「予想時間」とは何ですか?最悪の場合の時間ではなく、予想される時間を見つけることはどの場合に役立ちますか?

編集予想実行時間平均実行時間の間には微妙な違いがあると思いますが、よくわかりません。この投稿を通して、もしあれば正確な違いを知りたい。


1
おそらく彼らは、平均的なケースを意味...
マルタインピータース

4
確率分布関数の期待値は、負から正の無限大までのx * f(x)の積分として記述されます。予想される時間は、すべての可能な時間の確率分布を決定し、予想される値を取得することによって導き出されます。この操作は、一般的に平均の計算または平均の計算として知られています
ジョエルコーネット

1
@JoelCornett:あなたはそれを掲示あれば罰金の答えになるだろう。..
マルタインピータース

@MartijnPieters:いいえ、平均的なケースは入力の確率分布について仮定を立てますが、期待されるケースはそうではありません。
ヨルグWミットタグ

@JörgWMittag:そうです、入力の実世界の確率分布がわかっている場合は、平均的なケースを無視できます。言い換えると、予想されるケースは、アルゴリズムが予想される入力セットの確率分布を与える時間です。
マーティンピーターズ

回答:


15

予想時間は平均です、期待用いたアルゴリズムの実行時間、意図した入力を。

あなたがのために最も適したアルゴリズムを使用することをお勧めします、あなたには、いくつかの少数万件のユーザレコードを持って、それらをソートしたいきたと言うあなたの入力を、そのように最善を与え予想より良いを持っているアルゴリズムとは対照的に、時間を実行しています最悪の場合の実行時間ですが、最悪の予想実行時間です。

時には、例えばアルゴリズムの時間複雑さのため、一定の要因が非常に高く、それはあなたがより良い与えるので、それは、より悪い時間複雑なく、小さな一定の因子を使用するアルゴリズムに理にかなっているということです期待しても、それはでしょうが、小さな入力との時間を実行していますより大きな入力でひどくアウトパフォームされます。

おそらく、より良い例は、入力関係なく、 O(n²)の最悪の実行時間であるがO(n log n)の予想平均実行時間を持つ古典的なクイックソートアルゴリズムでしょう。これは、アルゴリズムがランダム化を使用する(または、実装に応じてを使用する可能性がある)ためです。いわゆるランダム化アルゴリズムです。同じ入力であっても、呼び出しごとに実行方法が少し異なります。そのため、最悪のケースの入力は、アルゴリズムが特定の入力を分割するためのピボットを選択する方法に依存するため、実装用の一般的な最悪のケースの入力はありません。そのため、最悪の場合の実行時間の原因となる事前定義された入力を提供することはできません。これは多くの場合、ランダム化アルゴリズムの場合に当てはまります。ランダム化アルゴリズムは、入力に関係なく、より良い予想平均実行時間を目指しています。

手元の入力に適切なアルゴリズムを使用することがすべてです。


素晴らしい答え。ありがとう。予想と平均の違いは、入力の分布を知ってアルゴリズムを実行するときは「平均」と呼ばれ、乱数発生器を使用して手元の入力を並べ替えるときは予想実行時間と呼ばれることです。この前提に同意しますか?
オタク

4

ランダム化アルゴリズムの予想実行時間は、最悪の場合の実行時間と同様に、明確に定義された概念です。アルゴリズムがランダム化されている場合、実行時間もランダムです。つまり、実行時間の期待値を定義できます。

よく知られている例はクイックソートです。ピボットをランダムに選択すると、最悪の場合の実行時間はO(n ^ 2)のままですが、予想される実行時間がO(n log n)になることを証明できます。ランダム化が非常に強力な例は、最小の包囲円問題です。最悪の場合の実行時間はO(n ^ 3)ですが、予想では、その実行時間はO(n)のみです。

通常、平均実行時間は、「ほとんどの入力の」アルゴリズムの動作について話すときに使用されます。入力をランダムに生成する方法を定義します。たとえば、配列に乱数を入力するか、1〜nの数字をランダムに並べ替える(重複しないようにする)か、コインを反転させて、数字。その入力のランダムな分布に対するアルゴリズムの平均実行時間は、アルゴリズムの予想実行時間です(この場合、アルゴリズムはランダム化されないかもしれませんが、入力はされます)。

例として、アルゴリズムが存在する幾何学的な問題がありますが、それは入力ラインなどの非常に奇妙な分散方法を発見するまで、一見うまく機能すると思われます。線がランダムに分布していると仮定すると、これらの奇妙なシナリオが発生する可能性は非常に低いため、アルゴリズムが適切である可能性があります。

対照的に、予想される実行時間は、「不運がない限り」アルゴリズムがどのように実行されるかです-同じ入力で同じアルゴリズムをランダムに選択して再試行すると、はるかに高速に解決される可能性があります。平均実行時間は、「ほとんどの入力に対して」アルゴリズムがどれだけうまく機能するかについて話します-同じ入力で同じアルゴリズムを再試行しても役に立ちません(おそらくアルゴリズムもランダム化されている場合を除く)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.