AIクラス体験パート2トピック検索


前の日、私は私がチュートリアルからの異なった検索アルゴリズム学習経験について話します.
検索のための問題は、迷路のパスの発見を使用すると、環境としてそれを考慮することができますエージェントは、迷路からのパスを見つけたいとしましょう.

深さ優先探索(DFS)と幅優先探索(BFS)


私が見る最初のアルゴリズムはDFSまたは深さの最初の検索です.これは、スタックのデータ構造を使用してすべての訪問したノードまたはパス/決定ポイントを格納するために使用しているので、それが戻って迷路の開始先から目的地までのパスを見つける前に、この方法で起動した先のポイントに戻ってくると、その後の行き止まりまで取得します.
#####B#
##### #
####  #
#### ##
     ##
A######
それはサンプル迷路であり、我々はこのようなパスを得たDFSを適用

黒人は壁であり、緑は終点であり、赤はエージェント、黄色のブロックはエージェントによる検索パスです.
私がそれをより複雑にするならば、それは単純な迷路です:
###                 #########
#   ###################   # #
# ####                # # # #
# ################### # # # #
#                     # # # #
##################### # # # #
#   ##                # # # #
# # ## ### ## ######### # # #
# #    #   ##B#         # # #
# # ## ################ # # #
### ##             #### # # #
### ############## ## # # # #
###             ##    # # # #
###### ######## ####### # # #
###### ####             #   #
A      ######################

今では赤いブロックがあるでしょう、それはDFSを使っているエージェントによって探検された経路です、そして、それは前の点に戻って来ます.

さて、ここでは194年のように少し高いパスコストという概念がありますが、BFSや幅優先探索を適用すると最適化できます.ここでDFSは終わりを得るまで深いところで働きますが、BFSは広い範囲からパスを探索するために行きます.
DFSをドリルとして比較することで、BFSの種類のタコを使用して、より多くの領域を作ることができます.

現在、問題ははるかに低コストで解決されます.しかし、いくつかの時点でBFSは十分ではありません.
私は、BFSとDFSがどのように働くかについて、ビデオを置きました.
 Dfs working
Bfs working
今、より最適化するために、私たちはAIで検索の2種類の探索を知っています.

  • 情報検索:我々はどこに環境についての情報があり、我々はより最適化された解決の問題を作るためにそれを使用することができます.
  • 例:私たちが目的地点座標とソース点座標を持っているならば、迷路問題は我々がそれらからの距離を得るために彼らを比較することができます.

  • 無知な検索:これは、エージェントが環境についての情報を持っていない場所を検索します.それはちょうど我々が情報を持ってどこに有用な目標を得るために探索する.以前はBFSとDFSの無知な検索例.
  • 貪欲な最初の検索:


    情報探索のために、我々は貪欲な最高の最初の検索またはGBFSを持っています、そこで、我々は発見的な機能H(n)によって決定されたエージェント位置と目的地経路の距離を得ることによって迷路の経路を捜します.その名前が示すように、関数は次のノードがどのようにゴールに近いかを見積もっていますが、それは間違っているかもしれません.欲張り最優先アルゴリズムの効率は,ヒューリスティック関数がどの程度良いかに依存する.たとえば、迷路では、アルゴリズムは、可能なノードと迷路の端の間のマンハッタン距離に依存するヒューリスティック関数を使用することができます.マンハッタンの距離は壁を無視し、どのように多くのステップをカウントダウン、またはそれが1つの場所からゴールの場所に得るためにかかる側面に.これは現在位置と目標位置の(x,y)座標に基づいて導出できる簡単な推定である.
    これは簡単です.f(n) = h(n)次のようないくつかのcomlication/欠点があります
  • それは最悪ケースのシナリオでは、導かれた深さの最初の探索として振る舞うことができます.
  • DFSとしてループで動けなくなる.
  • このアルゴリズムは最適ではない.
  • エーエーサーチ


    そこで、導かれていない経路問題を解決するために、評価関数を持つ同じヒューリスティック関数を使用する別の方法を学びます.
    これは*検索アルゴリズムと呼ばれます.
    これは、ソースから目的地までのH(n)距離とG(n)評価関数を使用して、パスのコストを取得します.
    彼は、現在の場所までそれを集めました.これらの両方の値を組み合わせることによって、アルゴリズムは、ソリューションのコストを決定し、外出先でその選択を最適化するより正確な方法を持っています.アルゴリズムは(今までのパスのコスト+目標への推定コスト)を追跡し、一度それはいくつかの以前のオプションの推定コストを超えて、アルゴリズムは、現在のパスを溝になり、以前のオプションに戻って、したがって、H(n)は間違いなくマークとしてマークされた長い、非効率的なパスを降りることから自分自身を防ぐことができます.
    また、また、このアルゴリズムは、ヒューリスティックに依存しているので、それはそれが採用ヒューリスティックと同じくらい良いです.いくつかの状況では、貪欲な最高の最初の検索または無知なアルゴリズムよりも効率的ではない可能性があります.A *探索が最適であるためには、ヒューリスティック関数h ( n )は次のようになります.
    真のコストを許容する、または決して過大評価しない
    一貫して、それは以前のノードからそれへの移行のコストに加えて新しいノードのゴールに対する推定パスコストが以前のノードのゴールに対する推定パスコストより大きいか等しいことを意味します.方程式形式にそれを入れるために、H(n)がステップN、H(N)を有する全てのノードNおよび後継ノードN 'の場合、一貫性がある≤ H(n ')+ C
    A *の視覚化.
    私はこの部分をここに置きました、そして、次の部分はすぐに来ます.
    探求を続ける、学び続ける.

    参照:

  • https://cs50.harvard.edu/ai/2020/
  • https://www.javatpoint.com/ai-informed-search-algorithms
  • ありがとう.