プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

漸近的な複雑さ


漸近解析

漸近解析を使用すると、入力サイズに基づいてアルゴリズムのパフォーマンスについてのアイデアを得ることができます。正確な実行時間を計算する必要はありませんが、実行時間と入力サイズの関係を見つける必要があります。入力のサイズが大きくなるときは、実行時間を追跡する必要があります。

スペースの複雑さについては、アルゴリズムを完了するためにメインメモリ内のどのくらいのスペースが占有されているかという関係または関数を取得することが目標です。

漸近的振る舞い

関数の場合f(n) 漸近的な振る舞いは、nが大きくなるにつれてf(n)が大きくなることです。小さい入力値は考慮されません。私たちの仕事は、入力の値が大きい場合にかかる時間を見つけることです。

たとえば、線形時間計算量としてf(n)=c * n+kです。 f(n)=c * n 2 +kは2次の時間計算量です。

アルゴリズムの分析は、3つの異なるケースに分けることができます。ケースは次のとおりです-

ベストケース −ここで、実行時間の下限が計算されます。最適な条件下でのアルゴリズムの動作について説明します。

平均的なケース −この場合、アルゴリズムの実行時間の上限と下限の間の領域を計算します。この場合、実行される操作の数は最小でも最大でもありません。

最悪の場合 −この場合、アルゴリズムの実行時間の上限を計算します。この場合、最大数の操作が実行されます。

漸近的な複雑さ


  1. Pythonでのベクトル化

    この記事では、Python3.xを使用した実装に関連するベクトル化とさまざまな手法について学習します。またはそれ以前。 ベクトル化とは何ですか? ベクトル化は、ループを使用せずに配列を実装する手法です。代わりに関数を使用すると、コードの実行時間と実行時間を効率的に最小化するのに役立ちます。さまざまな演算が、ベクトルの内積などの配列ではなく、ベクトルに対して実行されています。これは、単一の出力を生成するため、スカラー積とも呼ばれます。外部積は、ベクトルの(長さXの長さ)に等しい次元の二乗行列になります。要素同じインデックスの要素と行列の次元を積む賢明な乗算は変更されません。 内積/内積

  2. Ruby開発者のための時間計算量への決定的なガイド

    時間計算量は、コンピュータサイエンスから学ぶことができる最も興味深い概念のひとつであり、それを理解するのに学位は必要ありません! 特定のアルゴリズムやプログラムが遅い理由を確認するのに役立つので興味深いです &それをより速くするためにあなたは何ができますか。 これを独自のコードに適用できます。 これはすべての派手なアルゴリズムを超えて これは、この記事の後半で説明するように、コンピュータサイエンスの本にあります。 しかし、最初に、何が遅いのか、何が速いのかについて話す必要があります。 遅いvs速い 150ミリ秒(ミリ秒)で100万個の数値を並べ替えるのは遅いですか、それとも速いですか