„Constraint programming represents one of the closest approaches computer science has yet made to Constraint propagation the Holy Grail of programming: the backtracking-&based search user states the problem, the backtracking-based search computer solves it.“ Eugene C. Freuder, Constraints, April 1997 Roman Barták Charles University, Prague (CZ)
[email protected] http://ktiml.mff.cuni.cz/~bartak 2 Holly Grail of Programming Tutorial outline > Computer, solve the SEND, MORE, MONEY problem! Introduction history, applications, a constraint satisfaction problem > Here you are. The solution is [9,5,6,7]+[1,0,8,5]=[1,0,6,5,2] Depth-first search a Star Trek view backtracking, backjumping, backmarking incomplete and discrepancy search > Sol=[S,E,N,D,M,O,R,Y], Consistency domain([E,N,D,O,R,Y],0,9), domain([S,M],1,9), node, arc, and path consistencies 1000*S + 100*E + 10*N + D + k-consistency and global constraints 1000*M + 100*O + 10*R + E #= Combining search and consistency 10000*M + 1000*O + 100*N + 10*E + Y, all_different(Sol), look-back and look-ahead schemes labeling([ff],Sol). variable and value ordering Conclusions > Sol = [9,5,6,7,1,0,8,2] constraint solvers, resources today reality 3 4 A bit of history Scene labelling (Waltz 1975) feasible interpretation of 3D lines in a 2D drawing - - + + - + + + + + + - + + IntroductionIntroduction Interactive graphics (Sutherland 1963, Borning 1981) geometrical objects described using constraints Logic programming (Gallaire 1985, Jaffar, Lassez 1987) from unification to constraint satisfaction 6 1 Application areas Constraint technology All types of hard combinatorial problems: molecular biology based on declarative problem description via: DNA sequencing variables with domains (sets of possible values) determining protein structures e.g.