1. 序章

このチュートリアルでは、ヒューリスティックとアルゴリズムについて説明します。これらは、問題解決、学習、および意思決定で使用されるコンピューターサイエンスの概念です。 まず、各用語の詳細な定義を示します。 次に、いくつかの例を見ていきます。 最後に、それらの主な違いを強調します。

2. ヒューリスティックとは何ですか?

経験則いつもの問題解決のための技術を指します。 これらは、従来のアプローチに時間がかかる場合や、従来のアプローチでは適切な解決策が見つからない場合に使用されます。 。 言い換えれば、は、探索、直感、場合によっては知識に基づいた推測を通じて、問題の適切な解決策をすばやく取得できるようにします。

そのため、ヒューリスティックは、問題に対する可能な解決策を探すことから始まります。 最初のステップは、ソリューションスペースを検索して、ソリューションが配置される可能性のある領域を見つけることです。 次に、解決策の検索はこの領域に焦点を合わせます。

ここでの目標は、問題に対する許容可能な解決策をタイムリーに取得することです。 結果として、得られた解は必ずしも最良または最も正確な解ではありません。 これは、精度と速度のトレードオフとして知られています

精度と速度のトレードオフに加えて、次のような考慮すべき点が他にもあります。

  • 完全性–考えられるすべての解決策が見つかりましたか?
  • 最適性–ソリューションは最良のソリューションですか?

さらに、問題を解決するために使用される方法論は多くの場合、直感と調査に基づいているため、ヒューリスティックを数学的に証明することはできません。 したがって、他のユーザーが複製することはできず、常に同じ結果が得られるとは限りません。

3. ヒューリスティックのアプリケーション

ヒューリスティックは、タイムリーに解決策を見つけるため、魅力的です。 したがって、それらは最適化問題やアルゴリズムでの使用に適しています。 これをよりよく理解するために、いくつかの例について説明しましょう。

3.1. 巡回セールスマン問題

巡回セールスマン問題(TSP)は、ノードのセット間の最適なルートを見つけることを目的とする最適化問題です。 問題は、一連の都市(ノード)とこれらの都市間の距離を考えると、各都市を訪れる最短ルートはどれかということです。

TSP問題は解決が難しく、NP困難として分類されることがよくあります。 言い換えれば、それは複雑で検証が困難です。 ただし、ヒューリスティックは、ここですべての都市への最適なルートを概算するのに役立ちます。

3.2. 欲張りアルゴリズム

欲張りアルゴリズムは、問題を解決する各段階で局所的に最適な解を見つけようとします。 明確にするために、ローカルで最適なソリューションのセットが最終的にグローバルに最適なソリューションにつながる可能性があるという仮定があります。 したがって、これらは、先ほど説明したTSP問題に適用されることがよくあります。

3.3. ウイルス対策ソフト 

ウイルスをスキャンする場合、ヒューリスティックを使用して、ファイル内のウイルスに類似したコードのサンプルを検索します。 これにより、ウイルスを検索する必要のあるファイルの数が大幅に削減されます。

ヒューリスティックのいくつかの追加のアプリケーションには、検索、シミュレーテッドアニーリング、および山登り法が含まれます。

4. アルゴリズムとは何ですか?

対照的に、アルゴリズムは、問題を解決したり、特定のタスクを完了したりするためのルールまたは手順の正確なセットです。 アルゴリズムは直感や推測に依存するのではなく、解決策を得るための指示を提供します。 したがって、アルゴリズムは、与えられた一連のルールが最終的に正しい答えにつながることを保証します。

アルゴリズムは通常、開始点と既知の終了点を持つ一連のステップで構成されます。 たとえば、3つの数値を加算するアルゴリズムについて考えてみます。 まず、3つの数値に加算演算子を適用することから始めます。 その結果、3つの数値すべての合計である値が得られます。

アルゴリズムは通常、プログラミング言語、擬似コード、またはフローチャートの3つの方法のいずれかで表されます。 さらに、それらがどのように答えを生成するかを示すために数学的に証明することができます。 この特性により、ほとんどのアルゴリズムは他のユーザーが複製できます。

5. アルゴリズムの応用

アルゴリズムは正確であるため、コンピュータサイエンスのさまざまな分野での使用に適しています。 これらは、特定の入力セットから出力を生成するために使用されます。 これらのアプリケーションのいくつかを確認してみましょう。

5.1. 探す

検索アルゴリズムは、通常、データ構造から、または検索スペース内でデータ要素を取得するために使用されます。 検索に使用されるアプローチが異なることに注意することが重要です。 たとえば、線形検索は一度に各要素をスキャンしますが、二分探索は検索範囲を半分に分割し、中央の値から開始します。

5.2. 並べ替え

並べ替えアルゴリズムは、要素の順序付けまたは配置に使用されます。 たとえば、要素は昇順または降順で配置できます。 具体的には、入力としてソートされていない要素のリストが与えられると、ソートアルゴリズムは要素を配置し、指定された順序に従ってソートされたリストを返します。 いくつかの例には、クイックソート選択ソート、およびヒープソートが含まれます。

5.3. 暗号化

暗号化では、メッセージの認証、暗号化、および復号化にアルゴリズムが使用されます。 データやリソースへの不正アクセスを防ぎます。 これらの例としては、対称および非対称鍵アルゴリズムがあります。

5.4. 人工知能

人工知能では、アルゴリズムを使用してコンピュータープログラムをトレーニングしたり、機械に自分で学習して機能する方法を教えたりします。 人工知能のアルゴリズムのいくつかのクラスは、教師なし、教師なし、および強化学習アルゴリズムです。

6. ヒューリスティックとアルゴリズムの違いを理解していますか?

ヒューリスティックは、問題の解決方法を説明するという意味でアルゴリズムにもなり得ることに注意することが重要です。 ただし、主な違いは次のようにまとめることができます。

7. 結論

この記事では、ヒューリスティックとアルゴリズムについて説明しました。 それらがどのように機能するかを調査し、それらが使用されている場所の例をリストしました。 最後に、2つの概念の主な違いを強調しました。