Tag: 迷宫

什么是生成迷宫的好algorithm?

假设你想要一个简单的迷宫,在一个由M格子构成的N上,有一条path通过,并且有很多死路,但是看起来是“正确的”(也就是说像某人手工制作的那样,没有太多的小死胡同, )。 有没有一种已知的方法来做到这一点?

生成一个塔防御迷宫(最长的迷宫与有限的墙壁) – 近乎最佳的启发式?

在一个塔防游戏中,你有一个NxM网格,有一个开始,一个完成和一些墙。 敌人从起点到终点都走最短的路,而不经过任何的墙(它们通常不会被限制在网格中,但是为了简单起见,我们假设它们是无论如何都不能穿过对angular的“洞”) 问题(至less对于这个问题)是放置K个额外的墙壁,以最大化敌人必须采取的path。 例如,对于K = 14 我的直觉告诉我,如果(正如我所希望的那样)这个问题是NP难的,我们把这个问题推广到包括在到达终点之前必须访问的路点,也可能没有路点。 但是, 有没有什么像样的启发式algorithm可以接近最优解? [编辑]我在这里发布了一个相关的问题。

编程理论:解决迷宫

什么是解决迷宫的可能方法? 我有两个想法,但我认为他们不是很优雅。 基本情况:我们有一个matrix,这个matrix中的元素被sorting,它代表一个迷宫,一个方向,一个方向。 我的第一个想法是把一个机器人通过迷宫,一边,直到它走出了迷宫。 我认为这是一个非常缓慢的解决scheme。 第二个通过每一个标有1的项目,检查它可以去的地方(向上,向右,向下,向左)select一种方式,并在那里继续它的path。 这比第一个还要慢。 当然,如果我在每个交叉点上使两个机器人都是multithreading的,那么速度会更快一些,但那也不是最好的方法。 需要有更好的解决scheme来发送一个bot在迷宫中。 编辑 首先:感谢您的好答案! 我的问题的第二部分是:如果我们有一个多维图,该怎么办? 有没有特别的做法呢,还是Justin L.的答案呢? 我认为这不是最好的办法。 第三个问题: 哪一种迷宫求解algorithm是最快的? (纯粹假设)

代表和解决迷宫的形象

代表和解决一个迷宫的最佳方式是什么? 给出一个JPEG图像(如上所示),读入它的最佳方式是什么,将其parsing为一些数据结构并解决迷宫问题? 我的第一本能是逐像素地读取图像,并将其存储在布尔值的列表(数组)中:对于白色像素为True ,对于非白色像素为False (可以丢弃颜色)。 这个方法的问题是,图像可能不是“像素完美”。 我只是说,如果在墙上的某个地方有一个白色像素,它可能会产生一个无意的path。 另一种方法(经过一番思考后find的)是将图像转换为SVG文件 – 这是在canvas上绘制的path列表。 这样,path可以被读入相同types的列表(布尔值),其中True表示path或墙壁, False表示可行驶的空间。 如果转换不是100%准确的,并且没有完全连接所有的墙壁,则会产生这种方法的问题,造成空白。 另外一个转换为SVG的问题是线条不是“完美”的直线。 这导致path为三次贝塞尔曲线。 对于由整数索引的布尔值列表(数组),曲线不会轻易转移,曲线上的所有点将不得不计算,但与列表索引不完全匹配。 我认为,虽然其中一种方法可能有效(尽pipe可能不是),但鉴于这样一个大的形象,它们可能是效率低下的,而且存在一个更好的方法。 这是如何最好(最有效和/或最简单的)? 还有最好的方法吗? 然后是解决迷宫。 如果我使用前两种方法中的任何一种,我将基本上以matrix结束。 根据这个答案 ,代表一个迷宫的一个好方法是使用一棵树,而解决这个问题的一个好方法是使用A *algorithm 。 如何从图像中创build一棵树? 有任何想法吗? TL; DR 最好的parsing方法? 进入什么数据结构? 上述结构如何帮助/阻碍解决? UPDATE 我已经试过我的手在实现@Mikhail使用numpy编写的Python,就像@Thomas推荐的一样。 我觉得这个algorithm是正确的,但是这个algorithm并没有像预期的那样工作。 (代码如下)PNG库是PyPNG 。 import png, numpy, Queue, operator, itertools def is_white(coord, image): """ Returns whether (x, y) is approx. a white […]