最通用的统一符(Prolog)

问题描述 投票:0回答:2

有一个关于 prolog 中 m.g.u(最通用的统一符)的快速问题。

我们被问到 m.g.u 是什么:

f(X, g(Y, h(Z))) = f(Z, g(P, h(a))).

有 2 个可能的答案

1. θ = {X/Z,Y/P,Z/a}.
2. θ = {X/a,Y/P,Z/a}.

我认为第二个答案是最通用的统一词,但是,第一个答案似乎是正确的。

我尝试了两种替换,它们都产生了相同的结果,但是第二个答案是替换较少,这就是为什么我认为这是 m.g.u

如有任何帮助,我们将不胜感激,谢谢!

   +-----------X
   |
   |     +-----Y
   |     |
f--+--g--+
         |
         +--h--Z
         
         
   +-----------Z
   |
   |     +-----P
   |     |
f--+--g--+
         |
         +--h--a
prolog unification
2个回答
2
投票

mgu 的定义是不存在分解 θ = λτ,其中 λ,τ 是不平凡的(不是恒等式,新引入的变量的名称并不重要)。存在 1 的替换会导致 2(如果您没有找到,我可以稍后编辑解决方案),因此 2 不能是最通用的替换。

还有一个警告:如果您将

θ = {X/Z,Y/P,Z/a}
应用于
X
,您最终会得到
Z
,而不是
a
。替换总是同时发生。


0
投票

这是我教授在 MGU 上的练习示例。她的经验法则是 MGU 必须在左侧具有变量,在右侧具有常量(或值或函数)。你可以看看这个来多练习。

所以根据她的回答,我会说数字 2 是正确的。

mgu_examples

© www.soinside.com 2019 - 2024. All rights reserved.