Questions tagged «maze»

10
表示并解决给定图像的迷宫
代表并解决给定图像的迷宫的最佳方法是什么? 给定JPEG图像(如上所示),读入,将其解析为某种数据结构并解决迷宫的最佳方法是什么?我的第一个本能是逐像素读取图像并将其存储在布尔值列表(数组)中:True对于白色像素,False对于非白色像素(可以丢弃颜色)。这种方法的问题在于图像可能不是“像素完美”的。我的意思只是说,如果墙壁上的某处有白色像素,可能会产生意外的路径。 另一种方法(经过一番思考后才想到)是将图像转换为SVG文件-SVG文件是在画布上绘制的路径的列表。这样,可以将路径读入相同种类的列表(布尔值),其中True表示路径或墙壁,False表示可移动的空间。如果转换不是100%准确,并且不能完全连接所有墙,从而产生间隙,则此方法会出现问题。 转换为SVG的另一个问题是这些线不是“完美”的直线。这导致路径是三次贝塞尔曲线。使用由整数索引的布尔值列表(数组),曲线将不易转移,并且必须计算曲线上直线的所有点,但不会与列表索引完全匹配。 我假设虽然其中一种方法可能会(虽然可能不会)起作用,但考虑到如此大的图像,它们的效率很低,并且存在更好的方法。如何做到最好(最有效和/或最低复杂度)?有没有最好的方法? 然后是迷宫的解决。如果我使用前两种方法中的任何一种,则基本上将得到一个矩阵。根据该答案,表示迷宫的一种好方法是使用树,而使用A *算法来解决它的好方法。一个人如何根据图像创建一棵树?有任何想法吗? TL; DR 解析的最佳方法?变成什么数据结构?所述结构将如何帮助/阻碍解决? 更新 我已尝试使用numpy@Thomas建议的方式实现@Mikhail用Python编写的内容。我认为该算法是正确的,但无法正常运行。(下面的代码。)PNG库是PyPNG。 import png, numpy, Queue, operator, itertools def is_white(coord, image): """ Returns whether (x, y) is approx. a white pixel.""" a = True for i in xrange(3): if not a: break a = image[coord[1]][coord[0] * 3 + i] > …

14
编程原理:解决迷宫
解决迷宫的可能方法有哪些? 我有两个主意,但我认为它们不是很优雅。 基本情况:我们有一个矩阵,该矩阵中的元素以代表迷宫的方式排序,一种进出一种迷宫。 我的第一个想法是让机器人从迷宫中穿过,直到一侧离开迷宫。我认为这是一个非常缓慢的解决方案。 第二个遍历每个标记为1的连续项,检查它可以去向何处(上,右,下,左),选择一种方法,并在该处继续其路径。这甚至比第一个慢。 当然,如果我在两个交叉点使两个机器人成为多线程,速度会更快一些,但这也不是最好的方法。 需要有更好的解决方案来使机器人通过迷宫。 编辑 第一:谢谢你的美好的答案! 我的问题的第二部分是:如果我们有多维图,该怎么办?是否有特殊的做法,或者贾斯汀·L。的答案是否也可以用于此? 我认为这不是解决此问题的最佳方法。 第三个问题: 哪种迷宫求解器算法最快?(完全假设)
73 algorithm  maze 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.