我只是在学习 Prolog,我正在复习讲义,所有的笔记都说:
给定有向图的以下定义:
path(X, Y) :- edge(X, Y).
path(X, Y) :- edge(X, Z), path(Z, Y).
如果我们想让它成为一个无向图,
edge(X, Y) :- edge(Y, X).
单独定义是行不通的,我不知道为什么。如果 Y 到 X 有边,则 X 到 Y 有边。对我来说似乎很有意义。
注释并没有真正说明为什么不这样做,但它确实定义了正确的解决方案是:
edge1(X, Y) :- edge(X, Y).
edge1(X, Y) :- edge(Y, X).
到我们已经拥有的。
谁能给我解释一下,谢谢?<3