120 likes | 232 Views
Lookahead Schemas. Foundations of Constraint Processing CSCE496/896, Fall 2011 www.cse.unl.edu/~choueiry/F11-496-896/ All questions to cse496cp@cse.unl.edu Berthe Y. Choueiry (Shu-we-ri) Avery Hall, Room 360 Tel: +1(402)472-5444. Outline. Looking ahead Schemas Forward checking (FC)
E N D
Lookahead Schemas Foundations of Constraint Processing CSCE496/896, Fall 2011 www.cse.unl.edu/~choueiry/F11-496-896/ All questions to cse496cp@cse.unl.edu Berthe Y. Choueiry (Shu-we-ri) Avery Hall, Room 360 Tel: +1(402)472-5444
Outline • Looking ahead Schemas • Forward checking (FC) • Directional Arc Consistency (DAC) • Maintaining Arc Consistency (a.k.a. full arc-consistency)
Looking ahead • Rationale: • As decisions are made (conditioning), • Revise the domain of future variables to propagate the effects of decisions • i.e., eliminate inconsistent choices in future sub-problem • Domain annihilation of a future variable avoids expansion of useless portions of the tree • Techniques • Partial: forward-checking (FC), directional arc-consistency (DAC) • Full: Maintaining arc-consistency (MAC) • Use: Revise(Vf, Vc), Vf future variable, Vc current variable
Revise the domain of Vi • Revising the domain of Vi given a constraint CVi,Vj on Vi (i.e., ViScope(C)) • General notation: Revise(Vi,CVi,Vj) • In a binary CSP: Revise(Vi,CVi,Vj)=Revise(Vi, Vj)
Revise(Vi, Vj)NOTE: only DVi may be updated Revise(Vi, Vj) • revised nil • x DVi • found nil • y DVj • If Check((Vi,x),(Vj,y)) Then Begin • found t • Break • End • If found=nil Then Begin • revised t • DVi DVi \ {x} • End • Return (revised)
Revise(Vi, Vj) Revise(Vi, Vj) • revised nil • x Dvi • y DVj • If Check((Vi,x),(Vj,y)) Then Break() • revised t • DVi DVi \ {x} • Return (revised) Simpler, equivalent code but not as obvious as the previous one
Domain filtering in lookahead • Vc current variable • Vf future variable • {Vf} all future variables • Revise(Vf, Vc) • FC(Vc): • Vf {Vf} connected to Vc • Revise(Vf,Vc) • If DVf ={} then return(nil)
Directional Arc Consistency • Choose an ordering d, stick to it • After instantiating a variable at level i, do the following • For k from i to (n-1) in the ordering d Do • If FC(Vk)=nil then Return(nil)
Maintaining Arc Consistency • First, FC(Vc), • If it does not fail, then, form a queue with all constraints (Vi,Vj) and (Vj,Vi) between future variables, and run AC AC-1 • Q {(Vi,Vj),(Vj,Vi), …, (Vk,Vm), (Vm,VK)} • Change true • While Change Do • Change false • For all (Va,Vb) in Q Do • If Revise(Va,Vb) • Then If Dom(Va) = • Then Return (nil) • Else Change true
Look-ahead techniques:FC, DAC, MAC FC(Vc) • FC: • DAC: • assumes a fixed variable ordering d • MAC: • does more pruning (search may visit fewer nodes) at the cost of more consistency checks FC(Vc); While not failure: For the next Vf in the ordering d, FC(Vf) FC(Vc); AC({Vf}) FC(Vc); Repeat until quiescence or failure Vf1,Vf2 {Vf}, Revise(Vf1,Vf2)
Terminology overload alert: FC • FC is used to denote any of the following: • a partial look-ahead schema • a specific chronological backtrack search algorithm that uses the partial look-ahead schema • Meaning is inferred from context • Not a healthy situation, but a fact of reality • Advice: state upfront the meaning of your terms and stick to them throughout your paper
(BT Search +) MAC vs. FC • Reference: [Sabin & Freuder, ECAI94], [Bessière & Régin, CP97], [Sabin & Freuder, CP97], [Gent & Prosser, APES-20-2000], [Experiments by Lin XU, 2001], [Yang, MS thesis 2003] • Results: (sketchy) • Note: Results depend on • Variable ordering (static vs. dynamic) • Problem difficulty (positive relative to crossover point)