Maze Generation: Kruskal's Algorithm
weblog.jamisbuck.org
weblog.jamisbuck.org
Discussing asymptotic behaviour is only useful if you're able to understand how your code needs to look to actually achieve it.
The Ackermann function grows extremely quickly (quicker than any primitive recursive function I believe), so its inverse grows extremely slowly. In fact, α(x) is less than 5 for "reasonable" values of x such as the number of atoms in the universe. Therefore, the amortized run time of the disjoint set operations can be thought of as essentially constant.
Also of interest to me is that the inverse Ackermann function is proven to be the asymptotically optimal run time for the disjoint set operations. I'm not equipped to understand that particular proof of asymptotic optimality, but other such proofs (like the O(n lg n) running time for comparison sort) are elegant and awesome.
This is correct. It was basically invented to show that primitive recursion is not capable of computing every computable function.
Here’s a simple (not very efficient) implementation you can play with, in both senses: http://s3.boskent.com/mazes/kruskal.html
And a sample output: http://i.imgur.com/uV4XR.png
I find that the Kruskal mazes often have long walls or large open spaces; they don't have those tricky dead-ends that you can find in newspaper mazes, for instance.