给出了二元关系R构造传递反自反闭包
R*在lisp中///为什么?

最佳答案

你没有给出很多信息,但是通常,给定关系R,R的传递和自反闭包是关系R*,定义如下:
对于所有X,Y,使得R(X,Y),关系R*(X,Y)也成立;
对于所有X,Y,Z,使得R(X,Y)和R*(Y,Z),关系R*(X,Z)成立;
假设给定一个函数R,其行为如下:
(funcall R :x X :y Y)返回非零值iff R(X,Y)
(funcall R :x X)返回所有Y,使得R(X,Y)
(funcall R :y Y)返回所有X,使R(X,Y)
(funcall R)返回(XY)R(X,Y)的对。
然后你可以建立一个计算传递和反身关闭的函数;如果你想知道R*(X,Z)是否成立,你可以从X开始,尝试满足Y的所有可能的R(X,Y),直到Y等于Z,或者你可以递归地确定R*(Y,Z)
在您实现并测试之后,也尝试检测周期。

09-05 03:18