web-dev-qa-db-ja.com

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

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

98
streetparade

アルゴリズムは、問題の自動化された解決策の説明です。アルゴリズムが行うことは正確に定義されています。解決策は可能な限り最良のものである場合とそうでない場合がありますが、最初からどのような結果が得られるかはわかっています。 アルゴリズムを実装するには、何らかのプログラミング言語を使用してプログラムを取得します(の一部)。

現在、いくつかの問題は難しく、許容できる時間内に許容できる解決策を得ることができない場合があります。そのような場合、任意の選択肢(教育的推測)を適用することで、それほど悪くない解決策をはるかに速く得ることができます。これはヒューリスティックです。

ヒューリスティックは依然として一種のアルゴリズムですが、問題の可能性のあるすべての状態を探索しないか、最も可能性の高い状態を探索することから始めます。

典型的な例はゲームからのものです。チェスゲームプログラムを書くとき、ある深さレベルであらゆる可能な動きを試み、ボードに何らかの評価関数を適用することを想像できます。ヒューリスティックは、明らかに悪い動きで始まる完全なブランチを除外します。

場合によっては、最適なソリューションを探しているのではなく、何らかの制約に適合するソリューションを探しています。優れたヒューリスティックは、短時間で解決策を見つけるのに役立ちますが、唯一の解決策が試行しないことを選択した状態にある場合、解決策が見つからない可能性もあります。

94
kriss
  • アルゴリズムは通常、決定論的であり、最適な結果をもたらすことが実証されています
  • ヒューリスティックには正確性の証拠がなく、多くの場合、ランダムな要素が含まれ、最適な結果が得られない場合があります。

最適なソリューションを見つけるための効率的なアルゴリズムが知られていない多くの問題には、非常に迅速に最適に近い結果をもたらすヒューリスティックなアプローチがあります。

いくつかの重複があります。「遺伝的アルゴリズム」は受け入れられている用語ですが、厳密に言えば、それらはアルゴリズムではなく、ヒューリスティックです。

32

一言で言えば、ヒューリスティックは「経験に基づいた推測」です。ウィキペディアはそれをうまく説明しています。最後に、指定された問題に対する最適な解決策として「一般に受け入れられる」方法が採用されます。

ヒューリスティックは、問題解決、学習、発見に役立つ経験ベースの技術の形容詞です。ヒューリスティック手法を使用して、可能な限り最良の答え、つまり「最適なソリューション」に近づくことが望まれるソリューションに迅速に到達します。ヒューリスティックとは、「経験則」、経験に基づいた推測、直感的な判断、または単なる常識です。ヒューリスティックは、問題を解決する一般的な方法です。名詞としてのヒューリスティックは、ヒューリスティック手法の別名です。

より正確に言えば、ヒューリスティックとは、人間や機械の問題解決を制御するために、大まかに適用可能ではあるが容易にアクセス可能な情報を使用する戦略を意味します。

アルゴリズムは、問題の解決に使用される命令の有限セットを含むメソッドです。この方法は、問題に対して機能することが数学的または科学的に証明されています。正式な方法と証明があります。

ヒューリスティックアルゴリズムは、一般的なヒューリスティックの方法で、多くの実用的なシナリオの問題に対する許容可能なソリューションを生成できるアルゴリズムですが、その正当性の正式な証拠はありません。

22
Buhake Sindi

実際、それらの間には多くの共通点があるとは思いません。一部のアルゴリズムでは、ロジックでヒューリスティックを使用します(多くの場合、計算の回数を減らしたり、結果をより速くしたりします)。通常、ヒューリスティックは、いわゆる欲張りアルゴリズムで使用されます。

ヒューリスティックとは、アルゴリズムで最適な選択を行うために(選択が必要な場合)使用するのに適していると考える「知識」です。たとえば...チェスのヒューリスティックは可能です(可能な場合は、常に相手のクイーンを使用します。これはより強力な数字であることがわかっているためです)。ヒューリスティックは、正しい答えに導くことを保証しませんが、(仮定が正しい場合)多くの場合、はるかに短い時間で最良に近い答えを取得します。

6
anthares

algorithmは、実行される一連の自己完結型の操作です 4 、通常は有限として解釈されます次のような問題の解決策を決定するための(コンピューターまたは人間の)命令のシーケンス:AからBへのパス、またはAとBの間の最小パスはあります。後者の場合は、 「合理的に近い」代替ソリューション。

アルゴリズムには特定のカテゴリがあり、ヒューリスティックアルゴリズムはそのうちの1つです。この場合のアルゴリズムの(実証済みの)プロパティに応じて、次の3つのカテゴリのいずれかに分類されます(注1)。

  • 正確:解は入力に対して最適であることが証明されています(またはexact解)問題
  • 近似:解の値の偏差は、事前に定義された境界よりも最適値から遠く離れないことが証明されています(たとえば、最適値よりも50%以上大きくなることはありません)
  • ヒューリスティック:アルゴリズムが最適であることが証明されておらず、最適なソリューションの事前定義された範囲内でもありません

近似アルゴリズムもヒューリスティックですが、それが出力するソリューション(値)に実証済みの境界があるという強力な特性があることに注意してください。

いくつかの問題については、最適解を計算するための「効率的な」アルゴリズムを発見した人はいません(注2)。これらの問題の1つは、よく知られている巡回セールスマン問題です。たとえば、巡回セールスマン問題のクリストフィデスのアルゴリズムは、最適解の50%以内にあることが証明されていなかったため、ヒューリスティックと呼ばれていました。しかし、それが証明されているため、Christophidesのアルゴリズムはより正確に近似アルゴリズムと呼ばれます。

コンピューターでできることの制限により、効率的に最良可能な解決策を見つけることが常に可能とは限りません。問題に十分な構造がある場合、解空間が巨大であっても(つまり、最短経路問題において)、解空間を効率的に横断する方法があるかもしれません。

通常、ヒューリスティックは、「専門家情報」または「教育的推測」を追加して検索方向をガイドすることにより、アルゴリズムの実行時間を改善するために適用されます。実際には、ヒューリスティックは、最適なアルゴリズムのサブルーチンであり、どこを探すかを決定しますfirst

(注1):さらに、アルゴリズムは、ランダム要素または非決定的要素を含むかどうかによって特徴付けられます。常に同じ方法で実行され、同じ答えを生成するアルゴリズムは、決定論的と呼ばれます。

(注2):これはP vs NP問題と呼ばれ、NP完全およびNP-として分類される問題ハードは「効率的な」アルゴリズムを持つ可能性は低いです。注意;コメントで@Krissが言及したように、計算には指数関数的な時間またはスペースが必要な「悪い」タイプの問題もあります。

質問の一部に回答するいくつかの回答があります。私はそれらが不完全で十分に正確ではないと判断し、@ Krissによって作成された承認済みの回答を編集しないことにしました

6
Joost

アルゴリズムは、入力が何か(関数)を計算し、結果を出力する一連の操作です。

アルゴリズムは、正確な値または近似値を生成する場合があります。

また、正確な値に近い確率が高いランダムな値を計算する場合があります。

ヒューリスティックアルゴリズムは、入力値に関する洞察を使用して、正確な値を計算しません(ただし、最適に近い場合があります)。いくつかの特別なケースでは、ヒューリスティックは正確な解決策を見つけることができます。

4
Slava

ヒューリスティックはアルゴリズムであるため、その意味では何もありませんが、ヒューリスティックは問題解決に「推測」アプローチを採用し、「可能な限り最良の」ソリューションを見つけるのではなく、「十分な」答えを導き出します。

良い例は、解決策が必要な非常に難しい(NP完全を読む)問題があり、それに到達する時間がないため、次のようなヒューリスティックアルゴリズムに基づく十分な解決策を使用する必要がある場合です。遺伝的アルゴリズムを使用して巡回セールスマン問題の解決策を見つける。

4
dsm

アルゴリズムは、問題を解決するための明確に定義された一連の命令であり、ヒューリスティックは学習と発見のアプローチを利用してソリューションに到達することを伴います。

したがって、問題の解決方法がわかっている場合は、アルゴリズムを使用します。ソリューションを開発する必要がある場合、それはヒューリスティックです。

3
Lazarus

ヒューリスティックとは、通常、最適化または戦略であり、通常は十分な答えを提供しますが、常に最良の答えとは限りません。たとえば、巡回セールスマンの問題をブルートフォースで解決する場合、コストが現在の最良のソリューションのコストを超えたときに部分的なソリューションを破棄することはヒューリスティックです。 tアルゴリズムの理論的(ビッグオー表記)実行時間を改善する

2
IVlad

私が読んだ最高の説明の1つは、素晴らしい本 Code Complete から来ています。

ヒューリスティックとは、答えを探すのに役立つ手法です。その結果は偶然に左右されます。なぜなら、発見的な方法ではなく、どのように見えるかだけを教えてくれるからです。ポイントAからポイントBに直接到達する方法については説明しません。ポイントAとポイントBがどこにあるかさえ知らないかもしれません。実際には、ヒューリスティックはピエロのスーツのアルゴリズムです。予測が難しく、より楽しく、30日間の返金保証がありません。

誰かの家に運転するためのアルゴリズムを次に示します。ハイウェイ167を南に向かってピュイオールアップまで進みます。 South Hill Mall出口を出て、丘を4.5マイルドライブします。食料品店のそばの信号で右折し、最初の角を左折します。 714 North Cedarの左側にある大きな日焼けハウスの私道に入ります。

誰かの家に着くための発見的方法は次のとおりです。最後に郵送した手紙を見つけます。返信先の町まで車で行きます。あなたが町に着いたら、私たちの家がどこにあるかを誰かに尋ねてください。誰もが私たちを知っています。誰かが喜んであなたを助けてくれるでしょう。誰も見つからない場合は、公衆電話からお電話ください。ご連絡いたします。

アルゴリズムとヒューリスティックの違いは微妙であり、2つの用語は多少重複しています。この本の目的上、2つの主な違いは、ソリューションからの間接性のレベルです。アルゴリズムが指示を直接提供します。ヒューリスティックは、あなた自身のための指示を発見する方法、または少なくともどこを探すべきかを教えてくれます。

2
Edwin Dalorzo

ヒューリスティックは、将来のソリューションの状態を予測するのが難しいため、人工知能の学習ベースモデルで使用される制約の多くであると思います。

しかし、上記の回答を読んだ後の私の疑問は、「確率的最適化手法を使用してヒューリスティックをどのように正常に適用できますか?または、確率的最適化と併用すると本格的なアルゴリズムとして機能しますか?」

http://en.wikipedia.org/wiki/Stochastic_optimization

2
A_tanA

彼らは、見つかった解の質についての保証なしに、準最適な解を見つけます。それは、発見的手法のみの多項式の開発にとって意味があることは明らかです。これらの方法の適用は、実世界の問題または計算の観点から非常に厄介な大きな問題を解決するのに適しており、多項式時間で近似解を見つけることができるアルゴリズムすらありません。

0
kafka