[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: constraint
From: |
Daniel Diaz |
Subject: |
Re: constraint |
Date: |
Thu, 23 Mar 2006 10:52:50 +0100 |
User-agent: |
Thunderbird 1.5 (Windows/20051201) |
michel levy a écrit :
?- X*X #=23.
no
I don't understand how this answer is produced.
I was expecting X #= 1..23
this is simplified as X = sqrt(23) which is not an integer.
?- X*X #=25.
X = 5
yes
I don't understand how this answer is produced.
I was expecting X #= 1..25
similarly this is X=sqrt(25)
BTW when dealing with non-linear constraint in GNU Prolog it is
important to define the initial domain of the variables.
For instance:
| ?- X*Y#=25.
No
because the max(X)*max(Y) overflows. So use for instance:
| ?- fd_domain(X,1,1000), X*Y#=23.
X = _#3(1..23)
Y = _#25(1..23)
You can also obtain a more precise domain using full lookahead
(using #= # instead of #= but the computation is more costly) :
| ?- fd_domain(X,1,1000), X*Y#=#25.
X = _#3(1:5:25@)
Y = _#25(1:5:25@)
Where (papers, books,..) is it possible to have informations on the
finite domains constraints resolution ?
You can have a look at the PVH's book:
P. Van Hentenryck. Constraint Satisfaction in Logic Programming.
Logic Programming Series, The MIT Press, 1989.
There a lot of other articles (do a search on google with:
constraint finite domain propagation)...
Hope this helps