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


8

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

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


回答:


9

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

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

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

分割統治

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

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

貪欲なアルゴリズム

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

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

動的プログラミング

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

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

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


私は、誰かがそのような単純な方法でDPを定義するのを見たことがない。ありがとうございました。
MT。

2

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

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

あなたはgeeksforgeeksで多くの例を見つけることができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.