[农业专家系统和PROLOG语言]Nyzzxt6.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[农业专家系统和PROLOG语言]Nyzzxt6.ppt

第十节 联合(合一) 匹配是prolog最基本最重要的机制之一, 也是prolog的智能特性之一。匹配是项(事实)的最重要的运算。匹配是在项与项之间进行的。 项(事实)的匹配机制一方面因问题求解(询问)由prolog系统内部产生, 另一方面也可以通过prolog所提供的相等比较进行。这种相等比较的实质就是按照匹配规则对两端的事实(项)进行对比并在必要时产生变量置换(具体化), 这种匹配操作又叫合一或一致化。又叫联合。 变量任何项目 变量可以与任何项目绑定,其中也包括变量 原始项目原始项目 两个原始项目(原子或整数)只有当它们相同时才能联合。 结构结构 如果两个结构的每个相应的参数能联合,那么这两个结构可以联合。 也就是说,prolog中两个项T1与T2之间进行匹配的一般规则如下: ①如果T1是一个自由变量, 则不论T2属于项中的哪种情况, 匹配均获成功, 且T1为T2具体化, 反之亦然; ②常量只能与本身匹配; ③如果T1和T2都是结构, 那未当且仅当: a. 它们有共同的主涵子(谓词名); 并且 b. 它们具有相同数量的成分; 并且 c. 它们所有对应的成分都匹配成功, 这两个结构才匹配。 例1. T1=date (D1 may Y1) T2=date(x X 1983) 匹配成功, 并且合一为: x=D1, X=may, Y1=1983) ?? 例2. T1=date(D M 1983) T2=date (D M 1944) 不匹配。因为1983与1944无法匹配。 例3. T1=date(X Y Z) T2=point(X Y Z) 不匹配。因为主函子(谓词名)不同, date1 point 例4. T1=R(X Y) T2=R (X Y Z) 不匹配。因为两个结构的成分个数不同。 Amzi Prolog使用的内部谓词’=/2’,此谓词当它的两个参数能够联合时成功,反之则失败。 它的语法如下:=(arg1, arg2) 为了方便阅读,也可以写成如下形式:arg1 = arg2 注意:此处的等号在Prolog中的意义与其他语言中的不同。它不是数学运算符或者赋值符。 使用=进行联合操作与Prolog使用目标与子句联合时相同。在回溯时,变量将被释放。 下面举了几个最简单的联合的例子。 ?- a = a. yes ??- a = b. no ??- location(apple, kitchen) = location(apple, kitchen). yes ??- location(apple, kitchen) = location(pear, kitchen). no ??- a(b,c(d,e(f,g))) = a(b,c(d,e(f,g))). yes ?- a(b,c(d,e(f,g))) = a(b,c(d,e(g,f))). no 在下面的例子中使用的变量,注意变量是如何绑定为某个值的。 ??- X = a. X = a ??- 4 = Y. Y = 4 ??- location(apple, kitchen) = location(apple, X). X = kitchen 当然也可以同时使用多个变量。 ??- location(X,Y) = location(apple, kitchen). X = apple Y = kitchen ??- location(apple, X) = location(Y, kitchen). X = kitchen Y = apple 变量之间也可以联合。每个变量都对应一个Prolog的内部值。当两个变量之间进行联合时,Prolog就把它们标记为相同的值。 在下面的例子中,我们假设Prolog使用‘_nn’,其中‘n’为数字,代表没有绑定的变量。 ??- X = Y. X = _01 Y = _01 ??- location(X, kitchen) = location(Y, kitchen). X = _01 Y = _01 Prolog记住了被绑定在一起的变量,这将在后面的绑定中反映出来,请看下面的例子。 ??- X = Y, Y = hello. X = hello Y = hello ??- X = Y, a(Z) = a(Y), X = hello. X = hello Y = hello Z = hello 最后的这个例子能够很好地说明Prolog的变量绑定与其他语言中的变量赋值的区别

文档评论(0)

教学专家 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档