序文大企業の秋季採用の先行スタートが始まっており、新卒採用の秋季大幅強化の警鐘が鳴らされている。これは、誰もが厳しい採用競争に挑まなければならないことを意味する。筆記試験や面接は就職活動において乗り越えなければならないハードルであり、アルゴリズムはほとんどの人にとって難しいハードルです。体系的な学習と理解、そして実践を通じてのみ克服することができます。 より多くの方にデータ構造とアルゴリズムを理解していただくために、新しいブログ投稿シリーズ「アルゴリズムを少し理解する」を開始します。皆様が辛い日々を乗り越えられることを願っています。私のアルゴリズム研究の能力には限界がありますが、皆さんがその本質を抽出し、そこから学んでいただければ幸いです。 アルゴリズムとは何かアルゴリズムとは、データを操作し、プログラムの問題を解決するために使用される一連の方法のことです。 さまざまなアルゴリズムの長所と短所を測定する方法は 2 つあります。
たとえば、フィボナッチ数列のルールは次のようになります。数列は 3 番目の項から始まり、各項の値は前の 2 つの項の値の合計になります。つまり、0、1、1、2、3、5、8...です。 分析: フィボナッチ数列のパターンを観察すると、数列をアルゴリズムを使用して表現する場合、最初の 2 つの項と、3 番目の項から始まる要素の計算の 2 つのケースに分割する必要があることがわかります。 最も簡単な方法は、再帰を使用してフィボナッチ数列アルゴリズムを実装することです。
もちろん、ループを使用してこれを実現することもできます。
実際、高級プログラミング言語で書かれたプログラムがコンピューター上で実行されるのにかかる時間は、次の要因によって異なります。
一般に、プログラムの実行時間は主にアルゴリズムの品質と問題の入力サイズによって決まります。 時間計算量と空間計算量私たちは皆、ガウスの物語を学んだことがあります。主な内容は次のとおりです。ガウスが学生だったとき、先生は100以内のゼロ以外の自然数の合計を計算する方法、つまり1 + 2 + ... + 99 + 100 =を計算する方法を尋ねました。当時、多くの学生は最初から最後まで計算していましたが、ガウスは計算に忙しくなく、問題について考えていました。 ガウスは観察の結果、最初の項と最後の項の合計が 2 番目の項と最後から 2 番目の項の合計に等しく、101 になることを発見しました。また、他の項もこの規則に従うことも発見しました。全部で50組あるので、結果は101×50=5050となります。それで彼はクラスで最初に答えを計算した人になりました。 これは真実です。ナイフを研ぐことは木を切る作業を遅らせることはなく、正しい方法を使用すれば作業が容易になります。 それでは、ガウスアルゴリズムと従来のアルゴリズムの長所と短所を詳しく分析してみましょう。 従来のアルゴリズム:
ガウスアルゴリズム:
上記のように、従来のアルゴリズムの実行回数は 2n+3 回であるのに対し、ガウスアルゴリズムの実行回数は 3 回です。最初と最後のステートメントの実行回数は同じなので、中間のアルゴリズムの主な焦点は n 回と 1 回の差です。ガウスアルゴリズムが従来のアルゴリズムよりはるかに優れていることは明らかです。 アルゴリズムの時間計算量データ構造でアルゴリズムの時間計算量がどのように定義されているかを見てみましょう。 アルゴリズムの時間計算量: アルゴリズム分析を実行する場合、ステートメント実行の総数 T(n) は問題のサイズ n の関数であり、次に n による T(n) の変化が分析されて T(n) の大きさの順序が決定されます。アルゴリズムの時間計算量は、アルゴリズムの時間測定値であり、T(n)=O(f(n)) と表されます。これは、時間スケール n が増加すると、アルゴリズム実行時間の増加率が f(n) の増加率と同じになることを意味し、これはアルゴリズムの漸近的時間計算量、または略して時間計算量と呼ばれます。 翻訳してみましょう。時間計算量は、プログラムの実行時間を見積もるために使用される尺度です。アルゴリズムの問題サイズが n で、演算単位数 (プログラムが消費する時間を表すために使用される) が n であると仮定すると、データ サイズ n が増加するにつれて、アルゴリズム実行時間の増加率は f(n) の増加率と同じになり、時間計算量 O(f(n)) と呼ばれます。 T(n)=O(f(n))
上記の説明では、アルゴリズムの時間計算量を反映するために O() が言及されており、これはビッグ O メソッドとも呼ばれます。 Big O は上限を表すために使用されます。つまり、アルゴリズムの最悪ケース実行時間の上限、つまり最悪のケースで実行にかかる時間を表すために使用されます。 Big O メソッドの導出:
次に、アルゴリズムの時間計算量の計算方法を次のように自分で練習してみましょう。
最初の for ループでは、i+=i、つまり i=i+i=2i であることがわかります。したがって、2i=n のとき、n=log2(n) になります。ループから抜け出すには、1+log2(n) ステートメントを実行する必要があります。 2 番目の for ループでは、ループから抜け出す前にステートメントを n+1 回実行する必要があり、print ステートメントは (1+log2(n))*(n+1) 回実行されます。実際、big O 表記法を使用して加法定数と最高次の係数を無視すると、nlogn 回の実行が得られ、O(nlogn) として記録されます。 アルゴリズムの時間計算量を計算するときは、高次項の実際の状況に基づいて、加法定数、最高次項の係数、および対数項の底を無視できることを覚えておいてください。 一般的なカウント順序は次のとおりです。 一般的なアルゴリズムの時間計算量の順序を計算するのにかかる時間の比較を見ることができます。 さまざまな時間計算量曲線は次のとおりです。 アルゴリズム空間の複雑さ実際、コードを書くときは、時間と引き換えにスペースを完全に犠牲にしていることになります。アルゴリズムの時間計算量と同様に、空間計算量はアルゴリズムのストレージスペースとデータ サイズ間の増加関係を表します。 アルゴリズム空間の複雑さ: アルゴリズムに必要なストレージスペースを計算することで実現され、計算式は S(n)=O(f(n)) です。
上記のコードを観察すると、次のことがわかります。コードの 2 行目では、変数 arr を格納するためのスペースがメモリ内に割り当てられ、空の配列が割り当てられます。コードの 3 行目では、配列の長さが n に設定され、配列には n undefined が自動的に入力されます。また、残りのコードはそれ以上のスペースを占有しないため、コード全体のスペース計算量は O(n) です。 最悪の場合と平均的な場合最悪の実行時間は、プログラムの実行にかかる最大時間であり、これより悪いケースはありません。通常、実行時間について話すときは、最悪の場合の実行時間について言及しています。 平均ケース実行時間とは、プログラムが期待する平均時間を指しますが、実際のテストでは分析によって取得することが難しく、ある程度の実験データと推定が必要になります。 n 個の乱数の中から数字を検索する場合、最良のケースは最初の数字を検索して見つけることであり、時間の計算量は O(1) であることがわかっています。最悪のケースは、n 番目の数字を検索して見つけることです。したがって、数値を見つけるアルゴリズムの最悪の場合の時間計算量は O(n) であり、平均的な場合の時間計算量は O((1+n)/2)、つまり O(n/2) です。 まとめこの記事では、アルゴリズムとは何か、アルゴリズムを使用する理由、アルゴリズムの時間計算量と空間計算量を測定する方法、アルゴリズムの最悪ケースと平均ケースの概念について説明します。 |
<<: 毛沢東選集と魯迅全集をAIに与えたところ、AIが書いた大学入試のエッセイは非常に適切だった。
>>: IBM と KPMG が従業員をどのようにトレーニングしているかの秘密を明らかにします。トレーニングに AI を使用するのは良い考えでしょうか?
マイクロソフトは、人工知能はテクノロジー大手が反体制派を排除するための武器として利用されるべきではな...
[51CTO.com オリジナル記事] 韓国 IT ブリーフィング (3 月第 3 週)今回のKor...
[[437580]]導入私たちは皆、キャッシュについて聞いたことがあります。キャッシュとは何かと尋ね...
NeurIPS は世界で最も権威のある AI 学術会議の 1 つです。正式名称は Neural I...
RUDN大学の数学者チームは、再トレーニングに余分なリソースを費やすことなく、ニューラルネットワーク...
代数多様体とその方程式。代数幾何学は、一方では方程式の研究である代数学、他方では図形の研究である幾何...
Google の新しいキラー兵器、Gemini が世界に登場します! GeminiはGPT-4のよう...
AlphaGo の人間と機械の戦いから、自動運転車のロードトリップ、AI 合成アンカーの採用まで、...
中国では、口座間の送金、銀行ローンの申請、取引の実行にインターネットを利用することが住民にとって日常...
科学技術の継続的な発展により、多くの業界で「ロボット」が使用され、効率が向上するだけでなく、人件費も...
[[239590]] 8月6日、自動運転車、ロボット医師、10億人を超える中国国民を対象とした社会...
1年前の今日、ChatGPTが誕生し、人工知能の新しい時代が到来したように思えました。 ChatG...
無人運転車による配達に続き、ドローンによる食品配達も現実化に向かって加速している。先日終了した202...