Jigsaw Problem Reduction
I’m a huge fan of the youtube channel StuffMadeHere where a professional machinist named Shane Wighton makes fun little objects/robots to perform complex tasks. Four months ago he dropped a video about making a robot that can solve a large jigsaw puzzle.
Super cool but not the point of this post. As many of you know (or will soon learn), building the robot is only half the battle! You need to give the robot a (hopefully fast) brain. In the original video, Mt. Wighton promised to post a follow-up video where he discusses all the algorithms he used to enable his robot to solve a multi-thousand piece video. That’s the video he posted today:
My favorite part of this video is that it presents quite a few algorithmic concepts and how they relate to this cool fun application of building a jigsaw solving robot. Most of the stuff he presented are well-known heuristic and approximate algorithms which are a class of algorithms devoted to improving the average compute time (amortized analysis) of known NP problems (even if the worst-case running time is still exponential). Heuristic/approximate algorithms are why there are SAT solvers that can solve SAT formulas with tens of thousands of literals and clauses in minutes!
One of your CAs, Mr. Sumedh Vemuganti decided that it might be fun to prove if the JigSaw puzzle problem is NP-Complete (spoiler: depends on how we define the problem)
- Erickson, Jeff. Algorithms
- Sipser, Michael. Introduction to the Theory of Computation
- Chapter 7 - Time Complexity
- Skiena, Steven. The Algorithms Design Manual
- Chapter 11 - NP-completeness
- Sedgewick, Robert and Wayne, Kevin. Algorithms (Forth Edition)
- Chapter 6 - Context.Intractability
- Cormen, Thomas, et al. Algorithms (Forth Edition)
- Chapter 32 - NP-Completeness
- Sariel’s Lecture 23