8種類のアルゴリズムのリストは何ですか?


ベストアンサー

目的による分類

各アルゴリズムには目標があります。たとえば、クイックソートアルゴリズムの目的は、データを昇順または降順で並べ替えることです。ただし、目標の数は無限であり、目的の種類ごとにグループ化する必要があります。

実装による分類

アルゴリズムは、さまざまな基本原則に従って実装できます。

  • 再帰的または iterative 再帰的アルゴリズムは、特定の条件が一致するまで自分自身を繰り返し呼び出すアルゴリズムです。関数型プログラミングに共通の方法です。反復アルゴリズムは、ループのような反復構造を使用します。一部の問題は、いずれかの実装に適しています。たとえば、ハノイの塔の問題は、再帰的な実装でよく理解されています。すべての再帰バージョンには、同等の反復反復があり、その逆も同様です。
  • 論理または procedural アルゴリズムは、制御された論理的推論と見なすことができます。論理コンポーネントは、計算で使用できる公理を表し、制御コンポーネントは、公理に控除を適用する方法を決定します。これが論理プログラミングの基礎です。純粋な論理プログラミング言語では、制御コンポーネントは固定されており、アルゴリズムはロジックコンポーネントのみを提供することによって指定されます。
  • シリアルまたは並列アルゴリズムは通常、コンピューターが一度に1つのアルゴリズム命令を実行することを前提として説明されています。これは、コンピュータアーキテクチャを利用して複数の命令を一度に処理する並列アルゴリズムとは対照的に、シリアルアルゴリズムです。それらは問題をサブ問題に分割し、それらをいくつかのプロセッサに渡します。反復アルゴリズムは一般的に並列化可能です。並べ替えアルゴリズムは効率的に並列化できます。
  • 決定論的または非決定論的決定論的アルゴリズムは事前定義されたプロセスで問題を解決しますが、非決定論的アルゴリズムはヒューリスティックを使用して各ステップで最適なソリューションの推測を実行する必要があります。

設計パラダイムによる分類

設計パラダイムは、専用の種類のアルゴリズムを必要とする研究または問題のクラスのドメインです。

  • 分割統治分割統治アルゴリズムは、インスタンスが十分に小さくなるまで、問題のインスタンスを同じ問題の1つ以上の小さなインスタンスに繰り返し(通常は再帰的に)削減します。簡単に解決します。分割統治のそのような例の1つは、マージソートです。データをセグメントに分割した後、データの各セグメントでソートを実行でき、データ全体のソートは、それらをマージすることにより、征服フェーズで取得できます。二分探索アルゴリズムは、縮小統治アルゴリズムと呼ばれる分割統治の変形の例であり、同一のサブ問題を解決し、このサブ問題の解決策を使用して解決します。より大きな問題。
  • 動的計画法加重グラフの最短経路は、隣​​接するすべての場所からゴールまでの最短経路を使用して見つけることができます。頂点。問題の最適解をサブ問題の最適解から構築できる場合、動的計画法を使用すると、すでに計算された解の再計算を回避できます。 -「分割統治」アプローチとの主な違いは、分割統治法ではサブ問題が独立しているのに対し、動的計画法ではサブ問題の重なりが発生することです。 -動的計画法とメモ化は一緒に行われます。単純な再帰との違いは、再帰呼び出しのキャッシュまたはメモ化にあります。サブ問題が独立している場合、これは役に立ちません。メモ化を使用するか、すでに解決されたサブ問題のテーブルを維持することにより、動的計画法は、多くの問題の指数関数的性質を多項式の複雑さに減らします。
  • 欲張り法欲張りアルゴリズムは動的計画法アルゴリズムに似ていますが、違いは、サブ問題の解決策を各段階で知る必要がないことです。代わりに、現時点で最良の解決策に見えるものから「貪欲」な選択を行うことができます。最も人気のある欲張りアルゴリズムは、クラスカルによって与えられた最小全域木を見つけることです。
  • 線形計画法問題は線形のセットとして表されます不等式が発生すると、入力を最大化または最小化しようとします。これにより、特にシンプレックスアルゴリズムを使用することで、有向グラフの最大フローなどの多くの問題を解決できます。線形計画法の複雑な変形は整数計画法と呼ばれ、解空間はすべての整数に制限されます。
  • 削減

変換して征服する問題を別の問題に変換して解決します。簡単な例:ソートされていないリストの中央値を見つけることは、最初にこの問題をソートの問題に変換し、ソートされたリストの中央の要素を見つけることです。削減の主な目標は、可能な限り最も単純な変換を見つけることです。

  • グラフの使用チェスのプレイなど、多くの問題を問題としてモデル化できます。グラフ上。グラフ探索アルゴリズムが使用されます。このカテゴリには、検索アルゴリズムとバックトラッキングも含まれます。
  • 確率的およびヒューリスティックなパラダイム 確率的ランダムにいくつかの選択を行うもの。 遺伝的生物学的進化過程を模倣することにより、問題の解決策を見つけようとします。ランダムな突然変異のサイクルにより、「解決策」が次々と生成されます。したがって、それらは生殖と「適者生存」をエミュレートします。 ヒューリスティックその一般的な目的は最適な解決策を見つけることではなく、完璧な解決策を見つけるための時間やリソースが実用的でないおおよその解決策です。
  • 複雑さによる分類

    一部のアルゴリズムは線形時間で完了し、一部のアルゴリズムは指数関数的な時間で完了します。一部は完了しません。

    出典:アルゴリズムの分類

    教師あり学習:分類

    回答

    アルゴリズムを分類する別の方法は次のとおりです。

    競技プログラミングでは、4つの主な問題があります-パラダイムを解決します。

    つまり、問題が発生した場合、それを解決するために実行する必要のあるさまざまなアプローチ/ツールを次に示します。

    1. ブルートフォース/完全検索:すべての可能性を調べ、最適なソリューションを選択する方法。
    2. 長所:シンプルです。あらゆる可能性を検討しているため、常に解決策を見つける必要があります
    3. 短所:可能性の数は、アイテムの数が増えるにつれて指数関数的に増加します
    4. 分割統治法:問題をより小さな部分に分割し、それらを解決する方法部品。二分探索を考えてみてください。
    5. 欲張り法:将来を考慮せずに、現時点で最適なオプションを選択する方法。
    6. 長所:すばやく簡単に、最適なソリューションが得られるか、少し近づきます
    7. 短所:ほとんどの場合、最適なソリューションは得られません
    8. 動的計画法:以前に見つかったサブソリューションを使用してソリューションを構築する方法。間違いなくより高度な手法の1つですが、非常に強力で適用可能です。
    9. 長所:は、多項式時間の多くの問題に対する最適な解決策を見つけます(一方、ブルートフォースは指数関数的にかかります)
    10. 短所:把握して適用するのが難しく、さまざまな状態と再発を理解するのに時間がかかります

    ソース

    ハリム、スティーブン、フェリックスハリム。 競技プログラミング:プログラミングコンテストの新しい下限。ルル、2013年。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です