MatLab迷宫解决

时间:2013-03-02 15:31:09

标签: matlab maze

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

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

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

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

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

  1. 没有圆形路径(有些被困在墙上,但没有人会遇到迷宫解决者)。
  2. 它们始终位于左上角,然后每次都有相同坐标的四个出口。
  3. 总有一个出口。
  4. 所以,我想做的是,让我们考虑第一个截图。它运行良好并“找到”退出,是否有任何方法可以让mat实验室弹出一个消息框(例如使用msgbox())并说出“嘿用户,我找到了解决方案!它是A!”之类的东西?我已经考虑了很长一段时间了,但是没有办法做到这一点。我想到的解决方案之一是伪代码:

    if CertainCoordinate = red pixel
        return A
    

    虽然CertainCoordinate可能是A,B,C和D的不可更改的坐标(x和y)(然后我会使用4'ifs'),但我真的不知道如何实现它。任何想法或某些事情都指向我正确的方向?

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

    提前致谢!

1 个答案:

答案 0 :(得分:0)

假设您有一个名为maze的图像,其中包含退出的可能x坐标和退出的相应y坐标。你也可以检查迷宫解决方案使用的颜色,让我们说这是Red

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

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

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