680 likes | 820 Views
In this lecture, we explore how to solve the challenging circle numbering puzzle where each circle must contain a unique number from 1 to 8, with the restriction that adjacent circles cannot have consecutive numbers. We will discuss heuristic search strategies, including which nodes to prioritize and how to effectively eliminate impossible values through inference and propagation techniques. The session aims to uncover systematic approaches to this constraint satisfaction problem, employing logic and graph theory concepts to find a valid solution.
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