[Eclipse-clp-announce] counting backtracking

From: Joy Joy <joy.marsico_at_gmail.com>
Date: Wed, 25 Feb 2009 22:39:04 +0100
Hello!
I'm developing N-queens problem and I have a problem: I wish counting the
number of backtracking in my program. My code is written with forward
checking:

queens(Var,N):- domini(1,N,D), length(Var,N),
assegna_dom(VarDom,D,Var),ausiliare(VarDom).

ausiliare([]).
ausiliare([[X1,D]|Rest]):-member(X1,D),
            successivi(X1,Rest, Newrest),
                        ausiliare(Newrest).


successivi(X,Rest,Newrest):- successivi(X,Rest,1,Newrest).
successivi(X,[],Nb,[]).
successivi(X,[[Var,Dom]|Rest],Nb,[[Var,[F|T]]|Newrest]):-
remove_value(X,Dom,Nb,[F|T]),
                                                        Nb1 is Nb +1,

successivi(X,Rest,Nb1,Newrest).


remove_value(X,[],Nb,[]).
remove_value(X,[Val|Rest],Nb,[Val|Newrest]):-vincoli(X,Val,Nb),!,
remove_value(X,Rest,Nb,Newrest).
remove_value(X,[Val|Rest],Nb,Newrest):-remove_value(X,Rest,Nb,Newrest).


domini(N,Max,[N|T]):-  N1 is N+1,
                        domini(N1,Max,T).




vincoli(Value1,Value2,Nb):-  Value1 =\= Value2 +Nb,
                     Value1 =\= Value2 -Nb,
                             Value1 =\= Value2.



assegna_dom([],_,[]).
assegna_dom([[V,D]|LVarDom],D,[V|LVar]):- assegna_dom(LVarDom,D,LVar).


Help  me!!

Giovanna
Received on Wed Feb 25 2009 - 23:28:02 CET

This archive was generated by hypermail 2.2.0 : Sun Jul 14 2013 - 06:14:54 CEST