0

プロローグ初心者です。私は大学の AI コースに通っているので、高度な Prolog 機能を使用することはできません。単純な事実と非常に単純なルールだけです。

この 2 つの文を Prolog 句に変換するのに問題があります。

  1. すべての動物を愛する人は誰でも誰かに愛されています。
  2. 動物を殺す者は誰からも愛されません。

私はどういうわけか次のように2番目のものを書くことができました:

loves(X, Y) :- animal(A), \+killed(Y, A).

しかし、これについても、私はそれが完全に正しいとは確信していません.このルールは、動物を殺さなかった人は皆に愛されていることを示しています.

何か助けはありますか?

4

2 に答える 2

1

あなたは対偶を使って問題を書き直しました。良い。

  1. X が Y を愛しているということは、B が C を殺さなかったことを意味し、C は動物です。

しかし、あなたはそれを他のすべての条件の選言として表現しました。代わりに定義する必要があります

killed_no_animal(Y) :- forall(animal(A), \+killed(Y, A)).

そしてkilled_no_animal、他のすべての述語の必要条件として使用します。

loves(X, Y) :- killed_no_animal(Y), other predicate.
loves(X, Y) :- killed_no_animal(Y), other predicate.
于 2013-10-29T13:25:39.470 に答える