[问题描述]
编程实现表达式合一算法,对任意两个表达式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) '