在Prolog中定义连接图
我正在继续研究格子和半格,并突然有了这个问题。
基本上,我们有一个[a,b]对的RelationList,这意味着(a,b)是一个边。现在我们应该知道,这是一个由RelationList 1连接形成的图形。
顺便说一句,我们有一个有序图,所以(a,b)的顺序很重要。
clear_link(X, Y, RelationList) :-
(member([X,Y], RelationList)
;
member([Y,X], RelationList)),
X == Y.
linked(X, Y, RelationList) :-
clear_link(X, Y, RelationList),
!.
linked(X, Y, RelationList) :-
clear_link(X, Z, RelationList),
linked(Z, Y, RelationList).
simple_connect(RelationList, E) :-
forall((member(X, E),
member(Y, E), X < Y),
linked(X, Y, RelationList)).
但是,对于6元素图,我有stackoverflow。
?- simple_connect([[2,1],[2,3],[4,3],[4,5],[6,5]],[1,2,3,4,5,6]).
ERROR: Out of local stack
我定义错了吗?
没有找到相关结果
已邀请:
1 个回复
芦歉竭皑
和
正确答案(复制到帖子)