Artificial intelligence 统一的应用?

Artificial intelligence 统一的应用?,artificial-intelligence,logic,predicate,unification,Artificial Intelligence,Logic,Predicate,Unification,什么是(实际)应用?它在现实世界中的实际应用在哪里 我无法完全理解它到底是关于什么的,以及为什么它被视为人工智能的一部分。例如,使用统一来查找满足规则的变量的值-参见示例。我认为这是逻辑编程语言中的一种典型技术,尽管我没有任何其他方面的经验。统一本质上是一个替换的过程。我见过一种叫做“双向匹配”的方法 在Prolog中,在其他逻辑编程语言和直接基于重写逻辑的语言中(,等…)是自由(逻辑)变量绑定到术语/值的机制。在并发Prolog中,这些变量被解释为通信通道 在我看来,更好的理解方法是通过数学中

什么是(实际)应用?它在现实世界中的实际应用在哪里


我无法完全理解它到底是关于什么的,以及为什么它被视为人工智能的一部分。

例如,使用统一来查找满足规则的变量的值-参见示例。我认为这是逻辑编程语言中的一种典型技术,尽管我没有任何其他方面的经验。

统一本质上是一个替换的过程。我见过一种叫做“双向匹配”的方法

在Prolog中,在其他逻辑编程语言和直接基于重写逻辑的语言中(,等…)是自由(逻辑)变量绑定到术语/值的机制。在并发Prolog中,这些变量被解释为通信通道

在我看来,更好的理解方法是通过数学中的一些例子(统一是/是一个基本的关键机制,例如,在自动化定理证明研究的背景下,这是人工智能的一个子领域;在中的另一个用途)。以下示例摘自以下内容:

第一个示例:

给定一个集合Q和它上的两个二进制运算*和+,那么*在+上是左分布的,如果:

X * (Y + Z)   =   (X * Y) + (X * Z)   |1|
这是一条重写规则(一组重写规则是一条规则)

如果我们想将此重写规则应用于特定案例,请说:

a * (1 + b)   |2|
我们(通过统一算法)统一这个术语| 2 |,左手边(lhs)为| 1 |,我们有这个(故意的琐碎)替换(最通用的统一器,mgu):

现在,将| 3 |应用于| 1 |的右侧(rhs),我们最终得到:

(a * 1) + (a * b)
这很简单,为了理解统一可以做什么,我将展示一个更复杂的例子

第二个示例:

鉴于此重写规则:

log(X,Y) + log(X,Z)   =>   log(X,Y*Z)   |4|
我们将其应用于这个等式:

log(e,(x+1)) + log(e,(x-1)) = k   |5|
(5的lhs统一为4的lhs),所以我们有这个mgu:

请注意,X和X是两个不同的变量。这里我们有两个变量,X和Y,它们匹配两个,(X+1)和(X-1),而不是简单的值或变量

我们把这个mgu,6,应用到4的rhs,然后把它放回5;因此,我们:

log(e,(x+1)*(x-1)) = k   |7|
等等


(希望我没有犯任何错误,否则这可能会让新手更加困惑。)

统一是一个关键机制。实际上,在这种情况下,统一将大大减少手指的磨损。

统一就像模式匹配,将两个结构摩擦在一起,其中一个结构中的变量允许与另一个结构中的值匹配

最简单的统一形式发生在用普通语言调用函数时。调用者有参数,被调用者有参数。参数“绑定”到参数,这将生成函数的实例化

另一种简单的统一形式是,当您使用正则表达式进行匹配时,例如在命令提示下,您可能会说
dir x*y*.z*
,这将匹配一些但不是所有的文件名

人工智能喜欢利用推理机,试图从知识库中模拟推理,通常以逻辑语句的形式。举一个愚蠢的例子,你可能“知道”所有的人都是凡人,比如在
forall(x)(man(x)暗指凡人(x))
。然后,如果你问一个问题“山姆是凡人吗”作为
凡人(山姆)?
,你可以把这个问题与规则统一起来,得到一个新的问题“山姆是人吗”
人(山姆)?

希望这能有所帮助。

理解它(对我来说)很困难。我的意思是,Prolog。我认为每个人都很难理解它——至少在你习惯了逻辑编程思维之前是这样。这与C语言家族非常不同。
{X/e, Y/(x+1), Z/(x-1)}   |6|
log(e,(x+1)*(x-1)) = k   |7|