アルゴリズム.

2283 ワード

アルゴリズムとは


数学と計算機科学において、アルゴリズムは、特定の問題のクラスを解決するために、または、計算を実行するために典型的に使われるよく定義された命令の有限シーケンスです.
良いアルゴリズムは時間と空間によって最適化されるべきである.問題の異なるタイプは、最適化された方法で解決されるアルゴリズム技術の異なる型を必要とする.アルゴリズムの多くの種類があります

An algorithm to add two numbers:

Take two number inputs

Add numbers using the + operator

Display the result
重要な基本ルール
  • 入出力は正確に定義されるべきです.
  • アルゴリズムの各ステップは明確で、曖昧でなければなりません.
  • アルゴリズムは、問題を解決する多くの異なる方法の中で最も効果的であるべきです.
  • なぜアルゴリズムは重要ですか?
    能力の問題を解決する明確な手順を定義するには、多くの異なる分野で重要です.故意に、または未知の、我々はアルゴリズムとアルゴリズムを使用してすべての時間を考える.それは私たちが問題を打破し、離散的なステップの面で最良の解決策を見つけることができます.
    The efficiency of an algorithm depends on two parameters:
    
    1. Time Complexity
    
    2. Space Complexity
    
    時間の複雑さは、時間が取られるよりむしろ特定の命令セットが実行される回数として定義されます.それは、使用されるコンパイラ、プロセッサの速度などのようないくつかの外部要因によっても取られる総時間があるからです.
    **スペース複雑さ**スペース複雑さは、実行のためにプログラムによって必要とされる完全なメモリスペースです.

    アルゴリズムの種類


    アルゴリズムは、タスクを達成するために使用する概念に基づいて分類されます.以下は、広く知られて広く使用されるいくつかのアルゴリズム技術です.
    分割統治アルゴリズム
    分割と征服アルゴリズムでは、アイデアは、2つのセクションの問題を解決するために、同じタイプの小さなサブ問題に問題を分割することですこれらの小さな問題を解決し、元の問題を解決するためにそれらの解決策を組み合わせる.
    ブルートフォースアルゴリズム
    これはアルゴリズムの最も基本的で最も簡単なタイプです.ブルートフォースアルゴリズムは問題に対する直接的なアプローチです.すなわち、問題を見ることに私たちの心に来る最初のアプローチです.より技術的には、満足のいく解決策が見つかるまで、すべての可能な解決策を試みるようなものです.
    欲張りアルゴリズム
    全体の問題の最適解を見つけることを意図して、ローカルレベルで最適解を見つけてください.
    再帰アルゴリズム
    問題の最も簡単で最も簡単なバージョンを解決するには、問題のますます大きなバージョンを解決するまでは、元の問題への解決策が見つかります.
    バックトラッキングアルゴリズム
    問題を解決するために試みることができるサブ問題に分割しますしかし、希望のソリューションが到達していない場合は、前方に移動するパスが見つかるまで、問題の後方に移動します.
    動的計画法
    この種のアルゴリズムは暗記技術としても知られているので、これは以前計算した結果を何度も何度も計算しないように記憶することである.動的計画法では、複雑な問題をより小さな重複する問題に分割し、将来の使用のために結果を格納する.
    単純なサブ問題のコレクションに複雑な問題を破るし、それらのサブ問題のそれぞれを一度だけ解決し、それらのソリューションを再計算する代わりに、将来の使用のためのソリューションを格納します.

    ソートアルゴリズム


    ソートアルゴリズムは、ある順序でリストの要素を置くアルゴリズムです.ソートはしばしば複雑な問題を解決するアルゴリズムの重要な第一歩である.並べ替えアルゴリズムの多数は、それぞれ独自の利点とコストがあります.以下では、より有名なソートアルゴリズムのいくつかに焦点を当てます.
    線形ソート
    ソートされるリスト内の最小の要素を見つけ、新しいリストに追加し、元のリストから削除します.元のリストが空になるまでこれを繰り返します.
    バブルソート
    リストの最初の2つの要素を比較し、最初の方が2より大きい場合はスワップします.リスト内の隣接する要素のすべてのペアでこれを繰り返します.その後、リストが完全にソートされるまで、このプロセスを繰り返します.
    挿入ソート:
    小さな要素が見つかるまで、リスト内の各要素をすべての前の要素に比較します.スワップこれら2つの要素.リストが完全にソートされるまで、このプロセスを繰り返します.