0

候補句を解決するときに空のセットを取得しようとする解決アルゴリズムを実装したいと考えています。

候補の親句を幅優先の順序で解決するアルゴリズムが必要です。しかし、私はある時点で混乱しました:

S を知識ベースのすべての節とゴール節の否定の結合とする

S の候補句を S の候補句で解決しようとすると、S' が得られます。

アルゴリズムの 2 番目のステップとして、S と S' または S' を S' 自体で解決しようとする必要がありますか? そしてそれはどのように進めるべきですか?

例えば;

知識ベース + 否定を仮定します。ゴールセットの

p(a,b) ^ q(z),~p(z,b) ^ ~q(y) ((この集合を S としましょう)

セット S で解決アルゴリズムを実行すると、次のような節が得られます。

q(a) ^ ~p(z,b) (この集合を S' としましょう)

さて、BFS 戦略を採用しなければならない場合、最初の親が S にあり、2 番目の親が S' にあるリゾルベントを最初に見つける必要がありますか? または、両親が両方ともS'出身の解決者を確認してみてください。

いくつかの例では、最初に S' と S' で解決策を確認すると、解決策が得られます。ただし、セットのペア (S, S') (S, (S, S')) のチェックを続行すると、空の句につながる別の方法が得られます。では、BFS に対応するのはどの順序でしょうか?

前もって感謝します

4

1 に答える 1

1

ここでは、次のように述べられています。

すべての第1レベルの分解方程式が最初に計算され、次に第2レベルの分解方程式が計算されます。第1レベルのレゾルベントは、基本セットの2つの句の間の1つです。i番目のレベルのレゾルベントは、最も深い親が(i-1)番目のレベルのレゾルベントであるものです。

そしてここに:

  • レベル0の節は、元の公理と目標の否定です。
  • レベルk句は、2つの句から計算された分解方程式であり、一方はレベルk-1から、もう一方はそれ以前のレベルからのものである必要があります。

これらの声明と私のコメントから私が意味することは次のとおりです。

  • レベル0は、元の条項と目標の否定で構成されます。このセットをXとします。
  • レベル1は、唯一の可能な候補である(X、X)の解決で構成されます。このセットをYとします。
  • レベル2は、(Y、X)と(Y、Y)の解像度で構成されます。

等々。

私の説明は2番目のステートメントを適用します。実際には、不要なすべてのレベルで同じセットを解決することを除いて、最初の結果と同じ結果が得られます。幅優先戦略はすでに非常に非効率的であり、間違ったアプローチはそれをさらに悪化させます。

これであなたの質問が明確になることを願っています。

于 2012-12-28T08:55:54.953 に答える