*HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ...
Transcript of *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ...
![Page 1: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/1.jpg)
!"#$%&'()*'+,"#-.+&"'/$.+-,$)012)1030405416
ID2204: Constraint Programming
Christian Schulte!"!#$%&'()&#*"'
Software and Computer SystemsSchool of Information and Communication TechnologyKTH Royal Institute of TechnologyStockholm, Sweden
![Page 2: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/2.jpg)
7"'8+,9&'+):,"(,9;;&'()<&+=)>$."#$
![Page 3: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/3.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 3E
FG$,G&$<
Program model as scriptdeclare variablespost constraints (creates propagators)define branching
Solve scriptbasic search strategyGist: interactive visual search
![Page 4: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/4.jpg)
:,"(,9;)!"#$%)98)A.,&H+
![Page 5: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/5.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 3I
A.,&H+J)FG$,G&$<
Script is class inheriting from class Spacemembers store variables regarded as solution
Script constructorinitialize variablespost propagators for constraintsdefine branching
Copy constructor and copy functioncopy a Script object during search
Exploration takes Script object as inputreturns object representing solution
Main functioninvokes search engine
![Page 6: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/6.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 3K
A.,&H+)L",)A!!J)A+,-.+-,$
!"#$%&'()*+($,'(-"#./001!"#$%&'()*+($,'(-2(34$0/001
&2"#+)#35(263$()7($,'(8
$%322)9(#':,4(:,#(; <)6&=%"$)963$()>64,.($.('<?#.@34A443; %8)--)B"+".2)C,4).0()%(..(42
6&=%"$<--)D,#2.4&$.,4)C,4)2$4"6.9(#':,4(:,#(;--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,%--)G4"#.)2,%&.",#
J8
![Page 7: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/7.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 10
A.,&H+)L",)A!!J)A+,-.+-,$
!"#$%&'()*+($,'(-"#./001!"#$%&'()*+($,'(-2(34$0/001
&2"#+)#35(263$()7($,'(8
$%322)9(#':,4(:,#(; <)6&=%"$)963$()>64,.($.('<?#.@34A443; %8)--)B"+".2)C,4).0()%(..(42
6&=%"$<--)D,#2.4&$.,4)C,4)2$4"6.9(#':,4(:,#(;--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,%--)G4"#.)2,%&.",#
J8
array of integer variables stores solution
![Page 8: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/8.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 13
A.,&H+)L",)A!!J)A+,-.+-,$
!"#$%&'()*+($,'(-"#./001!"#$%&'()*+($,'(-2(34$0/001
&2"#+)#35(263$()7($,'(8
$%322)9(#':,4(:,#(; <)6&=%"$)963$()>64,.($.('<?#.@34A443; %8)--)B"+".2)C,4).0()%(..(42
6&=%"$<--)D,#2.4&$.,4)C,4)2$4"6.9(#':,4(:,#(;--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,%--)G4"#.)2,%&.",#
J8
constructor: initialize variables, post
constraints, define branching
![Page 9: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/9.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 11
A.,&H+)L",)A!!J)A+,-.+-,$
!"#$%&'()*+($,'(-"#./001!"#$%&'()*+($,'(-2(34$0/001
&2"#+)#35(263$()7($,'(8
$%322)9(#':,4(:,#(; <)6&=%"$)963$()>64,.($.('<?#.@34A443; %8)--)B"+".2)C,4).0()%(..(42
6&=%"$<--)D,#2.4&$.,4)C,4)2$4"6.9(#':,4(:,#(;--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,%--)G4"#.)2,%&.",#
J8
copy constructor and copy function
![Page 10: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/10.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 15
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)G,2.)$,#2.43"#.2
--)G,2.)=43#$0"#+2
J
![Page 11: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/11.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 1@
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)G,2.)$,#2.43"#.2
--)G,2.)=43#$0"#+2
J variables created in this script (space)
![Page 12: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/12.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 16
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)G,2.)$,#2.43"#.2
--)G,2.)=43#$0"#+2
J
8 variables
![Page 13: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/13.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 1E
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)G,2.)$,#2.43"#.2
--)G,2.)=43#$0"#+2
J
take values between 0 and 9
(digits)
![Page 14: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/14.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 1M
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)G,2.)$,#2.43"#.2
--)G,2.)=43#$0"#+2
J refer to variables by their letters
![Page 15: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/15.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 1I
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>?#.@34 2E%OMPKF)(E%OQPKF)#E%ORPKF)'E%OSPKF
5E%OTPKF),E%OUPKF)4E%OVPKF);E%OWPK8--)X,)%(3'"#+)Y(4,2)E?Z[<)"#.(+(4)4(%3.",#).;6(K4(%EI.0"2F)2F)?Z[\X]F)MK8)4(%EI.0"2F)5F)?Z[\X]F)MK8--)A%%)%(..(42)5&2.).3^()'"2."#$.)'"+".2'"2."#$.EI.0"2F)%K8--)[0()%"#(34)(_&3.",#)5&2.)0,%'
--)`43#$0),H(4).0()%(..(42
J
![Page 16: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/16.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 1K
:"8+&'()7"'8+,9&'+8
Defined in namespace 7($,'(
Check documentation for available constraints
Take script reference as first argumentwhere is the propagator for the constraint to be posted!script is a subclass of Space (computation space)
![Page 17: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/17.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 50
/&'$9,)NO-9+&"'8)9'#)/&'$9,)7"'8+,9&'+8
Equations of the formc1 x1 cn xn = dinteger constants: ci and dinteger variables: xi
In Gecode specified by arraysintegers (?#.A4+2K civariables (?#.@34A443;F)?#.@34A4+2K xi
Not only equations?Z[\a]F)?Z[\X]F)?Z[\baF)?Z[\7ZF)?Z[\b]F)?Z[\7]equality, disequality, inequality (less, greater, less or equal, greater or equal)
![Page 18: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/18.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 53
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>
--)[0()%"#(34)(_&3.",#)5&2.)0,%'?#.A4+2 $ETcTcUK8)?#.@34A4+2 dETcTcUK8$OMPeQMMM8)$OQPeQMM8)$ORPeQM8)$OSPeQ8dOMPe28))))dOQPe(8)))dORPe#8))dOSPe'8$OTPeQMMM8)$OUPeQMM8)$OVPeQM8)$OWPeQ8dOTPe58))))dOUPe,8)))dOVPe48))dOWPe(8$OLPefQMMMM8)$ONPefQMMM8)$OQMPefQMM8)$OQQPefQM8)$OQRPefQ8dOLPe58))))))dONPe,8)))))dOQMPe#8))))dOQQPe(8)))dOQRPe;8%"#(34EI.0"2F)$F)dF)?Z[\a]F)MK8--)`43#$0),H(4).0()%(..(42
J
![Page 19: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/19.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 51
/&'$9,)NPH,$88&"'8
Other options for posting linear constraints are available: minimodeling support
linear expressionsBoolean expressionsmatrix classes
See the examples that come with Gecode
![Page 20: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/20.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 55
A.,&H+)L",)A!!J)7"'8+,-.+",
!"#$%&'()*+($,'(-5"#"5,'(%/001
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>
--)[0()%"#(34)(_&3.",#)5&2.)0,%'6,2.EI.0"2F)))))))))))))QMMMI2)c)QMMI()c)QMI#)c)'
c)QMMMI5)c)QMMI,)c)QMI4)c)(ee)QMMMMI5)c)QMMMI,)c)QMMI#)c)QMI()c);K8
--)`43#$0),H(4).0()%(..(42
J
![Page 21: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/21.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 5@
A.,&H+)L",)A!!J)7"'8+,-.+",
9(#':,4(:,#(;EH,"'K)<)%EI.0"2F)LF)MF)NK)>
--)`43#$0),H(4).0()%(..(42=43#$0EI.0"2F)%F)?X[\@AZ\9?ga\:?XF)?X[\@Ab\:?XK8
J
![Page 22: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/22.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 56
Q,9'.=&'(
Which variable to choosegiven order ?X[\@AZ\XhXasmallest size ?X[\@AZ\9?ga\:?Xsmallest minimum ?X[\@AZ\:?X\:?X
How to branch: which value to choosetry smallest value ?X[\@Ab\:?Xsplit (lower first) ?X[\@Ab\9Gb?[\:?X
![Page 23: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/23.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 5E
A.,&H+)L",)A!!J)7"HR&'(
--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;i)2K)<)963$(E2034(F)2K)>
%/&6'3.(EI.0"2F)2034(F)2/%K8J--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,% 2034(K)>
4(.&4#)#(j)9(#':,4(:,#(;E2034(FI.0"2K8J
![Page 24: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/24.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 5M
A.,&H+)L",)A!!J)7"HR&'(
--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;i)2K)<)963$(E2034(F)2K)>
%/&6'3.(EI.0"2F)2034(F)2/%K8J--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,% 2034(K)>
4(.&4#)#(j)9(#':,4(:,#(;E2034(FI.0"2K8J
update all variables needed
for solution
![Page 25: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/25.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 5I
A.,&H+)L",)A!!J)7"HR&'(
--)D,#2.4&$.,4)C,4)$%,#"#+9(#':,4(:,#(;E=,,% 2034(F)9(#':,4(:,#(;i)2K)<)963$(E2034(F)2K)>
%/&6'3.(EI.0"2F)2034(F)2/%K8J--)G(4C,45)$,6;"#+)'&4"#+)$%,#"#+H"4.&3%)963$(I)$,6;E=,,% 2034(K)>
4(.&4#)#(j)9(#':,4(:,#(;E2034(FI.0"2K8J
create a new copy of the space
during cloning
![Page 26: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/26.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 5K
7"HR&'(
Required during explorationbefore starting to guess: make copywhen guess is wrong: use copydiscussed later
Copy constructor and copy function neededcopy constructor is specific to scriptupdates (copies) variables in particular
![Page 27: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/27.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @0
7"HR)7"'8+,-.+",)S'#)7"HR)T-'.+&"'
Always same structure
Important!must update the variables of a script!
![Page 28: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/28.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @3
A.,&H+)L",)A!!J):,&'+)T-'.+&"'
--)G4"#.)2,%&.",#H,"')64"#.EH,"'K)>
2.'<<$,&. **)%)**)2.'<<(#'%8J
![Page 29: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/29.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @1
A-;;9,RJ)A.,&H+
Variablesdeclare as membersinitialize in constructorupdate in copy constructor
Posting constraintsCreate branchingProvide copy constructor and copy function
![Page 30: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/30.jpg)
A"%G&'()A.,&H+8
![Page 31: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/31.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @@
SG9&%9U%$)A$9,.=)N'(&'$8
Returning solutions one by one for scriptBk9 depth-first search`A` branch-and-boundZ(2.34.F)bB9
Interactive, visual search7"2.
![Page 32: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/32.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @6
!9&')!$+="#J)T&,8+)A"%-+&"'
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58"C)E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
![Page 33: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/33.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @E
!9&')!$+="#J)T&,8+)A"%-+&"'
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58"C)E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
create root space for search
![Page 34: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/34.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @M
!9&')!$+="#J)T&,8+)A"%-+&"'
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58"C)E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
create search engine (takes
clone of 5)
![Page 35: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/35.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @I
!9&')!$+="#J)T&,8+)A"%-+&"'
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58"C)E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
root space not any longer
needed
![Page 36: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/36.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD @K
!9&')!$+="#J)T&,8+)A"%-+&"'
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58"C)E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
search first solution and
print it
![Page 37: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/37.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 60
!9&')!$+="#J)S%%)A"%-+&"'8
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;8Bk9*9(#':,4(:,#(;1)(E5K8'(%(.()58j0"%()E9(#':,4(:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
![Page 38: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/38.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 63
>$."#$)>&8+
A graphical tool for exploring the search treeexplore tree step by steptree can be scaleddouble-clicking node prints information: inspectionsearch for next solution, all solutions
Best to play a little bit by yourselfhide and unhide failed subtrees
![Page 39: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/39.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 61
!9&')T-'.+&"'J)>&8+
!"#$%&'()*+($,'(-+"2./001
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,4(:,#(;I)5)e)#(j)9(#':,4(:,#(;87"2.<<'C2E5K8'(%(.()584(.&4#)M8
J
![Page 40: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/40.jpg)
>&8+)A.,$$'8="+
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 65
![Page 41: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/41.jpg)
Q$8+)A"%-+&"')A$9,.=
![Page 42: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/42.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 66
V$;&'#$,J)A!!WW
Find distinct digits for letters, such that
and +,-./ maximal
0.-1
2 +,03
4 +,-./
![Page 43: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/43.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 6E
A.,&H+)L",)A!!WW
Similar, please try it yourself at homeIn the following, referred to by 9(#':,2.:,#(;
![Page 44: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/44.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 6M
A"%G&'()A!!WWJ)F,#$,
Principlefor each solution found, constrain remaining search for better solution
Implemented as additional methodH"4.&3%)H,"')$,#2.43"#E$,#2.)963$(i)=K)>
J
Argument = refers to so far best solutiononly take values from =never mix variables!
Invoked on object to be constrained
![Page 45: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/45.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 6I
F,#$,)L",)A!!WW
H"4.&3%)H,"')$,#2.43"#E$,#2.)963$(i)\=K)>$,#2.)9(#':,2.:,#(;i)=)e)
2.3."$\$32.*$,#2.)9(#':,2.:,#(;i1E\=K8
?#.@34 (E%OQPKF)#E%ORPKF)5E%OTPKF),E%OUPKF);E%OLPK8
?#.@34 =\(E=/%OQPKF)=\#E=/%ORPKF)=\5E=/%OTPKF)=\,E=/%OUPKF)=\;E=/%OLPK8
"#. 5,#(;)e)EQMMMMI=\5/H3%EKcQMMMI=\,/H3%EKcQMMI=\#/H3%EKcQMI=\(/H3%EKc=\;/H3%EKK8
6,2.EI.0"2F)QMMMMI5cQMMMI,cQMMI#cQMI(c; 1)5,#(;K8J
![Page 46: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/46.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD 6K
!9&')!$+="#J)S%%)A"%-+&"'8
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,2.:,#(;I)5)e)#(j)9(#':,2.:,#(;8`A`*9(#':,2.:,#(;1)(E5K8'(%(.()58j0"%()E9(#':,2.:,#(;I)2)e)(/#(d.EKK)>
2f164"#.EK8)'(%(.()28J4(.&4#)M8
J
![Page 47: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/47.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD E0
!9&')T-'.+&"'J)>&8+
!"#$%&'()*+($,'(-+"2./001
"#. 53"#E"#. 34+$F)$034I)34+HOPK)>9(#':,2.:,#(;I)5)e)#(j)9(#':,2.:,#(;87"2.<<=3=E5K8'(%(.()584(.&4#)M8
J
![Page 48: *HWWLQJ 3UDFWLFDO« !#$%&'()*'+,#-.+&'marco/Teaching/AY2010-2011/DM826/Slides/… · *HWWLQJ 3UDFWLFDO«!"#$%&'()*'+,"#-.+&"' /$.+-,$)012)1030405416 ID2204: Constraint Programming](https://reader034.fdocuments.in/reader034/viewer/2022050521/5fa4d843b67c074f020b606b/html5/thumbnails/48.jpg)
1030405416 *?110@4/012)7=,&8+&9')A.=-%+$2)*7B2)CBD E3
A-;;9,RJ)A"%G&'(
Result-only search enginesBk9F)`A`
Interactive search engine7"2.
Best solution search uses constrain-method for posting constraintSearch engine independent of script and constrain-method