Prolog:如何编写图表

时间:2012-05-28 18:31:03

标签: prolog

我是Prolog的初学者,我遇到了一个我根本无法理解的问题。这是一个问题:

当我早上起床并需要打扮时,我遵循了说明的规则 下图。 这意味着在穿上我的右鞋之前,我需要穿上我的裤子和我的右袜子,然后 等等。我没有在图表上显示箭头 - 如果节点a和b之间有一条线我假设 它从a到b定向,如果f在图中高于a。因此,在我之前,我的数字可以被视为关系的有向图。

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

创建代表Hasse图的事实知识库。在/ 2之前使用谓词 (这个符号在Prolog文献中被接受,意味着之前的谓词有两个论点)。

1 个答案:

答案 0 :(得分:3)

一个编码是:

before(ItemA, ListOfAllItemsYouHaveToWearBeforeItemA).

before(ListOfAllItemsYouHaveToWearBeforeItemA,ItemA).

(我认为第一个更好)

所以对于合适的鞋你会写

before(right_shoe,[right_sock,pants]).

另一种可能的编码是before(ItemA,ItemYouHaveToWearBeforeItemA).(或反向)。 在这种情况下,你必须写一些像:

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

编码的选择取决于您下一步想要/需要做什么(或任何其他练习要求)。 例如,如果你想要获得一件物品的要求,第一次编码会更好,而如果你不仅想要在物品之前询问你应该穿什么,而且想要在物品之后穿什么,那么第二种编码会更好。

如果我只是要表示图形,我将使用第二个编码,因为两个参数具有相同的类型(图形项),并且它是图形的更直接表示