CS365 PROJECT

Solving Edge Matching Puzzle

Aniruddha Sahu & Gangaprasad Kotuwar
Under Prof. Amitabha Mukherjee



Home

Inroduction:

In this project of we are trying to solve edge matching puzzle by search algorithms (mostly Genetic Algorithm and Multiobjective Evolutionary Algorigthm). This problem is taken from "Eternity II Puzzle".The Eternity II Puzzle is a particularly hard tiling puzzle comprising 256 squares tiles and 22 colors that was released in 2007 as part of a competition to win 2M USD.
Edge matching puzzles are hard (NP-compute) Computational problems.
Here puzzle problem is discribed as, the puzzle constists a board with some 'r' rows and 'c' columns. The board filled with 'n(=rXc)' square tiles. Each of these has one colour for each side. Tile can move and can rotate 90, 180 and 270 degree. The aim is to cover the floor with these tiles. A tile can be placed adjacent to another if and only if the touching edge of the tiles match. The challenge is to cover maximum area in minimum time possible.

Motivation:

Considering the popularity of the games over the years, yet it remains a challenging puzzle. Since it is extremely unlikely to solve the puzzle, but attempt to do so provides an opportunity to learn the range of artificial intelligence and operations research techniques, alongwith.
Due to its huge search space(For the 256 tile puzzle there are: 256! × 4256 = 1.15 × 10661 possible tile combinations.) and challenges of dealing them, the project creates an opportunity to deepen the knowledge of certain areas of Search Algorithms in Artificial Intelligence.

Objectives:

(a) The first objective is to maximize the number of matching edges in colour,
(b) second objective is to maximize number of square regions of 2 by 2 tiles that match in their adjacent inner sides and
(c) third objective to maximize the number of tiles that have their four sides matched with the adjacent tiles.
The Implementation(back-tracking algorithm) Overview:
-Randomly generate a valid board.
-Jumble the tiles and remove them from the board.
-Place a tile onto the board in a valid position - i.e. the sides match neighbouring tiles or edge-colours.
-If there are no possible tiles left that fit the board then remove the previous tile and try alternatives.
-Repeat from 3. until the board is full.

Related Works:

(a) Marc labers: Marc labers implemented a C++Code which runs fairly well on low dimensional puzzles. Doc solver works by first creating arrays that list the pieces that will have given colors on certain edges. This means that finding a piece with, say a green left edge and a red top edge, requires indexing the 2 dimensional array storing left and top matching pieces with the code for a green edge and the code for a red edge. The solver works by starting at the top left corner and tiling towards the bottom right corner, so there is no need for an array that would contain matches for say, only top and bottom edges. If the solver reaches a dead end, it backtracks recursively to the last decision point and tries again. Once the solver reaches the lower right corner, a solution has been found.

References:

(1) Jorge Munoz, German Gutierrez and Araceli Sanchis, University Carlos III of Madrid Avda. de la Universidad 30, 28911 Legan ́s, Spain (2009). (PDF)

(2) Marijn J.H. Heule, Department of Software Technology, Faculty of Electrical Engineering, Mathematics and Computer Sciences, Delft University of Technology(2008).(PDF)(Pages 69 to 82)

(3) Wim Vancroonenburg , Tony Wauters , and Greet Vanden Berghe, CODeS research group, KaHo Sint-Lieven, Gebroeders Desmetstraat 1, 9000 Gent, Belgium. (PDF)