web-dev-qa-db-ja.com

アルゴリズムのパラダイムとは何ですか?

私たちは一般的に、プログラミングのパラダイムについて、関数型、手続き型、オブジェクト指向、命令型などについて話しますが、アルゴリズムのパラダイムが聞かれたら、何に答えればよいですか?

たとえば、巡回セールスマン問題、ダイクストラ最短経路アルゴリズム、ユークリッドGCDアルゴリズム、バイナリ検索、クラスカルの最小全域木、ハノイの塔アルゴリズムパラダイムなどです。あるいは、パラダイムはこれらのアルゴリズムを設計するために使用するデータ構造でしょうか?

8
Vaibhav Agarwal

アルゴリズムのパラダイムは次のとおりです

問題の効率的な解決策を構築するための一般的なアプローチ

アルゴリズムの設計で一般的に使用される基本的なアプローチは、 アルゴリズムパラダイムと見なすことができます

Divide and Conquer

アイデア:問題のインスタンスを同じ問題の小さなサブインスタンスに分割し、これらを再帰的に解決してから、特定のインスタンスのソリューションにソリューションをまとめます。

例:Mergesort、Quicksort、Strassenのアルゴリズム、FFT。

グリーディアルゴリズム

アイデア:現時点で最適に見える選択を常に行うことにより、解決策を見つけます—先を見ないで、戻ることはありません。

例:プリムのアルゴリズム、クラスカルのアルゴリズム。

動的プログラミング

アイデア:再帰を逆さまにします。

例:すべてのペアの最短経路問題のFloyd-Warshallアルゴリズム。

Wordのパラダイムは例に変換されますが、科学的なコンテキストで使用されている 方法ではありません 。あなたの例はすべてアルゴリズムの例です(巡回セールスマン問題(NPハード問題です)を除く)。どれもアルゴリズムパラダイムと見なされるほど簡単なものではありません。

9
yannis

一般的な設計アルゴリズムパラダイム:

  • Divide and conquer :問題を同じ(または関連する)タイプの2つ以上のサブ問題に再帰的に分解します。
  • 動的プログラミング :それをより簡単なサブ問題のコレクションに分解します。例:ハノイの塔パズル
  • グリーディアルゴリズム :各段階でローカルに最適な選択を行う問題解決のヒューリスティック。例:巡回セールスマン問題
  • Backtracking :いくつかの計算上の問題に対するすべて(またはいくつか)の解決策を見つけるための一般的なアルゴリズム例:バックトラックによって解決された数独パズル。
  • ブルートフォース :解の可能なすべての候補を体系的に列挙し、各候補が問題のステートメントを満たすかどうかをチェックすることからなる非常に一般的な問題解決手法。

例の数は geeksforgeeks にあります

2
Premraj