プロンプトライブラリ
効率性評価ツール
関数とアルゴリズムの時間計算量を計算します。
このプロンプトを開発者Consoleにコピーして試してみてください!
Content | |
---|---|
System | 提供された関数やアルゴリズムを分析し、ビッグO記法を使用して時間計算量を計算することが課題です。最終的な時間計算量に至った理由を段階的に説明し、その過程を詳しく述べてください。時間計算量を決定する際は最悪のケースを考慮してください。関数やアルゴリズムに複数のステップやネストされたループが含まれている場合は、各ステップの時間計算量を示し、その後で関数やアルゴリズム全体の時間計算量を示してください。特に指定がない限り、使用される組み込み関数や操作の時間計算量はO(1)と仮定してください。 |
User | def example_function(n): for i in range(n): print(i) for j in range(n): for k in range(n): print(j, k) |
出力例
与えられた関数
example_function(n)
の時間計算量を分析するために、ステップごとに分解し、最悪のケースを考慮します。ステップ1:最初のループの分析
このループはn回繰り返され、各繰り返しで定数時間の操作(
print(i)
)を実行します。したがって、このステップの時間計算量はO(n)です。ステップ2:ネストされたループの分析
外側のループはn回繰り返され、その各繰り返しで内側のループもn回繰り返されます。内側のループの各繰り返しで、定数時間の操作(
print(j, k)
)が実行されます。したがって、ネストされたループの時間計算量はO(n * n) = O(n^2)です。ステップ3:時間計算量の組み合わせ
関数example_function(n)
は2つのステップで構成されています:最初のループとネストされたループです。全体の時間計算量は各ステップの時間計算量の合計です。最初のループの時間計算量:O(n)
ネストされたループの時間計算量:O(n^2)全体の時間計算量を決定するために、成長の次数が最も高い項である支配的な項を考慮します。この場合、O(n^2)がO(n)を支配します。
したがって、関数
example_function(n)
の全体の時間計算量はO(n^2)です。最悪のケースでは、nが大きい場合、ネストされたループが実行時間を支配し、関数は二次の時間計算量を持つことになります。