| OCR Text |
Show 29 Figure 16: A Valid And An Invalid Kamel Graph. 3.2 Satisfying Constraint Kernels. The Constraint Kernels system is a mixed beast, part constraint network, part dependency graph. The algorithms for satisfying the kernels are also mixed, part constraint satisfaction, part dependency propagation. Any satisfaction algorithm should possess two properties. 1. Make as few restrictions on the structure of the Constraint Kernels as possible so the power of constraints and dependencies are preserved, yet we may ... 2. Invoke constraint satisfaction on any constraint graph only once during the satisfaction process (although satisfaction may be invoked on a number of disjoint constraint graphs), and evaluate each node in the dependency graph at most once. Property (1) is vague but the basic goal is to maintain the power of constraints and dependencies as they are integrated into a modeling system. Property (2) is absolutely necessary for the efficient operation of the Constraint Kernels. With property (2) the satisfaction algorithms will run in roughly linear time with respect to the number of dependencies as will be shown later. If we remove property (2) satisfaction could easily execute in roughly exponential time or possibly not at all. Since there are no cycles between constraint networks, it is possible to impose a topological ordering upon them. This fact will be the key to satisfying property (2) of the Constraint Kernels satisfaction algorithms, i.e. constraint satisfaction is invoked at most once on any constraint network during the satisfaction process. The topological sort provides two very useful results: |