I'm frequently asked how I manage to draw my mazes in such a way that I can guarantee that there is exactly one path between the entrance and exit. In my initial drawing phase of a maze, I follow a very simple rule: "no existing pathway can join another". Making only "outward branches" ensures one path between entrance and exit in the same manner that adding an node/edge to a binary tree doesn't make loops.
However, I don't just start on one corner and grow my maze to other corner. I draw where my whim takes me and end up making hundreds of little disconnected sub-mazes.
In the final stage after I've filled the whole canvas with pathways, a state I call "line complete", I color each of these little sub-mazes. It's a large version of the four color problem - though I don't need an optimal coloring, and since I do it by hand, I use as many colors as is convenient, usually between six and eight.
Once I've colored all these little mazes, then I plan, in a general manner, the routes that I want my solutions to go. I usually provide two entrances and two exits, with solution paths that cross exactly once. Really, the entrances/exits don't matter, there is exactly one path between any two points, so any two points will do.
After route planning, then I start connecting these little sub-mazes together along the general routes. For my two solutions, I generally designate one to be the red path and the other, the green path. As I draw, say the green path, I solve each sub-maze with a bright green line, then recolor that sub-maze with a dark green color. Then choose the next adjacent sub-maze that follows the route plan. I connect the current and next sub-mazes together, extend my bright green line and spread the dark green to the next sub-maze. This process repeats over and over, so it takes days to do.
Once the solution paths are complete, the sub-mazes that have not been recolored to dark green or dark red become the false dead end maze pathways. I carefully follow my maze solutions looking for adjacent unused sub-mazes and start connecting them together in long chains. The longer the chains, the more difficult the maze becomes. As I add each sub-maze to a chain, I color with the appropriate dark color based on which solution the chain originally branched. This is where I'm in an adversarial conversation with some future maze solver - I'm always looking for ways to be deceptive, draw the eye away from the correct path.
At this point, I prove that I've produced a maze. I do this with floodfill and the idea that a maze is isomorphic with a binary tree. I can prove that every point is reachable by just flood filling the pathways (left image). If all pathways get color, then all points are reachable. Then I can prove that there is exactly one path between any two points by flood filling the background (right image). If there were more than one path between two points, then a background flood fill would leave an island without color.
This process has become second nature to me. The only intellectually difficult part is the planning and planting the deceptions. The rest just flows out of me with very little effort.
To come: How do I make the actual images that serve as subject matter to my mazes?