Lately I’ve been losing sleep trying to understand an algorithm I read about in an academic publication. Part of the problem was that the application I was applying it to required a sort of reversal, which was confusing. But a bigger part of the problem was that I just couldn’t “see” it. I’d lay in bed, trying to imagine working with ping-pong balls on a string, or marbles on fishing line, or anything I could really get my “mind’s hands” on.
A few days ago I thought to myself, “there has to be a better way; there has to be a tool to help me do this.” In my life time I’ve done very little visual work, all of it bad, and I know I can’t be alone. But after taking Robert Sedgewick’s algorithms course and seeing all of the lovely visualizations from his lab, I knew there must be tools out there for visualizing algorithms, at least for educational use. Surprisingly, I didn’t find too many quick ways to do this, but one recently created service fit the bill.
It’s called Algomation. Lots of algorithms are available just for viewing on the home page. Each algorithm gets a viewing window for whatever visualization is provided, and the user can rewind as needed. A handy info box on the side gives information on the current operation, variables, and even code location. The visualizations themselves look very nice.
Once you’re registered, you can create new algorithms or fork from others' creations. Here’s mine:
Granted, this is a little rough around the edges (and I have used the heck out of the feedback form); however, this is way better than imagining ping-pong balls on a string, and now I really understand how AddIntent works. The service is still young, and I have high hopes for this becoming an expansive library of algorithm visualizations.
Here’s my wishlist (in no particular order):
- Analogical Modeling, and other machine learning algorithms
- CKY, and other parsing algorithms
- Close-by-One, and other FCA algorithms
- Cooley-Tukey Fast Fourier Transform
What’s on your wishlist?