120 likes | 246 Vues
This document explores advanced lookahead techniques in constraint processing, focusing on strategies such as Forward Checking (FC), Directional Arc Consistency (DAC), and Maintaining Arc Consistency (MAC). It discusses the rationale behind these methods, emphasizing how they prune inconsistent choices to streamline decision-making in constraint satisfaction problems (CSPs). The content is intended for students and researchers in computer science, particularly those specializing in algorithms and artificial intelligence. Relevant case studies and references to significant research in this field are included for further exploration.
E N D
Lookahead Schemas Foundations of Constraint Processing CSCE421/821, Spring 2009 www.cse.unl.edu/~choueiry/S09-421-821/ All questions to cse421@cse.unl.edu Berthe Y. Choueiry (Shu-we-ri) Avery Hall, Room 123B choueiry@cse.unl.edu 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 • Return() • 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 Return() • 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)