私は格子と半束の研究を続けており、突然この質問があります。
基本的に、[a、b]ペアのRelationListがあります。これは、(a、b)がエッジであることを意味します。ここで知っておくべきことは、このRelationList1-接続性によって形成されるグラフです。ちなみに、順序グラフがあるので、(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
私はそれを間違って定義していますか?