人工知能.com

人工知能と検索アルゴリズム

検索アルゴリズム

検索は、AIにおける問題解決の最も基本的な技術です。タイルゲーム、数独、クロスワードなど、いくつかのシングルプレイヤーゲームがあります。検索アルゴリズムは、そのようなゲームの特定の位置を検索するのに役立ちます。

3X3の8タイル、4X4の15タイル、5X5のタイルパズルなどのゲームは、経路探索です。それらは空白のタイルのタイルのマトリックスで構成されています。プレイヤーは何らかの目的を達成するためにタイルを垂直または水平に空白スペースにスライドさせることによってタイルを配置する必要があります。

単一エージェントの経路探索の問題の他の例は、トラベリングセールスマン問題、ルービックキューブ、定理証明です。

  • 問題空間 - 検索が行われる環境です。(状態の集合とそれらの状態を変更する演算子の集合)

  • 問題インスタンス - 初期状態&プラスです。目標状態。

  • 問題空間グラフ - 問題の状態を表します。 状態はノードによって示され、演算子はエッジによって示される。

  • 問題の深さ - 最短経路の長さ、または最短シーケンスのオペレーターの初期状態から目標状態への長さ。

  • Space Complexity - メモリに格納されているノードの最大数。

  • Time Complexity - 作成されるノードの最大数。

  • Admissibility - 常に最適な解決策を見つけるためのアルゴリズムの特性。

  • Branching Factor - 問題空間グラフ内の子ノードの平均数。

  • Depth - 初期状態からゴール状態までの最短経路の長さ。

ブルートフォース検索戦略

彼らはドメイン特有の知識を必要としないので、最もシンプルです。 彼らは少数の可能な状態で正常に動作します。

要件 -

  • 状態の説明
  • 有効な演算子のセット
  • 初期状態
  • 目標状態の説明

幅広い検索

それはルートノードから始まり、まず近隣ノードを探索し、次のレベルの隣人に向かって移動する。 解が見つかるまで、一度に1つのツリーを生成します。 これは、FIFO待ち行列データ構造を使用して実装することができる。 このメソッドは、ソリューションへの最短パスを提供します。

分岐因子 (所与のノードの子ノードの平均数)= bおよび深度= dである場合、レベルd = b dのノードの数。

最悪の場合に生成されるノードの総数は、b + b 2 + b 3 + ... + b dである 。

短所 - ノードの各レベルは、次のノードを作成するために保存されるため、多くのメモリスペースを消費します。 ノードを格納するためのスペース要件は指数関数的です。

その複雑さは、ノードの数に依存します。 重複したノードをチェックできます。

深さ優先検索

これは、LIFOスタックデータ構造を持つ再帰で実装されています。 これは、幅広い優先メソッドと同じノードセットを、異なる順序でのみ作成します。

単一パス上のノードは、ルートからリーフノードまでの各繰り返しに格納されるため、ノードを格納するためのスペース要件は線形です。 分岐ファクタbおよび深さをmとすると、記憶空間はbmである。

欠点 - このアルゴリズムは終了せず、1つの経路上で無限に進むことができます。 この問題の解決策は、カットオフの深さを選択することです。 理想的なカットオフがdであり、選択されたカットオフがdより小さい場合、このアルゴリズムは失敗する可能性がある。 選択されたカットオフがdより大きい場合、実行時間が長くなります。

その複雑さはパスの数に依存します。 重複したノードをチェックすることはできません。

双方向検索

初期状態から目標状態から前方に検索し、両方が一致して共通状態を識別する。

初期状態からの経路は、目標状態からの逆経路と連結される。 各検索は、全パスの半分までしか行われません。

統一コスト検索

ソートは、ノードへのパスのコストが高まることで行われます。 常に最小コストのノードを展開します。 各遷移に同じコストがある場合は、幅優先検索と同じです。

コストの高い順に経路を探索します。

短所 - コストがC *以下の複数の長いパスが存在する可能性があります。 統一原価検索はそれらすべてを探索する必要があります。

反復深度深度優先探索

それは、レベル1への深さ優先探索を行い、最初から始めてレベル2への完全な検索を実行し、解決が見つかるまでそのように継続します。

すべての下位ノードが生成されるまでノードを作成しません。 ノードのスタックを保存するだけです。 アルゴリズムは、深さdの解を見つけると終了する。 深さdで作成されるノードの数はb dであり、深さd-1でのノードの数はb d-1である。

ヒューリスティック評価関数

彼らは、2つの状態間の最適経路のコストを計算する。 スライディングタイルゲームのヒューリスティック関数は、各タイルが目標状態から作る移動回数をカウントし、これらの移動回数をすべてのタイルに加算することによって計算されます。

純ヒューリスティック検索

ノードはヒューリスティックな値の順に展開されます。 すでに展開されているノードの閉じたリストと、作成されているが展開されていないノードの開いたリストの2つのリストが作成されます。

各反復では、最小ヒューリスティック値を持つノードが展開され、そのすべての子ノードが作成され、閉じられたリストに配置されます。 次に、ヒューリスティック関数が子ノードに適用され、それらはヒューリスティックな値に従ってオープンリストに置かれます。 短いパスは保存され、長いパスは保存されます。

A *検索

これは、ベストファースト検索の最もよく知られている形式です。 すでに高価なパスを拡張するのを防ぎますが、最も有望なパスを最初に拡張します。

f(n)= g(n)+ h(n)、ここで

  • g(n)ノードに到達するためのコスト(これまでのところ)

  • h(n)ノードからゴールまでの推定コスト

  • f(n)nから目標までのパスの推定総コスト。 これは、f(n)を増やすことによって優先度キューを使用して実装されます。

欲張りのベストファーストサーチ

それは、目標に最も近いと推定されるノードを拡張する。 f(n)= h(n)に基づいてノードを展開する。 優先度キューを使用して実装されます。

短所 - ループに詰まる可能性があります。 最適ではありません。

ローカル検索アルゴリズム

それらは将来のソリューションから開始し、次に近隣のソリューションに移動します。 彼らは終了する前にいつでも中断されても、有効な解決策を返すことができます。

ヒルクライミング検索

これは反復的アルゴリズムであり、問​​題の任意の解で始まり、解の単一要素を徐々に変更することによってより良い解を見つけようとします。 変更によってより良い解決策が生まれる場合は、新しい解決策として漸進的な変更が行われます。 このプロセスは、それ以上の改善がなくなるまで繰り返されます。







inserted by FC2 system