1

以前の質問の回答とコメントを読んでいて、Bratko (人工知能のプロローグ プログラミング、p. 130) の例に与えられた説明を適用しようとしましたが、完全に理解しているかどうかはわかりません。以下に例を示します。

ブラットコ p.  130

ツリーとコードを次のように読みました。

目標リストでは、C :- P, Q, R, !, S, T, U.Prolog は通常どおり変数を 1 つずつインスタンス化して、最終的に に到達しようとしますtrue.Pとの値が見つかりQ、最初の試行がR失敗した場合、Prolog はPとが見つかったケースに戻り、可能であればQ別のオプションを試すことができます。Rただし、 もR見つかって ( につながるP, Q, R = true.)、!いつものように成功した場合は、選択ポイントを破棄し、その時点から ( さえも) 戻るものは何もありませんC :- V.。これが意味することは、 の結果が見つからない場合S、ゴールC :- P, Q, R, !, S, T, U.はすぐに失敗するということです。しかし、 PrologはまだバックトラックできますA :- B, C, D.の他の値を見つけるB。に別の一致が見つかった場合はBCもう一度再試行されます。等々。

私の解釈が正しいと仮定すると、C :- P, Q, R, !, S, T, U.の値に関係なく目標が成功または失敗した場合B、どのように効率を改善しますか? 私の推測では、 のように書き直しA :- B, C, D.ますA :- B, !, C, D

私の解釈は正しいですか?そして、いくつかの先験的な情報が与えられた場合、効率の改善についてはCどうですか?

4

1 に答える 1