0
我已經解決了使用ECLiPSe在會議中分配文章的問題。目標是:類似的文章應該在同一屆會議上。 這是在Eclipse工作溶液:將ECLiPSe移植到Prolog
:- lib(fd).
paper(1, 'An Empirical Study on Using Stereotypes to Improve Understanding of UML Models').
paper(2, 'Tool-Supported Customization of UML Class Diagrams for Learning Complex System Models').
paper(3, 'Understanding Class Evolution in Object-Oriented Software').
paper(4, 'A Simple Static Model for Understanding the Dynamic Behavior of Programs').
paper(5, 'Reuse in Reverse Engineering').
paper(6, 'Working in Pairs as a Means for Design Knowledge Building: An Empirical Study').
like(X, Y) :-
element(I, [1, 1, 2, 4, 4, 5], X),
element(I, [2, 3, 3, 5, 6, 6], Y).
conference([T1, T2, T3], [T4, T5, T6]) :-
% --- domains
L = [1, 2, 3, 4, 5, 6],
X1::L, X2::L, X3::L, X4::L, X5::L, X6::L,
% --- constraints
alldifferent([X1, X2, X3, X4, X5, X6]),
like(X1, X2), like(X1, X3), like(X2, X3), like(X4, X5), like(X4, X6), like(X5, X6),
% --- searching
labeling([X1, X2, X3, X4, X5, X6]),
% --- converting ids to titles
paper(X1, T1), paper(X2, T2), paper(X3, T3), paper(X4, T4), paper(X5, T5), paper(X6, T6).
在序言,問題是約束和標記的定義。 我知道ECLiPSe使用傳播算法,但在序言中我必須使用回溯策略。
如何在prolog中移植此代碼?
嗯,在我的情況下是不允許使用外部庫的,因爲我必須在純序言中自己編寫約束求解器。 – user840718
@ user840718:那麼問題是什麼?只需通過「member/2」或「nth1/3」調用來替換約束並進行檢查。 –
你說得對,但代碼太陳述了。 我需要實施解決約束,生成和測試或標準回溯的策略。 我不知道算法的實現,所以我不能使用外部庫並實現它。 – user840718