Newsgroups: comp.constraints
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!news.mathworks.com!news.alpha.net!uwm.edu!cs.utexas.edu!bcm!newsfeed.rice.edu!uw-beaver!borning
From: borning@cs.washington.edu (Alan Borning)
Subject: problem with SkyBlue and constraint cycles
Message-ID: <D66zrz.4uD@beaver.cs.washington.edu>
Sender: news@beaver.cs.washington.edu (USENET News System)
Organization: Computer Science & Engineering, U. of Washington, Seattle
Date: Wed, 29 Mar 1995 08:04:28 GMT
Lines: 37

This posting is to alert users of SkyBlue to a problem regarding its
handling of cycles of constraints.  SkyBlue is an incremental local
propagation constraint solvers for constraint hierarchies.  SkyBlue is more
general than the earlier DeltaBlue algorithm, in that it supports
multi-output methods and allows cycles in the constraint graph.  SkyBlue
itself doesn't handle cycles, but does allow external cycle solvers to be
called to satisfy the constraints in the cycle.

The problem is that SkyBlue will not always gather enough constraints to
hand off to the cycle solver.  If the constraints in the immediate cycle
uniquely specify the values for their variables, all is well.  However, if
the constraints are redundant or incompatible, then additional constraints
must be considered as well, and SkyBlue won't necessarily identify these
needed constraints.  Unfortunately we have been unable to find a simple
repair to SkyBlue for this problem, short of simply gathering all the
constraints downstream from the cycle.  (We have been developing yet
another algorithm in the shades-of-blue family, named UltraViolet, that
DOES handle this problem; however, we don't have a description of it
available yet.)

In the meantime, since other researchers have begun to use SkyBlue, we
wanted to make sure they knew about this problem.  On the positive side,
the basic SkyBlue algorithm -- the local propagation mechanism, including
multi-output constraints -- works fine.  In addition, Michael Sannella's
dissertation does describe the problem with gathering constraints for an
external cycle solver (see pages 43-44).  However, we more recently
realized that at least for some applications, the problem is not an obscure
one that comes up only in pathological cases, but can arise in realistic
cases.

So ...if your problem domain calls for local propagation only, including
multi-output constraints, SkyBlue will serve its purpose well.  But be
cautious in using it with external cycle solvers.

For more information on SkyBlue and related algorithms, see
  http://www.cs.washington.edu/research/projects/weird/www/constraints.html
(We also put a copy of this caution in this web.)
