Meet the Contestants and Mazes

The honorable contestants were: The mazes that they submitted for the competition were: In addition, the following mazes were used just for fun:

Competition Rules

Looks count as 0, moves as 1, jumps as 2.

As the contest was being set up, there was some discussion as to whether we have the person with the best overall score win, or the person who "won" the most mazes. I optimistically assumed that the same person would get both, so we didn't formally decide on a winner's criteria.

Each contestant submitted a single algorithm. Hau and I also ran our alternate algorithms (his a breadth-first search; mine a breadth-first search and a hybrid depth-first/breadth-first search), though these were not counted in the competition.

Each maze was run, it was checked to see if it found the/a shortest path, and the number of moves and jumps was recorded. Core dumps and algorithms that took an extremely long time to run were noted with "core" and "zzzz" entries accordingly.

Competition Summary

Hau's algorithm was run first since he was under time pressure. It did not complete Andrew, Brad, or Rabi's mazes in a reasonable amount of time, presumably because these mazes involve lots of junctions (including large open spaces) that can cause exponential explosion in the amount of searching required if something isn't done to prune the space.

Rabi's algorithm was run next since he wasn't around to represent himself. It successfully ran all the mazes, but unfortunately turned in a longer-than-ideal path for Hau's maze (as well as the flower). On this basis, Rabi's algorithm had to be eliminated from competition because it was impossible to tell when he was correctly finding a shortest path and when he got it accidentally.

Andrew and Brad both wanted to go next, certain that their algorithm would do worse. Andrew won the argument, but ended up doing better than Brad. Andrew successfully completed all 5 competition mazes, all in impressive numbers of move/jump counts. It should be noted, however, that his algorithm took an exceedingly long time to run on Rabi's maze and never completed on the Rabi-Brad maze.

Brad successfully completed all mazes, but wasn't nearly as aggressive in his optimizations as Andrew and Anthony.

Anthony's algorithm was run last. He turned in exceedingly good scores for all of the competition mazes, very comparable to Andrew's scores except for Andrew's which he did significantly worse on. His algorithm also core dumped on Rabi's maze, presumably due to the fact that Weiss' heap implementation doesn't resize itself. The other competitors seemed willing to give him the benefit of the doubt that this was an easy fix and let it go.

The full competition results are listed below.

And the Winner Is...

Brad waffled on the final decision, and ended up announcing both Andrew and Anthony as winners. Anthony won 3 out of 5 mazes (and may have won or tied for a 4th if not for Weiss' failure to resize his heap). His scores were quite solid across the board, generally beating out Andrew's due to fewer jumps used.

Andrew on the other hand had extremely competitive scores, and a lower overall score due to the fact that his maze was designed to work so well for his algorithm and so poorly for most other approaches that Anthony's algorithm did an order of magnitude worse on it. Since each won according to one metric, and their results were generally quite close, a tie was declared.

Brad got an honorable mention for being the only implementation to successfully complete all mazes in the amount of time he was willing to wait. :)

Thanks to all the competitors!!

Full Competition Results

Green = Winner of that maze
Yellow = Wow, look at Andrew school Anthony's algorithm!!
Red = Returned longer path than ideal
Blue = Score across all mazes
Grey = Not considered in competition