130 likes | 151 Views
Learn about techniques like Forward Checking, Directional Arc Consistency, and Real Full Lookahead to efficiently solve constraint satisfaction problems. Discover how to make informed decisions and optimize variable domains for effective problem-solving.
E N D
Lookahead Schemas Foundations of Constraint Processing CSCE421/821, Fall 2014 www.cse.unl.edu/~choueiry/F14-421-821/ All questions to Piazza Berthe Y. Choueiry (Shu-we-ri) Avery Hall, Room 360 Tel: +1(402)472-5444
Outline: Lookahead 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), Real Full Lookahead (RFL) • 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)
Real Full Lookahead (RFL) • 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, RFL FC(Vc) • FC: • DAC: • assumes a fixed variable ordering d • RFL: • 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 +) RFL 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)
Alert: Terminology • Distinguish between • Real Full Lookahead (RFL) • Maintaining Arc Consistency (MAC) • MAC assumes binary branching