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