1 / 76

Constraint Satisfaction Problems (CSPs ) C onstraint Propagation and Local Search

Constraint Satisfaction Problems (CSPs ) C onstraint Propagation and Local Search. This lecture topic (two lectures) Chapter 6.1 – 6.4, except 6.3.3 Next lecture topic (two lectures) Chapter 7.1 – 7.5 (Please read lecture topic material before and after each lecture on that topic). Outline.

Download Presentation

Constraint Satisfaction Problems (CSPs ) C onstraint Propagation and Local Search

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Constraint Satisfaction Problems (CSPs)Constraint Propagation and Local Search This lecture topic (two lectures) Chapter 6.1 – 6.4, except 6.3.3 Next lecture topic (two lectures) Chapter 7.1 – 7.5 (Please read lecture topic material before and after each lecture on that topic)

  2. Outline • Constraint Propagation for CSP • Forward Checking • Book-keeping can be tricky when backtracking • Node / Arc / Path Consistency, K-Consistency • AC-3 • Global Constraints (any number of variables) • Special-purpose code often much more efficient • Local search for CSPs • Min-Conflicts heuristic • (Removed) Problem structure and decomposition

  3. You Will Be Expected to Know • Node consistency, arc consistency, path consistency (6.2) • Forward checking (6.3.2) • Local search for CSPs: min-conflict heuristic (6.4)

  4. Backtracking search (Figure 6.5) function BACKTRACKING-SEARCH(csp) return a solution or failure return RECURSIVE-BACKTRACKING({} , csp) function RECURSIVE-BACKTRACKING(assignment, csp) return a solution or failure ifassignment is complete then return assignment var SELECT-UNASSIGNED-VARIABLE(VARIABLES[csp],assignment,csp) for each value in ORDER-DOMAIN-VALUES(var, assignment, csp)do ifvalue is consistent with assignment according to CONSTRAINTS[csp] then add {var=value} to assignment result RECURSIVE-BACTRACKING(assignment, csp) if result  failure then return result remove {var=value} from assignment return failure

  5. Improving CSP efficiency • Previous improvements on uninformed search  introduce heuristics • For CSPS, general-purpose methods can give large gains in speed, e.g., • Which variable should be assigned next? • In what order should its values be tried? • Can we detect inevitable failure early? • Can we take advantage of problem structure? Note: CSPs are somewhat generic in their formulation, and so the heuristics are more general compared to methods in Chapter 4

  6. Minimum remaining values (MRV) var SELECT-UNASSIGNED-VARIABLE(VARIABLES[csp],assignment,csp) • A.k.a. most constrained variable heuristic • Heuristic Rule: choose variable with the fewest legal moves • e.g., will immediately detect failure if X has no legal values

  7. Degree heuristic for the initial variable • Heuristic Rule: select variable that is involved in the largest number of constraints on other unassigned variables. • Degree heuristic can be useful as a tie breaker. • In what order should a variable’s values be tried?

  8. Least constraining value for value-ordering • Least constraining value heuristic • Heuristic Rule: given a variable choose the least constraining value • leaves the maximum flexibility for subsequent variable assignments

  9. Forward checking • Can we detect inevitable failure early? • And avoid it later? • Forward checking idea: keep track of remaining legal values for unassigned variables. • Terminate search when any variable has no legal values.

  10. Forward checking • Assign {WA=red} • Effects on other variables connected by constraints to WA • NT can no longer be red • SA can no longer be red

  11. Forward checking • Assign {Q=green} • Effects on other variables connected by constraints with WA • NT can no longer be green • NSW can no longer be green • SA can no longer be green • MRV heuristic would automatically select NT or SA next

  12. Forward checking • If V is assigned blue • Effects on other variables connected by constraints with WA • NSW can no longer be blue • SA is empty • FC has detected that partial assignment is inconsistent with the constraints and backtracking can occur.

  13. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem

  14. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem Red = value is assigned to variable

  15. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem Red = value is assigned to variable

  16. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • (Please note: As always in computer science, there are many different ways to implement anything. The book-keeping method shown here was chosen because it is easy to present and understand visually. It is not necessarily the most efficient way to implement the book-keeping in a computer. Your job as an algorithm designer is to think long and hard about your problem, then devise an efficient implementation.) • One more efficient equivalent possible alternative (of many): • Deleted: • { (X2:1,2) (X3:1,3) (X4:1,4) }

  17. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem Red = value is assigned to variable

  18. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem Red = value is assigned to variable

  19. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem Red = value is assigned to variable

  20. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • Deleted: • { (X3,2) (X3,4) (X4,3) } • (Please note: Of course, we could have failed as soon as we deleted { (X3,2) (X3,4) }. There was no need to continue to delete (X4,3), because we already had established that the domain of X3 was null, and so we already knew that this branch was futile and we were going to fail anyway. The book-keeping method shown here was chosen because it is easy to present and understand visually. It is not necessarily the most efficient way to implement the book-keeping in a computer. Your job as an algorithm designer is to think long and hard about your problem, then devise an efficient implementation.)

  21. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { , , , } X4 { ,2, , } Example: 4-Queens Problem Red = value is assigned to variable

  22. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • FAIL at X2=3. • Restore: • { (X3,2) (X3,4) (X4,3) }

  23. X1 {1,2,3,4} X2 { , ,3,4} 1X X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  24. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  25. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  26. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • Deleted: • { (X3,4) (X4,2) }

  27. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, , } X4 { , ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  28. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 3X X4 1 2 3 4 X3 { ,2, , } X4 { , ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  29. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, , } X4 { , ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  30. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • Deleted: • { (X3,4) (X4,2) } • X3 Level: • Deleted: • { (X4,3) }

  31. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, , } X4 { , , , } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  32. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • Deleted: • { (X3,4) (X4,2) } • X3 Level: • Fail at X3=2. • Restore: • { (X4,3) }

  33. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, , } X4 { , ,3, } Example: 4-Queens Problem X X Red = value is assigned to variable X = value led to failure

  34. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) } • X2 Level: • Fail at X2=4. • Restore: • { (X3,4) (X4,2) }

  35. X1 {1,2,3,4} X2 { , ,3,4} X1 X2 X3 X4 1 2 3 4 X3 { ,2, ,4} X4 { ,2,3, } Example: 4-Queens Problem X X Red = value is assigned to variable X = value led to failure

  36. Example: 4-Queens Problem • X1 Level: • Fail at X1=1. • Restore: • { (X2,1) (X2,2) (X3,1) (X3,3) (X4,1) (X4,4) }

  37. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  38. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  39. X1 {1,2,3,4} X2 {1,2,3,4} X1 X2 X3 X4 1 2 3 4 X3 {1,2,3,4} X4 {1,2,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  40. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X2,3) (X3,2) (X3,4) (X4,2) }

  41. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,3, } X4 {1, ,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  42. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,3, } X4 {1, ,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  43. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,3, } X4 {1, ,3,4} Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  44. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X2,3) (X3,2) (X3,4) (X4,2) } • X2 Level: • Deleted: • { (X3,3) (X4,4) }

  45. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, , , } X4 {1, ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  46. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,, } X4 {1, ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  47. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,, } X4 {1, ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  48. Example: 4-Queens Problem • X1 Level: • Deleted: • { (X2,1) (X2,2) (X2,3) (X3,2) (X3,4) (X4,2) } • X2 Level: • Deleted: • { (X3,3) (X4,4) } • X3 Level: • Deleted: • { (X4,1) }

  49. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,, } X4 { , ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

  50. X1 {1,2,3,4} X2 { , , ,4} X1 X2 X3 X4 1 2 3 4 X3 {1, ,, } X4 { , ,3, } Example: 4-Queens Problem X Red = value is assigned to variable X = value led to failure

More Related