根据文档,描述图:
“图表”是一个状态转换图,显示您可以从任何其他给定状态进入哪些可能的状态,从 state(w,w,w,w) 作为初始状态开始。如何确定转换是通过考虑所描述问题的逻辑来确定的。如果您为问题设置了所有正确的 Prolog 规则,则可以在 Prolog 中自动生成这样的图,或者可以手动生成它以帮助确定您希望如何编写规则。该文档没有确切说明他们是如何生成它的,但他们只是说它是对可能的状态转换的部分描述,而不考虑任何给定状态是否“安全”,这意味着该图表包含一些您可以希望您的 Prolog 解决方案能够排除。鉴于它在文档和上下文中的位置,我相信它是手动生成的,有助于为 Prolog 程序提出合理的数据表示和设计。
举个例子,初始状态是所有 4 个东西(农夫、狼、山羊、卷心菜)都在西岸。那是状态state(w,w,w,w) 分别代表 F、W、G、C 的位置。可能的状态是,一个动作就可以带你离开那里,因为农民一次最多只能带一件物品过河:
West East State
---- ---- -----
G, C F, W state(e, e, w, w)
W, C F, G state(e, w, e, w)
W, G F, C state(e, w, w, e)
W, G, C F state(e, w, w, w)
这是通过考虑规则和可能的选择来解决的。在上述每个新州中,农民要么带着一件物品过河,要么什么都没带过。这是4个可能的动作。图中的箭头指示您可以转换到哪些状态。所以该图表明状态转换是自反的(也就是说,如果你从状态 A 到状态 B,你也可以从 B 到 A)。
再举个例子,当state(e, e, w, w):
West East State
---- ---- -----
G, C F, W state(e, e, w, w)
从这里开始,只有两种可能的动作:农夫带狼过河(回到state(w, w, w, w),或者农夫自己过河,即state(w, e, w, w)并且是状态转换图中显示的内容。