web-dev-qa-db-ja.com

貪欲アルゴリズムとヒューリスティックアルゴリズムの違いは何ですか?

貪欲アルゴリズムとヒューリスティックアルゴリズムの違いは何ですか?

私は議論についていくつかの記事を読みましたが、彼らの主な特徴は問題を解決するために各反復で最良の(ローカル)オプションを選択することなので、それらは多かれ少なかれ同じタイプのアルゴリズムであるようです。

19
Giuseppe Pes

ヒューリスティックスが私に説明されている方法は、それらが「経験則」であるということです。グローバルに最適なソリューションを生成する彼らの能力は直接証明可能ではないかもしれませんが、通常、彼らは良い仕事をします。これらは、最適なソリューションを決定するコストが高すぎる場合によく使用されます。さらに、ヒューリスティックスはしばしば、過去に問題がどのように解決されたかに関するある程度の経験をエンコードします。ヒューリスティックを説明するより良い方法は、「解決戦略」です。

貪欲アルゴリズムは、現時点で最も良く見えるものに基づいて選択を行うアルゴリズムです。言い換えると、選択肢はローカルで最適ですが、必ずしもグローバルで最適ではありません(運が良ければ証明することはできません)。さらに、貪欲アルゴリズムは通常、新しい情報に基づいてソリューションを洗練しません。これは解決策の1つにすぎません(別名、ヒューリスティック)。

貪欲なアルゴリズムがどのように機能するかの例を示すために、国の一方の側からもう一方の側まで最短距離で運転するルートを計画するのに役立つアルゴリズムを使用する場合、短い低速道路を選択する可能性があります。高速道路は、より長く、おそらくより直接的なものであっても、より良い選択肢であることを必ずしも理解しているとは限りません。

代替戦略(ヒューリスティック)は、高速道路を使用して旅程のほとんどをカバーしようとし(ほとんどの目的地では、より直接的な傾向があるため)、次に通常の道路を使用してそれらの間を移動します。状況によっては、かなりお粗末なものになるかもしれませんが、ほとんどの場合、かなりうまくいきます。正直なところ、通勤時に使用するヒューリスティックと同じです(satnavを使用していない場合)。

まとめ...

  • すべてヒューリスティック、貪欲アルゴリズム-いいえ

  • すべて貪欲なアルゴリズム、ヒューリスティックです-一般的に、はい。

背景を説明するために、大学のアルゴリズムクラスで最初に教えられた問題の1つは Traveling Salesman Problem でした。それは問題のNP完全なクラスに属し、効率的な解決手段が存在しないことを意味します。つまり、問題のサイズが大きくなると、解決策を見つけるのにかかる時間が大幅に長くなります。証明可能なアルゴリズムは多数存在しますが、それらのパフォーマンスは素晴らしいものではなく、実際のアプリケーションでは、ヒューリスティック(貪欲アルゴリズムを含む-リンクを参照)を優先する傾向があります。

18
Sam Delaney

それらの主な特徴は、各反復で最良の(ローカル)オプションを選択することです

ヒューリスティックスにはまったく当てはまりません。ヒューリスティックアルゴリズムは、理論的には最適ではないことがわかっている選択を行っていますが、実際には妥当な結果が得られることが証明されています。 Heuristics 通常、近似解を求めます。

コンピューターサイエンス、人工知能、および数学的最適化において、ヒューリスティックは、古典的な方法が遅すぎる場合に問題をより迅速に解決するため、または古典的な方法が正確な解決策を見つけられない場合に近似解を見つけるために設計された手法です。これは、速度と最適性、完全性、正確性、または精度のトレードオフによって達成されます。

貪欲はヒューリスティックの例です(最良のローカル選択を行い、最適なグローバル結果を期待してください)。貪欲とはまったく無関係な多くのヒューリスティックがあります。 遺伝的アルゴリズムはヒューリスティックと見なされます

人工知能のコンピューターサイエンス分野では、遺伝的アルゴリズム(GA)は自然選択のプロセスを模倣する検索ヒューリスティックです。

4
Remus Rusanu

貪欲とは、要素を1つずつソリューションに(いくつかの選択戦略に従って)集約し、バックトラックしないの場合です。例:ストレート選択ソートは、貪欲な手順と考えることができます。

ヒューリスティックは、アルゴリズムの動作を改善することを目的として使用されたアドホック/直感的なルールを表す一般的な用語ですが、保証はありません。例:クイックソートでピボットを選択するために使用される中央値3のルール。

3
Yves Daoust

これらは2つの異なるものです。貪欲なアルゴリズムは、反復ごとに「最良の選択」を試みます(たとえば、グラフ内のエッジを長さで選択すると、反復ごとに可能な最長/最短のエッジが選択されます)。貪欲なアルゴリズムが正確なソリューションを提供します!

ヒューリスティックアルゴリズムは、すべての可能性の実行を回避するために確率と統計を使用し、「推定された最良のソリューション」を提供します(つまり、より良いソリューションが存在する場合、それはほんの少しだけ優れています)。

1
alfasin

通知:以下が私と私の「ソーシャルサークル」に当てはまるのか、標準であるのかわかりません-グローバルコンセプト。

私の考えでは、Wikipediaが言うように、ヒューリスティックアルゴリズムは次のとおりです。

ヒューリスティックは、古典的な方法が遅すぎる場合に問題をより迅速に解決するため、または古典的な方法が正確な解決策を見つけられない場合に近似解を見つけるために設計された手法です。これは、速度と最適性、完全性、正確性、または精度のトレードオフによって達成されます。

一方、貪欲なアルゴリズムは、あなたが説明したものです。すべてのステップで最適なオプションを選択することによって、最良のソリューションを見つけようとするアルゴリズムです。それだけです。これは、ソリューションについて何も意味しません。貪欲なアルゴリズムが完全で最適なソリューションを提供する場合もあれば、ヒューリスティック->近似(完全ではない)であるがより高速なソリューションである場合もあります。

0
LeartS