私たちは一般的に、プログラミングのパラダイムについて、関数型、手続き型、オブジェクト指向、命令型などについて話しますが、アルゴリズムのパラダイムが聞かれたら、何に答えればよいですか?
たとえば、巡回セールスマン問題、ダイクストラ最短経路アルゴリズム、ユークリッドGCDアルゴリズム、バイナリ検索、クラスカルの最小全域木、ハノイの塔アルゴリズムパラダイムなどです。あるいは、パラダイムはこれらのアルゴリズムを設計するために使用するデータ構造でしょうか?
問題の効率的な解決策を構築するための一般的なアプローチ
アルゴリズムの設計で一般的に使用される基本的なアプローチは、 アルゴリズムパラダイムと見なすことができます :
Divide and Conquer
アイデア:問題のインスタンスを同じ問題の小さなサブインスタンスに分割し、これらを再帰的に解決してから、特定のインスタンスのソリューションにソリューションをまとめます。
例:Mergesort、Quicksort、Strassenのアルゴリズム、FFT。
グリーディアルゴリズム
アイデア:現時点で最適に見える選択を常に行うことにより、解決策を見つけます—先を見ないで、戻ることはありません。
例:プリムのアルゴリズム、クラスカルのアルゴリズム。
動的プログラミング
アイデア:再帰を逆さまにします。
例:すべてのペアの最短経路問題のFloyd-Warshallアルゴリズム。
Wordのパラダイムは例に変換されますが、科学的なコンテキストで使用されている 方法ではありません 。あなたの例はすべてアルゴリズムの例です(巡回セールスマン問題(NPハード問題です)を除く)。どれもアルゴリズムパラダイムと見なされるほど簡単なものではありません。
一般的な設計アルゴリズムパラダイム:
例の数は geeksforgeeks にあります