Moving Sofa Problem

Published on December 27, 2024

The Problem

One of the interesting open math problems emerged in 1966 by Leo Moser. It is described as follows

What is the largest area of a shape that can be maneuvered through a unit-width L-shaped corridor?

empty corridor of width 1

I was introduced to this problem and couldn't get it out of my head

My Approach to Finding the Sofa

I realized this problem could be abstracted to the pivot point of these sofas. If you knew that point then as it translated and rotated around the corridor the extents of the sofa would be defined by the corridor walls themselves

If you could define different continuous paths that included x, y and θ (rotation) you could use that to determine the sofa shape and therefore area

While less rigorous than other mathematical approaches, this intuitive method seemed worth exploring. With this theoretical framework in place, the next step was implementing a practical method to generate and test these paths.

Initial Path Generation

This led to a method of generating paths. It was an interesting first step

After this I changed to using matplotlib to visualize it (faster, more familiar) and were able to also calculate the area using convex hulls.

These developments of the code led to our final product, which gave us some results

.

.

This was the most fun portion of the project -- tweaking parameters and seeing the result was really the output I was hoping for. Feel free to play with it yourself, the code can be found here. Some of the solutions got close to the maximum known answer of 2.2195, but none surpassed it

Presentation

This work happened to coincide with a friend's party where we all gave 10 minute presentation about things we are passionate about. I adapted this project into a brief history of the problem and the work that I did on it. The slides can be found here

Conclusion

This was, at its core, a chance to play with an elegant mathematical puzzle. While not advancing the mathematical bounds of the problem, creating these tools helped me better understand the geometric constraints at play and explore it hands-on. The code and visualizations are available for others who want to experiment with this puzzle