【问题标题】:MatLab maze solvingMatLab 迷宫求解
【发布时间】:2013-03-02 15:31:09
【问题描述】:

我已经使用 Image Analyst http://www.mathworks.com/matlabcentral/fileexchange/27175-mazesolution 的 maze_solution 函数有一段时间了,没有出现任何问题。有一些限制:迷宫必须是完美的并且没有圆形路径。

话虽如此,当我测试它时,它通常工作得很好,让我提供两个输出示例:

maze-1 -> solution-1(显然效果很好)

maze-2 -> solution-2(不太好)

现在让我提出一些关于我的迷宫并不明显的规则:

  1. 没有圆形路径(有一些被困在墙壁中,但迷宫解算器不会碰到)。
  2. 它们总是从左上角开始,然后每次都有四个出口在同一个坐标。
  3. 总是只有一个出口。

所以,我想做的是,让我们考虑第一个屏幕截图。它运行良好并“找到”出口,有没有办法让 mat lab 弹出一个消息框(例如使用 msgbox())并说“嘿,用户,我找到了解决方案!它是 A!”?我已经考虑了很长时间,但没有找到这样做的方法。我想到的解决方案之一是伪代码:

if CertainCoordinate = red pixel
    return A

CertainCoordinate 可能是 A、B、C 和 D 的不可更改坐标(x 和 y)(然后我会使用 4 个“ifs”),但我什至不知道如何实现。有什么想法或...可以为我指明正确方向的东西吗?

所以,总结一下:我有一个算法现在会生成一条红色的出口路径(如果你有任何建议,我愿意接受更好的算法)但我的目标是让 matlab 告诉我他发现了什么,而不是在图像中显示我。例如,在第一张图片中,我希望它打开一个 MessageBox 并说“嘿,用户!我找到了出口,它是 D!”,而不是向我显示上面带有红色路径的图片。问题是,我不知道如何教 MatLab 'D 在哪里'并让他认识到他找到了'D'。那么,对于如何做到这一点有什么建议吗?

提前致谢!

【问题讨论】:

  • 它们是使用图形着色思想的“连接组件”算法的变体。您应该参考标准算法教科书,可能是 Steven Skiena,或 CLRS

标签: matlab maze


【解决方案1】:

假设您有一个名为maze 的图像,其中包含可能的出口x 坐标和相应的出口y 坐标。您还可以查看迷宫解决程序使用什么颜色,假设这是Red

现在解决方案非常简单。先运行迷宫求解器,然后检查如下

isRed = maze(x,y) == Red;
exitxCoordinates = x(isRed)
exityCoordinates = y(isRed)

这为您提供 x 和 y 坐标。 (如果没有找到解决方案,它们是空的)。 从这里将它们连接到您指定的字母之一应该不会太难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 2013-04-16
    • 2014-09-25
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多