680 likes | 808 Views
DCS Lecture how to solve it. Patrick Prosser. Your Challenge. Put a different number in each circle (1 to 8) such that adjacent circles cannot take consecutive numbers. That’s illegal, okay?. 6. 5. Put a different number in each circle (1 to 8) such
E N D
DCS Lecture how to solve it Patrick Prosser
Your Challenge Put a different number in each circle (1 to 8) such that adjacent circles cannot take consecutive numbers
That’s illegal, okay? 6 5 Put a different number in each circle (1 to 8) such that adjacent circles cannot take consecutive numbers
That’s illegal, okay? 3 3 Put a different number in each circle (1 to 8) such that adjacent circles cannot take consecutive numbers
The Puzzle • Place numbers 1 through 8 on nodes • Each number appears exactly once • No connected nodes have consecutive numbers ? ? ? ? ? ? ? ? You have 4 minutes!
Bill Gates asks … how do we solve it? How do we solve it?
Heuristic Search Which nodes are hardest to number? ? ? ? ? ? ? ? ? Heuristic: a rule of thumb
Heuristic Search ? ? ? ? ? ? ? ?
Heuristic Search Which are the least constraining values to use? ? ? ? ? ? ? ? ?
Heuristic Search Values 1 and 8 ? ? ? 1 8 ? ? ?
Heuristic Search Values 1 and 8 ? ? ? 1 8 ? ? ? Symmetry means we don’t need to consider: 8 1
? ? ? 1 8 ? ? ? Inference/propagation We can now eliminate many values for other nodes Inference/propagation: reasoning
Inference/propagation {1,2,3,4,5,6,7,8} ? ? ? 1 8 ? ? ?
Inference/propagation {2,3,4,5,6,7} ? ? ? 1 8 ? ? ?
Inference/propagation {3,4,5,6} ? ? ? 1 8 ? ? ?
Inference/propagation {3,4,5,6} ? ? ? 1 8 ? ? ? {3,4,5,6} By symmetry
Inference/propagation {3,4,5,6} {1,2,3,4,5,6,7,8} ? ? ? 1 8 ? ? ? {3,4,5,6}
Inference/propagation {3,4,5,6} {2,3,4,5,6,7} ? ? ? 1 8 ? ? ? {3,4,5,6}
Inference/propagation {3,4,5,6} {3,4,5,6} ? ? ? 1 8 ? ? ? {3,4,5,6}
Inference/propagation {3,4,5,6} {3,4,5,6} ? ? ? 1 8 ? ? ? {3,4,5,6} {3,4,5,6} By symmetry
Inference/propagation {3,4,5,6} {3,4,5,6} ? ? ? 1 8 ? {2,3,4,5,6} {3,4,5,6,7} ? ? {3,4,5,6} {3,4,5,6}
Inference/propagation {3,4,5,6} {3,4,5,6} ? ? ? 1 8 ? {2,3,4,5,6} {3,4,5,6,7} ? ? {3,4,5,6} {3,4,5,6} Value 2 and 7 are left in just one node’s domain
Inference/propagation {3,4,5,6} {3,4,5,6} ? ? 7 1 8 2 {2,3,4,5,6} {3,4,5,6,7} ? ? {3,4,5,6} {3,4,5,6} And propagate …
Inference/propagation {3,4,5} {3,4,5,6} ? ? 7 1 8 2 {2,3,4,5,6} {3,4,5,6,7} ? ? {3,4,5} {3,4,5,6} And propagate …
Inference/propagation {3,4,5} {4,5,6} ? ? 7 1 8 2 {2,3,4,5,6} {3,4,5,6,7} ? ? {3,4,5} {4,5,6} And propagate …
Inference/propagation {3,4,5} {4,5,6} ? ? 7 1 8 2 ? ? {3,4,5} {4,5,6} Guess a value, but be prepared to backtrack … Backtrack?
Inference/propagation {3,4,5} {4,5,6} 3 ? 7 1 8 2 ? ? {3,4,5} {4,5,6} Guess a value, but be prepared to backtrack …
Inference/propagation {3,4,5} {4,5,6} 3 ? 7 1 8 2 ? ? {3,4,5} {4,5,6} And propagate …
Inference/propagation {5,6} 3 ? 7 1 8 2 ? ? {4,5} {4,5,6} And propagate …
Inference/propagation {5,6} 3 ? 7 1 8 2 ? ? {4,5} {4,5,6} Guess another value …
Inference/propagation 3 5 7 1 8 2 ? ? {4,5} {4,5,6} Guess another value …
Inference/propagation 3 5 7 1 8 2 ? ? {4,5} {4,5,6} And propagate …
Inference/propagation 3 5 7 1 8 2 ? ? {4} {4,6} And propagate …
Inference/propagation 3 5 7 1 8 2 4 ? {4} {4,6} One node has only a single value left …
Inference/propagation 3 5 7 1 8 2 4 6 {6}
Solution! 3 5 7 1 8 2 4 6
Bill Gates says … how does a computer solve it? How does a computer solve it?
A Constraint Satisfaction Problem ? ? ? ? ? ? ? ? • Variable,vi for each node • Domain of {1, …, 8} • Constraints • All values used Alldifferent(v1 v2 v3 v4 v5 v6 v7 v8) • No consecutive numbers for adjoining nodes |v1 - v2 | > 1 |v1 - v3 | > 1 …
How we might input the problem to a program Viewing the problem as a “graph” with 8 “vertices” and 17 “edges”
Our Problem as a Graph vertex 0 is adjacent to vertex 1 vertex 3 is adjacent to vertex 7 8 vertices, 17 edges 1 2 0 6 7 3 5 4
By the way, Bill Gates says … Computer scientists count from zero
A Java (Constraint) Program to solve our problem
Make a “Problem” and attach “variables” to it Note: variables represent our vertices