1
我正在繼續研究一些格和半格的研究,並且突然有了這個問題。在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
我說錯了嗎?
其實,這是錯誤的答案。 http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_15.html←這是偉大的 – 2011-02-24 20:46:50