users-prolog
[Top][All Lists]
Advanced

[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








reply via email to

[Prev in Thread] Current Thread [Next in Thread]