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|