2016-10-27 9 views
-1

すべての再帰アルゴリズムが潜在的なオーバーフローのために最悪の場合(スペース)がO(inf)である必要はありませんか?再帰アルゴリズムのワーストケースの複雑度

は、入力が大きく、スタックオーバーフローが発生した場合、答えはO(N)が、何であるフィボナッチアルゴリズムにWhat is the space complexity of a recursive fibonacci algorithm?

してください。そして、最悪の場合はO(INF)

+0

最悪の場合の空間の複雑さは、理論ではなく、intの限界を扱います。 –

+0

入力が大きい場合、nは大きく、したがってO(n)は大きくなります。与えられた実装では、O(n)が大きすぎてサポートすることはできませんが、それはアルゴリズムの仕組みとは別の問題です。 –

+1

Big Oは理論的です。理論的なコンピュータサイエンスでは、利用可能なリソースは無制限であると仮定しています。 – 4castle

答えて

0

短い答えである:

が少し長い答え:を誰もがコメントで述べたように、ビッグO記法は無限の資源を前提とし、その実装の問題(特にハードウェア関連のもの)には何の支障もない。これは、アルゴリズムの説明と、任意に大きな入力を与えた場合の仮想的なスケーリングの方法です。

つまり、ハードウェアの制約を定義に含めると、Big-Oはプロセッサのサイクルや反復やタスクに関係しているので、その答えは何もしないということです。あなたがスタックを使い果たすような再帰的なアルゴリズムが深すぎる場合は、アルゴリズム関連の操作の実行をすべて停止します。それはちょうど停止し、あなたはもう何もしていません。測定すべきものは何もなく、確かに無限ではありません。

とにかく、ビッグオーのポイントは、アルゴリズムの理論の理解に役立ち、助けになることです。たとえそれが正しかったとしても、「すべてが無限大のビッグオー」と言って、それを達成することはできません。それは定義の抜け穴にすぎません。

関連する問題