web-dev-qa-db-ja.com

均一コスト検索とベストファースト検索の違いは何ですか?

どちらの方法にも、拡張するノード(およびそのコスト)を保持するデータ構造があります。どちらの方法でも、最初に最適なコストでノードを拡張します。それで、それらの違いは何ですか?

均一コスト検索はブラインド方式であり、ベストファースト検索はそうではないと言われたため、さらに混乱しました(ノードコストに関する情報があるかどうか)。

12
T.Poe

違いは ヒューリスティック 関数にあります。

均一コスト検索はunformed検索です。ドメインの知識は使用しません。最小コストのノードを拡張し、目標に関する情報が提供されないため、あらゆる方向に拡張します。これは関数f(n) = g(n)として見ることができます。ここでg(n)はパスコストです(「パスコスト」自体は、パフォーマンス測定に関してパスに数値コストを割り当てる関数です。キロメートル単位の距離、または移動回数など)。ノードに到達するためのコストですn

Best-first search isinformedsearch:ヒューリスティック関数を使用して、現在の状態が目標にどれだけ近いかを推定します(ゴール?)。したがって、コスト関数f(n) = g(n)は、nから目標までのコストであるh(n)(そのコストを推定するヒューリスティック関数)と組み合わされて、f(n) = g(n) + h(n)が得られます。ベストファースト検索アルゴリズムの例は、A *アルゴリズムです。

はい、どちらの方法にも展開されたノードのリストがありますが、ベストファースト検索はその展開されたノードの数を最小化しようとします(パスコスト+ヒューリスティック関数) 。

17
Ivan Sivak

ここで少し誤解があります。均一コスト検索、最適な最初の検索、およびA *検索アルゴリズムはすべて異なるアルゴリズムです。 均一コストは、Best FirstおよびA *検索アルゴリズムは、情報に基づいた検索アルゴリズムです。インフォームドとは、ヒューリスティック関数を使用して、展開するノードを決定することを意味します。最適な最初の検索とA *の違いは、最適な最初はf(n) = h(n)を使用して展開し、A *はf(n) = g(n)+h(n)を使用して拡張ノードを選択することです。 h(n)はヒューリスティック関数です。 g(n)は、開始ノードからノードnまでの実際のコストです。

https://www.cs.utexas.edu/~mooney/cs343/slide-handouts/heuristic-search.4.pdf 詳細はこちらをご覧ください。

5
jumper

違いは次のとおりです。

  • 均一コスト検索(UCS)は、パスコストが最小(つまり、g(n)が最小)のノードを展開しますが、ベストファースト検索(BFS)は、目標に最も近いノードを展開します

  • UCSはヒューリスティック関数を処理できませんが、BFSはヒューリスティック関数を処理できます

  • UCSでは、f(n) = g(n)、BFSでは、f(n) = g(n) + h(n)。

1
rashedcs

均一コスト検索は、最も低い距離の未訪問ノードを選択し、それを経由して各未訪問ネイバーまでの距離を計算し、より小さい場合はネイバーの距離を更新します。

ベストファースト検索は、パスの最後(パスの最後のノード)が目標ノードにどれだけ近いかを予測しようとするヒューリスティックベースのアルゴリズムであるため、ソリューションに近いと判断されるパスが展開されます。最初。

1
Jianqiang Chen