Prolog 最一般的统一体及其结果

Prolog 最一般的统一体及其结果,prolog,Prolog,我正在学习Prolog,正在努力确定最通用的统一体,并完成以下解决步骤,以获得由此产生的新目标术语列表。下面是我正在处理的一个例子。了解这里发生的事情的正确方法是什么 resolution([append([],B,B)], [append(X,Y, [1,2])] IIRC MGU是使两个术语相同的变量的替换 由于术语是递归数据结构,因此的直观算法可以在绑定变量时使用访问术语 在您的示例中,分辨率为2个列表,因此开始在堆栈中将它们推到一起。现在迭代,弹出顶部项对并应用,直到堆栈变为空-然后统

我正在学习Prolog,正在努力确定最通用的统一体,并完成以下解决步骤,以获得由此产生的新目标术语列表。下面是我正在处理的一个例子。了解这里发生的事情的正确方法是什么

resolution([append([],B,B)], [append(X,Y, [1,2])]

IIRC MGU是使两个术语相同的变量的替换

由于术语是递归数据结构,因此的直观算法可以在绑定变量时使用访问术语

在您的示例中,分辨率为2个列表,因此开始在堆栈中将它们推到一起。现在迭代,弹出顶部项对并应用,直到堆栈变为空-然后统一成功-或者它不能-然后失败


关键的观察结果是,堆栈中的每对元素之间都必须有标识。当然,逻辑变量在游戏中起着基础性的作用…

IIRC MGU是使两个术语相同的变量的替代

由于术语是递归数据结构,因此的直观算法可以在绑定变量时使用访问术语

在您的示例中,分辨率为2个列表,因此开始在堆栈中将它们推到一起。现在迭代,弹出顶部项对并应用,直到堆栈变为空-然后统一成功-或者它不能-然后失败


关键的观察结果是,堆栈中的每对元素之间都必须有标识。当然,逻辑变量在游戏中起着至关重要的作用……

你看过维基百科条目吗?事实上,我应该自己读。我没有,我会看一看。你看过维基百科的条目吗?事实上,我应该自己读一读,我没有读过,我会看一看。更具体地说,MGU是最普遍的替代品。fooB的MGU,Y=fooA,5将是{B/A,Y/5}'。但是像{B/3,a/3,Y/5}`这样的替换也会使这两个术语相同。它只是没有MGU那么普遍。更具体地说,MGU是最普遍的替代品。fooB的MGU,Y=fooA,5将是{B/A,Y/5}'。但是像{B/3,a/3,Y/5}`这样的替换也会使这两个术语相同。它只是没有MGU那么通用。