再帰的アルゴリズムの時間計算量はどれくらいですか
再帰的アルゴリズムの時間計算量は [T(n)=o(f(n))] です。これは、問題のサイズ n が増加するにつれて、アルゴリズムの実行時間の増加率と f が増加することを意味します。 (n) 成長率はアルゴリズムの漸近時間計算量と呼ばれる成長率に比例します。
#再帰的アルゴリズムの時間計算量
時間計算量:
一般に、アルゴリズムにおける基本演算の繰り返し回数は問題サイズ n の関数 f(n) であり、n による f(n) の変化を分析して T(n) の大きさのオーダーを決定します。 。ここで「o」は大きさの桁を表すために使用され、アルゴリズムの時間計算量を与えます。 T(n)=o(f(n)); これは、問題サイズ n が増加するにつれて、アルゴリズムの実行時間の増加率が、 f(n) 、アルゴリズムの漸近時間計算量と呼ばれます。そして、私たちは通常、最悪の場合の時間計算量について議論します。 推奨コース:空間複雑度:
アルゴリズムの空間複雑度は、実際に占有される空間ではありません。ただし、アルゴリズム空間全体における補助空間ユニットの数を計算するためのものであり、問題の規模とは何の関係もありません。アルゴリズムの空間複雑さ S(n) は、アルゴリズムによって消費される空間の大きさのオーダーとして定義されます。 S(n)=o(f(n)) アルゴリズムの実行に必要な補助空間が入力データ n に対して定数である場合、それは空間計算量と呼ばれます。アルゴリズム 補助空間は o (1); 再帰アルゴリズムの空間複雑さ: 再帰の深さ n*各再帰に必要な補助空間 各再帰に必要な補助空間が定数の場合、再帰空間の複雑さは o (n) です。再帰的アルゴリズムの時間計算量の計算式は再帰的方程式です:
T(n) = 2T(n/2) + n2
T(n) = n2 + 2(2T(n/4) + (n/2) 2)
T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23) 2 + 2((n/24) 2 +…+2((n/2i) 2 + 2T(n/2i + 1)))…))))……(1)
T(n) = n2 + 2(n/2)2 + 22(n/22) 2 + … + 2i(n/2i)2 + 2i+1T(n/2i+1)
T(n/2) がそれぞれその 2 つの子ノードに割り当てられます。以下同様です。
[1 + 1/2 + (1/2)2 + (1/2)3 + … + (1/2)i] n2 = 2n2
O(n2)
ルールであることがわかります。再帰ツリーの式は次のように取得できます。 (1) 各層のノードは T(n) = kT(n / m) 現在の条件下での f(n) の f(n) の値n/m;(2) 各ノードの分岐の数は k です; (3) 各層の右側は、現在の層内のすべてのノードの合計をマークします。 別の例:T(n) = T(n/3) T(2n/3) n
その再帰ツリーは次のようになります以下の図:#各層の値が n で、ルートからリーフ ノードまでの最長パスが
T(n) = O( nlogn)
要約すると、この方法を使用して再帰アルゴリズムの複雑さを解決します:
f(n) = af(n/b) + d(n)
2 番目のケースから、分割統治法を使用して元のアルゴリズムを改善する場合、焦点は、新しい計算方法を使用して a の値を減らすことです。
以上が再帰的アルゴリズムの時間計算量はどれくらいですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C++ 関数の再帰の深さは制限されており、この制限を超えるとスタック オーバーフロー エラーが発生します。制限値はシステムやコンパイラによって異なりますが、通常は 1,000 ~ 10,000 の間です。解決策には次のものが含まれます: 1. 末尾再帰の最適化、2. 末尾呼び出し、3. 反復実装。

はい、C++ ラムダ式は std::function を使用して再帰をサポートできます。std::function を使用して Lambda 式への参照をキャプチャします。キャプチャされた参照を使用すると、ラムダ式はそれ自体を再帰的に呼び出すことができます。

再帰アルゴリズムは、関数の自己呼び出しを通じて構造化された問題を解決します。利点は、シンプルで理解しやすいことですが、欠点は、効率が低く、スタック オーバーフローを引き起こす可能性があることです。非再帰アルゴリズムは、明示的に管理することで再帰を回避します。スタック データ構造の利点は、より効率的でスタックのオーバーフローを回避できることですが、欠点はコードがより複雑になる可能性があることです。再帰的か非再帰的かの選択は、問題と実装の特定の制約によって異なります。

2 つの文字列 str_1 と str_2 を指定します。目的は、再帰的プロシージャを使用して、文字列 str1 内の部分文字列 str2 の出現数をカウントすることです。再帰関数は、その定義内で自分自身を呼び出す関数です。 str1 が「Iknowthatyouknowthatiknow」、str2 が「know」の場合、出現回数は -3 になります。例を通して理解しましょう。たとえば、入力 str1="TPisTPareTPamTP"、str2="TP"; 出力 Countofoccurrencesofasubstringrecursi

整数配列 Arr[] を入力として受け取ります。目標は、再帰的メソッドを使用して配列内の最大要素と最小要素を見つけることです。再帰を使用しているため、長さ = 1 に達するまで配列全体を反復処理し、基本ケースを形成する A[0] を返します。それ以外の場合、現在の要素は現在の最小値または最大値と比較され、その値は後続の要素に対して再帰的に更新されます。この場合のさまざまな入出力シナリオを見てみましょう −入力 −Arr={12,67,99,76,32}; 出力 −配列内の最大値: 99 説明 &mi

再帰関数の時間計算量分析には、基本ケースと再帰呼び出しの特定が含まれます。基本ケースと各再帰呼び出しの時間計算量を計算します。すべての再帰呼び出しの時間計算量を合計します。関数呼び出しの数と問題のサイズとの関係を考慮してください。たとえば、再帰呼び出しごとに再帰の深さが 1 ずつ増加し、合計の深さが O(n) になるため、階乗関数の時間計算量は O(n) になります。

再帰関数は、文字列処理の問題を解決するためにそれ自体を繰り返し呼び出す手法です。無限再帰を防ぐために終了条件が必要です。再帰は、文字列の反転や回文チェックなどの操作で広く使用されています。

時間計算量は、関数の実行にかかる時間の尺度です。一般的な PHP 関数の時間計算量の問題には、入れ子になったループ、大規模な配列の走査、再帰呼び出しなどがあります。時間計算量を最適化する手法には、次のものが含まれます。 キャッシュを使用してループ数を削減する 並列処理を使用してアルゴリズムを簡素化する
