1

私はPrologの初心者ですが、まったく理解できない質問に出くわしました。ここに質問があります:

朝起きてドレスアップが必要なときは、次の図のルールに従います。つまり、右の靴を履く前に、ズボンや右の靴下などを履く必要があります。図に矢印は表示していません。ノードaとbの間に線がある場合、図のaの上にbがある場合は、aからbの方向に向いていると思います。したがって、私の図は、以前は関係の有向グラフとして扱うことができます。

http://dropcanvas.com/4j5z7/2

ハッセ図を表す事実の知識ベースを作成します。before / 2の述語を使用します(この表記はPrologの文献で受け入れられており、beforeの述語に2つの引数があることを意味します)。

4

1 に答える 1

3

1つのエンコーディングは次のようになります。

before(ItemA, ListOfAllItemsYouHaveToWearBeforeItemA).

またbefore(ListOfAllItemsYouHaveToWearBeforeItemA,ItemA).

(最初の方が良いと思います)

だからあなたは正しい靴のために書くだろう

before(right_shoe,[right_sock,pants]).

別の可能なエンコーディングはbefore(ItemA,ItemYouHaveToWearBeforeItemA).(または逆)です。その場合、次のように書く必要があります。

before(right_shoe,right_sock).
before(right_show,pants).

エンコーディングの選択は、次に何をしたい/何をする必要があるか(または他の運動要件)によって異なります。たとえば、最初のエンコーディングは1つのアイテムの要件を取得する場合に適していますが、2番目のエンコーディングは、アイテムの前に何を着るべきかだけでなく、アイテムの後に何を着ることができるかを尋ねる場合に適しています。

グラフを表現するだけの場合は、両方の引数が同じタイプ(グラフ項目)であり、グラフをより直接的に表現するため、2番目のエンコードを使用します。

于 2012-05-28T18:48:12.427 に答える