人工智能AI---用LISP语言写合一算法unify

本文介绍了如何使用LISP语言编程实现表达式合一算法,即找到两个表达式E1和E2的最一般合一s。通过广义表结构存储表达式和合一,给出测试数据和实现提示,并提供了具体的LISP代码实现。测试用例表明代码运行正确,能有效进行变量替换。
摘要由CSDN通过智能技术生成

[问题描述]

编程实现表达式合一算法,对任意两个表达式E1、E2,找出其最一般合一s 

[测试数据]

输入表达式:

E1 = P (x,  f (x),  g (z) )       E2 = P (y,  f ( g (b) ),  y )

输出结果:

s = { g(b)/x ,  g(b)/y ,  b/z }

[实现提示]

1.用广义表结构存储表达式

例:

表达式E1 = P (x,  f (x),  g (z) ) ,可表示如下:

( P   x   ( f  x )   ( g  z) )

表达式E2 = P (y,  f ( g (b) ),  y ) ,可表示如下:

( P   y   ( f  ( g  b ) )   y )

 

2.用广义表结构存储合一(代换)

例:s = { g(b)/x ,  g(b)/y ,  b/z } ,可表示如下:

s = ( ( (g  b)  x)  ((g  b)  y)  (b  z) )

 

3.变量表示

置特性值 或 设变量表 或 与var构成序偶

假设使用变量表:

varlist = ( x  y  z  ……)

 

[测试用例] (unify  '(p  a  b)  '

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值