我从人工智能中经典的农夫狼山羊白菜问题中得到了这个启示
教科书说,当农夫和狼在河的对面时,这条规则就会起作用。我无法理解“如果暗示的一部分”
这是什么意思?
谓词move/2
采用state/4 in
order 形式的参数来实现问题的状态。在美国,第一个参数用于农民,第二个用于狼,第三个用于山羊,第四个用于卷心菜。状态的每个参数变量都应该得到值 e(对于东)或 w(对于西)。
为了解决这个问题,您可以定义move(state(F1,W1,G1,C1),state(F2,W2,G2,C2)):-...
类似于图中从句形式的从句。
图片中显示的谓词用于当农民和狼都在同一侧时,因此在输入状态下,两个第一个变量是共同的(state(X,X,G,C))
并且想要在相反的一侧移动,所以将去state(Y,Y,G,C)
哪里opp(X,Y)
是真的,这意味着如果 X 是 e,那么farmer 和 wold 都会移动到 w,反之亦然。上面的动作是有效的,因为你已经实现了之前的动作,农夫和狼不能在同一侧,同时山羊和卷心菜也在同一侧(山羊会吃卷心菜),所以前面的动作序列因为它是有效的,农夫和狼可以在同一侧,卷心菜和山羊将在相反的一侧。