There are two basic ways of maze generation: algorithmic and non-algorithmic.
Algorithmic methods create mazes according to a predefined step order. In order to create
a randomly (more accurately – a pseudorandomly) structured maze, at least one or more
steps need to be randomized (i.e. the decision making within the step has to use a function
returning a random result). This thesis puts focus on graph based algorithms (while there
are actually two aspects of mazes that are related to graphs: maze generation and maze
structure per se).
Graph based maze generation algorithms create mazes by building a spanning tree,
which is a kind of graph (see further chapters for a more formal description). At the end
of the generation process a spanning tree topologically corresponding to a maze is created.
The tree is either being gradually assembled by joining smaller fragmental tree structures
(e.g. Kruskal’s algorithm) or the creation can continuously expand from one specific randomly
chosen spot (a maze cell designated as the root of the tree), e.g. Prim’s algorithm.
There are two basic ways of automated maze generation: wall adding and passage carving
(see Section 1.2.7). The recursive division method is an example of a wall adding algorithm.
Some maze generation algorithms (e.g. Prim’s algorithm) can even be implemented
both ways, i.e. as a passage carver as well as a wall adder.
Fractal mazes (see Section 1.2.4) can be potentially created in an algorithmic way. It is a
way of assembling individual fractal mazes into a whole. All fractal maze parts need to be
topologically equivalent and their tessellation systems must fit. Also the border overpasses
between them have to be synchronized in order to enable the solver to move within them.
The non-algorithmic methods are not interesting for the purpose of this thesis and will
not be discussed any further