greedyベストファースト検索アルゴリズムはベストファースト検索アルゴリズムと異なりますか?
wikiページ には、貪欲なBFSに関する別の段落がありますが、少し不明確です。
私の理解では、貪欲BFSはWikipediaのアルゴリズムの「OPENからの最適なノード」がノードに対して計算するヒューリスティック関数である場合の単なるBFSであるということです。だからこれを実装する:
OPEN = [initial state]
CLOSED = []
while OPEN is not empty
do
1. Remove the best node from OPEN, call it n, add it to CLOSED.
2. If n is the goal state, backtrace path to n (through recorded parents) and return path.
3. Create n's successors.
4. For each successor do:
a. If it is not in CLOSED: evaluate it, add it to OPEN, and record its parent.
b. Otherwise: change recorded parent if this new path is better than previous one.
done
「OPENからの最適なノード」は、ノードが目標にどれだけ近いかを推定するヒューリスティック関数であり、実際には貪欲なBFSです。私は正しいですか?
編集:匿名の回答にコメント:
したがって、基本的に貪欲なBFSは「OPENリスト」を必要とせず、現在のノードのみに基づいて決定を行う必要がありますか?このアルゴリズムはGBFSですか?
1. Set START as CURRENT node
2. Add CURRENT to Path [and optinally, to CLOSED?]
3. If CURRENT is GOAL, exit
4. Evaluate CURRENT's successors
5. Set BEST successor as CURRENT and go to 2.
「ベストファースト」は改訂の決定を可能にしますが、貪欲なアルゴリズムでは、決定は最終的なものであり、改訂されるべきではありません。
たとえば、A * -searchはベストファーストサーチですが、貪欲ではありません。
ただし、これらの用語が常に同じ定義で使用されるわけではないことに注意してください。 「グリーディ」とは通常、決定が修正されることはなく、最終的には実行時間の改善という利点を生かして次善のソリューションを受け入れることを意味します。ただし、「ベストファースト+デプスファースト」の組み合わせに「貪欲」が使用されている状況は、「行き止まりに到達するまで次のベストステップを拡大してから、前のステップに戻って続行する」のようになるでしょう。そこに次善のもの」(私は「優先順位付けされた深さ」を最初に呼びます)。
また、それはあなたが話している抽象化のレベルにも依存します。 A *は「パスの構築」に貪欲ではありません。オープンパスの大きなセットを保持することで問題ありません。しかし、それは真の最短経路に向かって「探索空間を拡大する」ことに貪欲です。
BFSは tree searchおよびgraph searchのインスタンスですアルゴリズム 評価関数f(n) = g(n) + h(n)
に基づいてノードが展開用に選択されます。ここで、g(n)
はルートからn
へのパスの長さであり、h(n)
は、n
からゴールノードまでのパスの長さの推定値です。 BFSアルゴリズムでは、評価が最も低い(つまり、f(n)
が最も低い)ノードが拡張用に選択されます。
貪欲なBFSは、次の評価関数f(n) = h(n)
を使用します。これは、ヒューリスティック関数h(n)
であり、n
の目標への近さを推定します。したがって、貪欲なBFSは、以前に収集された知識(つまりg(n)
)を考慮せずに、目標に最も近いと考えられるノードを拡張しようとします。
要約すると、これらの(類似した)検索方法の主な違いは評価関数です。
補足として、A *アルゴリズムはベストファーストサーチアルゴリズムであり、ヒューリスティック関数h
は許容ヒューリスティックです(つまり、h
は常に完全なヒューリスティック関数h*
の過小評価です)、すべてのn
)。 A *は、評価関数がf(n) = g(n) + h(n)
であるため、gredy BFSアルゴリズムではありません。
私が理解している限り、「ベストファースト検索」は、ヒューリスティック評価関数h(n)を使用する特定の検索手法の総称にすぎません。したがって、A *と貪欲な最優先検索は、このカテゴリに分類されるアルゴリズムです。