迷宫生成算法

应用求并/查找数据结构的一个例子是迷宫的生成。起点位于左上角。而中点位于图的右下角。可以把迷宫看成是由单元组成的5X5矩形,在该矩形中,左上角的单元被连通到右下角的单元,而且这些单元与相邻的单元通过墙壁分离开来。
生成迷宫的一个简单算法是从各处的墙壁开始(除入口和出口之外)。此时,不断地随机选择一面墙,如果被该墙分割的单元彼此不连通,那么就把这面墙拆掉。重复这个过程直到开始单元和终止单元连通,那么就得到一个迷宫。
Q:如何设计一个生成迷宫的算法,这个迷宫不含有从开始点到终止点的路径,但却有一个性质,即拆除预先指定的一面墙后则建立一条唯一的路径。
A:运行上述生成迷宫的算法,但是不要删除指定的一面墙,设S1和S2是这面墙的两边的矩形。不要删除任何可以使S1与终止点连通的墙,同时不要删除任何将导致S2与开始点连通的墙,不断运行程序直到只剩下两个不相交集合。

点赞