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


103

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



1
ヒューリスティックアルゴリズムを一種のツリー構造として見ると、それを特殊目的アルゴリズムと呼ぶことができると思います。
James P.

ヒューリスティックは、(おそらく)機能しないアルゴリズムです。
JeffE 2016

回答:


99

アルゴリズムは、問題に対する自動化されたソリューションの記述です。アルゴリズムの動作は正確に定義されています。解決策は可能な限り最高の解決策であるかもしれませんが、最初からどのような結果が得られるかはわかっています。あなたは、実装するアルゴリズムを(の一部)を取得するためにいくつかのプログラミング言語を使ってプログラムを

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

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

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

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


3
ヒューリスティックのもう1つの一般的な用途は、ウイルスの検出です。ウイルスが存在するかどうかはわかりませんが、ウイルスの特定の主要な属性を探すことができます。
Dana Holt

Heahは、真のthatsととプログラムクラッキング
streetparade

1
@kriss、だから..ヒューリスティックは一種のアルゴリズムです。
パセリエ2016年

1
@Pacerier:はい。これは、特定の問題のソリューション空間をナビゲートするのに役立つアルゴリズムです。また、アルゴリズムを修正して実用的なものにするための戦略(メタアルゴリズム)として見ることもできます。それはまだアルゴリズムであり、すべてのメソッドがそうであり、ヒューリスティックは間違いなくメソッドです。
クリス

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

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

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


2
アルゴリズムが最適な結果をもたらすことが証明されているとは言いません。どの問題に関するアルゴリズムに依存します。
nbro 2016

最適な結果を生成することはアルゴリズムの本質的な品質ではなく、正確さ、つまり正確な結果ですが、ヒューリスティックはおおよその結果を提供します。
マリーナダンスト2017年

22

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

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

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

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

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


8

アルゴリズムが実行されるべき動作の自己完結型のステップバイステップのセットである4を、典型的には、(コンピュータまたはヒト)の有限のシーケンスとして解釈され、等の問題に対する解決策を決定するための命令:Aへの経路が存在するがB、またはAとBの間の最小パスは何ですか。後者の場合、「かなり近い」代替ソリューションで満足することもできます。

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

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

近似アルゴリズムもヒューリスティックですが、出力するソリューション(値)にバインドされていることが証明されているという強いプロパティがあることに注意してください。

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

コンピュータで実行できることには制限があるため、常に最適なソリューションを効率的に見つけることが常に可能とは限りません。問題に十分な構造がある場合、たとえ解空間が巨大であっても(つまり、最短経路の問題において)、解空間をトラバースする効率的な方法があるかもしれません。

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

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

(注2):これはP対NP問題と呼ばれ、NP完全およびNP困難として分類される問題には、「効率的な」アルゴリズムがありません。注意; @Krissがコメントで述べたように、計算に指数時間または空間が必要になる可能性がある「悪い」タイプの問題さえあります。

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


アルゴリズムという言葉の定義が制限的すぎると思います。単語列の使用は非平行を意味しますか?Parallellアルゴリズムは問題なく、今日でも普通です。ニューラルネットワークを使用して問題を解決するのはどうですか?または、制約伝播ツールですか?アルゴリズム?メタアルゴリズム?
クリス

読者は、NPの問題が悪化していると感じます。それは真実ではありません。指数関数的アルゴリズムやそれより悪いものなど、本当に悪いアルゴリズムを必要とする本当に難しい問題があります。NPは特別です。なぜなら、私たちに解決策があればそれをチェックするのは簡単かつ迅速ですが、まだそれがない場合は見つけるのが非常に難しいからです。迷路から抜け出すための正しい指示があることを確認するのは簡単です。出口を見つけるのははるかに困難です。したがって、NPを(非決定論的に)同時にすべての可能な解決策を試すことができれば、NPは簡単でも難しいものでもあります。しかし、それは不可能です。
クリス

フィードバックをお寄せいただきありがとうございます!フレーズを少し更新し、別の方法でアプローチしました。私の考えでは、制約伝搬は何かにアプローチする手法ですが、まだ制約伝搬で説明されているソリューションに段階的に到達する方法を説明するアルゴリズムではありません。expspaceと 'worse'のクラスについては当然のことですが、それについてもメモを追加しました。ところで:NPのサブセットには、同じクラスではない(推測される)「効率的に」解決可能な問題も含まれているため、NP-CompleteまたはNP-Hardを完全に記述してください。
Joost

もちろん、あなたは正しいです。私はNP-Completeを書くべきでした。私の悪い。
クリス

それは私の同僚の1人がそれを命名するものよりもはるかに優れています:NP-ness(これはひどくてちょっとひどい音に聞こえます...)
Joost

6

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

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


4

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

良い例は、ソリューションが必要な非常に難しい(NP完全な読み取り)問題があり、それに到達する時間がないためです。遺伝的アルゴリズムを使用して巡回セールスマン問題の解決策を見つける。


4

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

アルゴリズムにより、正確な値または概算値が得られる場合があります。

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

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


3

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

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


2

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


2

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

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

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


おっとっと!!スペルミスは「人工知能」である必要があります
A_tanA

2

私が読んだ最良の説明の1つは、私が今引用しているすばらしい本Code Completeから来ています。

ヒューリスティックは、答えを探すのに役立つテクニックです。ヒューリスティックは見方だけを示し、何を見つけるかを教えてくれるので、その結果は偶然の影響を受けます。ポイントAからポイントBに直接移動する方法は示されていません。ポイントAとポイントBがどこにあるかさえわからない場合があります。実際には、ヒューリスティックはピエロのスーツのアルゴリズムです。予測可能性は低く、楽しいですし、30日間の返金保証はありません。

誰かの家まで運転するためのアルゴリズムは次のとおりです。ハイウェイ167を南に向かってピュイ・アルプまで行きます。サウスヒルモールの出口を出て、4.5マイルの丘をドライブします。食料品店のそばの信号を右折し、最初の角を左折します。714 North Cedarの左側にある大きな黄褐色の家の私道に入ります。

誰かの家に行くためのヒューリスティックは次のとおりです。メールで送った最後の手紙を見つけます。帰りの住所にある町へ車で行きます。町に着いたら、家のどこにいるか尋ねてください。誰もが私たちを知っています。誰かが喜んであなたを助けてくれます。誰も見つからない場合は、公衆電話からお電話ください。

アルゴリズムとヒューリスティックの違いはわずかであり、2つの用語は多少重複しています。この本の目的上、2つの主な違いは、ソリューションからの間接参照のレベルです。アルゴリズムが直接指示を出します。ヒューリスティックは、自分自身の指示を発見する方法、または少なくともそれらを探す場所を示します。


アルゴリズムとヒューリスティックに違いがあると述べることは、鳥と鶏に違いがあると述べることに似ています。ヒューリスティックは一種のアルゴリズムです。
Joost、2016年

0

彼らは、発見された解の品質に関して何の保証もなく準最適に解を見つけます、それが発見的多項式のみの開発に意味があることは明白です。これらの方法の適用は、現実的な問題や大きな問題を解決するのに適しており、計算の観点から見て、多項式時間で近似解を見つけることができるアルゴリズムすらありません。

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