-
18-09-2019 - |
题
什么是统一的(实际)的应用程序?它实际上是被在现实世界中使用?
我不明白的是关于什么的,为什么它被视为人工智能的一部分的整体思路。
解决方案
统实质上的取代强>的处理。我已经看到了被称为“双向匹配”。
在Prolog中,在其它逻辑编程语言和语言文字直接基于重写逻辑(莫德 ,伊兰时,等等)是通过其游离的(逻辑)的变量是结合方面机构/值。在并行的Prolog这些变量被解释为通信信道。
IMO,更好的方式来理解它是从数学一些实例中(统一是/是一个基本密钥机制,例如,在自动定理证明研究,AI的子字段中的上下文;在另一种使用类型推理算法的)。随后从计算机代数系统(CAS):
<强>第一示例:强>
给定一组Q和两个二进制运算*和+它,然后*是左分配超过+,如果:
X * (Y + Z) = (X * Y) + (X * Z) |1|
这是一个重写规则(一组的重写规则是 重写系统 )。
如果我们想这个重写规则适用于特定的情况下,说:
a * (1 + b) |2|
我们的统一强>(经由统一算法)这个术语,| 2 |,与左侧( LHS )的| 1 |我们有此(琐碎故意)取代(的最通用的合一, MGU ):
{X/a, Y/1, Z/b} |3|
现在,应用| 3 |到右手侧( RHS )的| 1 |,我们有,终于:
(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|
(的 LHS | 5 |统一到 LHS 的| 4 |),因此我们有此 MGU :
{X/e, Y/(x+1), Z/(x-1)} |6|
请注意X和x是两个不同的变量。在这里,我们有两个变量,X和Y,匹配其中两个 复合术语 时,(X + 1)和(x-1),而不是简单的值或变量。
我们应用此 MGU ,| 6 |,至 RHS 的| 4 |然后我们把这个背在| 5 |;因此,我们有:
log(e,(x+1)*(x-1)) = k |7|
等。
(希望没任何错误或者这可以迷惑新手甚至更多。)
其他提示
统是在类型推断的关键机制。实事求是地讲,统一在这种情况下会大大降低你的手指上的磨损。
统是一样的模式匹配,在此揉在一起的两个结构,其中在一个变量被允许在其他匹配的值。
统一的最简单形式,只要您拨打一个正常的语言功能发生。呼叫者有争论,而被叫方参数。的参数“结合到”的参数,和产生该函数的一个实例。
统的另一种简单的形式是,当您使用匹配正则表达式,例如在命令提示你可能会说dir x*y*.z*
将匹配一些但不是所有的文件名。
人工智能喜欢让推理引擎的使用,要尽量从知识的语料库模拟推理,通常在一个逻辑语句的形式。要挑选一个愚蠢的例子,你可能“知道”“凡人皆有死”,如forall(x)(man(x) implies mortal(x))
。然后,如果你问一个问题:“是山姆凡人”为mortal(Sam)?
,你可以统一与规则得到一个新的问题:“萨姆是一个人” man(Sam)?
希望有所帮助。