2013-03-02 139 views
0

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

话虽这么说,它通常工作得很好,当我测试了一下,让我为你提供的输出两个例子:

maze-1 -

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

现在让我把一些规则不是很明显我的迷宫:

  1. ŧ这里没有圆形路径(有些被困在墙上,但没有一个迷宫算法会遇到)。
  2. 它们总是从左上角开始,然后每次都有四个相同坐标的出口。
  3. 总是只有一个出口。

所以,我想要做的是,让我们考虑第一个截图。它运行良好,'找到'出口,有没有什么办法可以让matlab实验室弹出一个消息框(例如使用msgbox()),并说出类似“嗨用户,我找到了解决方案!这是A!”?我已经想了很久,但没有办法做到这一点。一个我认为溶液的约是,在伪代码:

if CertainCoordinate = red pixel 
    return A 

鉴于CertainCoordinate可能是A,B,C和d的不可改变的坐标(x和y)(然后,我会使用4 'IFS'),但我真的不知道如何实现这一点。任何想法或...什么东西指向我在正确的方向?所以,总结一下:我现在有一个算法,它现在生成一个红色的出口路径(如果你有任何建议,我可以更好的算法),但我的目标是让matlab告诉我他发现了什么,而不是让我看图片。因此,例如,在第一张图片中,我希望打开一个MessageBox并说出“嘿用户!我找到了出口,它是D!”,而不是向我显示带有红色路径的图像。问题是,我不知道如何教MatLab“D在哪里”,并让他认识到他发现了'D'。那么,有没有关于如何做到这一点的建议?

在此先感谢!

+0

它们是使用图着色思想的“连接组件”算法的变种。你应该参考一个标准的算法教科书,也许史蒂文Skiena,或由CLRS – Arcturus 2013-03-02 16:04:09

回答

0

假设您有一个图像,称为maze一组可能的x出口坐标和相应的y出口坐标。你也可以检查迷宫解决方案使用什么颜色,可以说这是Red

现在解决方案很简单。首先运行迷宫解算器,然后检查以下内容

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

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