2023–24 Projects:
One of my favorite logic puzzles is called Slitherlink (or sometimes loop-the-loop). Slitherlink is deceptive in that there are only a few simple rules, but finding a solution can be quite complex, and in fact has been proven to be NP-complete (Yato, 2000). The rules of Slitherlink are as follows:
1. The final solution must be a continuous line that does not cross itself.
2. Each numbered cell must have the given number of edges filled by the solution line.
3. Each puzzle should have a single unique solution.
Here is an example puzzle shown in its initial state, partially solved, and fully solved.
Many methods have been explored in Slitherlink to both solve and automatically generated puzzles, including rule-based systems, constraint logic programming, learning algorithms, and even evolutionary algorithms.
The goal of this project will be to implement and compare several of these methods to solve and generate Slitherlink puzzles. It will likely be useful to create a very simple visualization to see an algorithm solving a specific puzzle, or to see the puzzle that an algorithm creates, however the focus of this project will be the analysis of the algorithms themselves, not creating an app for the puzzle. The deliverables for this project will include a paper describing the methods used and comparing them in efficiency/effectiveness.
The outline of this project will be something like the following:
Further directions for this project could include generating puzzles for a specific user based on data from their previous puzzle solving. For example tailoring the difficulty of puzzles to the user's current solving ability, or determining the traits of puzzles the user enjoys most based on ratings and creating puzzles for them with those traits.
It would be useful to have taken algorithms and/or computability & complexity. Also for some of the more advanced methods any experience with AI or EvoComp would be beneficial.