[Artificial Intelligence] Einstein Puzzle
Introduction
Einstein Puzzle is a famous logic puzzle attributed to Albert Einstein. The puzzle provides a set of clues, and the goal is to deduce the characteristics of each house based on those clues.
Here’s the layout of the puzzle:
House #1 | House #2 | House #3 | House #4 | House #5 | |
---|---|---|---|---|---|
Color | |||||
Nationality | |||||
Drink | |||||
Cigarette | |||||
Pet |
- The Brit lives in the Red house.
- The Swede keeps Dogs as pets.
- The Dane drinks Tea.
- The Green house is exactly to the left of the White house.
- The owner of the Green house drinks Coffee.
- The person who smokes Pall Mall rears Birds.
- The owner of the Yellow house smokes Dunhill.
- The man living in the centre house drinks Milk.
- The Norwegian lives in the first house.
- The man who smokes Blends lives next to the one who keeps Cats.
- The man who keeps Horses lives next to the man who smokes Dunhill.
- The man who smokes Blue Master drinks Beer.
- The German smokes Prince.
- The Norwegian lives next to the Blue house.
- The man who smokes Blends has a neighbour who drinks Water.
Constraint Satisfying Problem (CSP)
Variables
We will define variables to represent the attributes of each house:
Color_blue, Color_green, Color_red, Color_white, Color_yellow,
Nationality_Brit, Nationality_Dane, Nationality_German, Nationality_Norwegian, Nationality_Swede,
Drink_beer, Drink_coffee, Drink_milk, Drink_tea, Drink_water,
Cigarette_blends, Cigarette_bluemaster, Cigarette_dunhill, Cigarette_pallmall, Cigarette_prince,
Pet_birds, Pet_cats, Pet_dogs, Pet_horses, Pet_fishes
Domains
Each variable will have a domain of {1, 2, 3, 4, 5}, representing the house numbers.
Constraints
Alldiff(Color_blue, Color_green, Color_red, Color_white, Color_yellow)
Alldiff(Nationality_Brit, Nationality_Dane, Nationality_German, Nationality_Norwegian, Nationality_Swede)
Alldiff(Drink_beer, Drink_coffee, Drink_milk, Drink_tea, Drink_water)
Alldiff(Cigarette_blends, Cigarette_bluemaster, Cigarette_dunhill, Cigarette_pallmall, Cigarette_prince)
Alldiff(Pet_birds, Pet_cats, Pet_dogs, Pet_horses, Pet_fishes)
- Nationality_Brit = Color_red
- Nationality_Swede = Pet_dogs
- Nationality_Dane = Drink_tea
- Color_green = Color_white - 1
- Color_green = Drink_coffee
- Cigarette_pallmall = Pet_birds
- Color_yellow = Cigarette_dunhill
- Drink_milk = 3
- Nationality_Norwegian = 1
- |Cigarette_blends - Pet_cats| = 1
- |Pet_horses - Cigarette_dunhill| = 1
- Cigarette_bluemaster = Drink_beer
- Nationality_German = Cigarette_prince
- |Nationality_Norwegian - Color_blue| = 1
- |Cigarette_blends - Drink_water| = 1
Solve
먼저 명시적으로 주어진 조건을 사용한다.
Drink_milk = 3
Nationality_Norwegian = 1
확정된 Nationality_Norwegian와 관련된 조건을 사용하면, 2번째 집이 파란색이라는 것을 알 수 있다.
|Nationality_Norwegian - Color_blue| = 1
milk가 3번째 집에 해당하기 때문에 다음 조건에 의해 4, 5번째 집의 색이 각각 green, white라는 것을 알 수 있다. 또한 coffee가 4번째 집에 해당한다는 사실도 알 수 있다.
Color_green = Color_white - 1
Color_green = Drink_coffee
첫 번째 집의 거주자가 Norwegian이므로 3번째 집이 빨간색이고 거주자가 Brit이라는 것을 알 수 있다. 따라서 첫 번째 집은 노란색이다.
Nationality_Brit = Color_red
첫 번째 집이 노란색이라는 것이 확정되었으니 다음 조건에 의해 dunhill이 첫 번째 집에 해당한다는 것을 확인할 수 있다.
Color_yellow = Cigarette_dunhill
거주자가 dunhill을 하는 집이 확정되었으므로 다음 조건에 의해 말을 키우는 집도 확정할 수 있다.
|Pet_horses - Cigarette_dunhill| = 1
tea와 beer 모두 첫 번째 집에 놓일 수 없으므로 첫 번째 집의 거주자는 water를 마신다.
Nationality_Dane = Drink_tea
Cigarette_bluemaster = Drink_beer
water의 위치가 확정되었다니 다음 조건에 의해 blend의 위치를 2번째 집으로 확정할 수 있다.
|Cigarette_blends - Drink_water| = 1
다음 조건에 의해 beer와 blue master가 5번째 집에 해당한다는 것을 확인할 수 있다. 자동으로 tea는 두 번째 집에 해당한다.
Cigarette_bluemaster = Drink_beer
tea의 위치가 결정되었으므로 다음 조건에 의해 Dane의 위치를 결정할 수 있다.
Nationality_Dane = Drink_tea
다음 조건에 의해 prince와 German이 4번째 집에 해당한다는 것을 알 수 있다. 자동으로 Swede가 5번째 집에 해당하고 Pall Mall이 3번째에 해당한다는 것을 확인할 수 있다.
Nationality_German = Cigarette_prince
결정된 Swede에 대한 다음 조건에 의해 dog가 5번째 집에 해당한다는 것을 확인할 수 있다.
Nationality_Swede = Pet_dogs
결정된 pall mall에 대한 다음 조건에 의해 birds가 세 번째 집에 해당한다는 것을 확인할 수 있다.
Cigarette_pallmall = Pet_birds
다음 조건에 의해 cat의 위치가 1번째 집에 해당한다는 것을 확인할 수 있다.
|Cigarette_blends - Pet_cats| = 1
Conclusion
The puzzle is solved with the following assignments:
House #1 | House #2 | House #3 | House #4 | House #5 | |
---|---|---|---|---|---|
Color | Yellow | Blue | Red | Green | White |
Nationality | Norwegian | Dane | Brit | German | Swede |
Drink | Water | Tea | Milk | Coffee | Beer |
Cigarette | Dunhill | Blends | Pall Mall | Prince | Blue Master |
Pet | Cats | Horses | Birds | Fishes | Dogs |