首页 文章

MatLab迷宫解决

提问于
浏览
0

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

话虽这么说,我测试时通常效果很好,让我给你提供两个输出示例:

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

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

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

  • 没有圆形路径(有一些被困在墙上,但没有人会遇到迷宫解算器) .

  • 它们始终位于左上角,然后每次都有相同坐标的四个出口 .

  • 总有一个出口 .

所以,我想做的是,让我们考虑第一个截图 . 它运行良好并“找到”退出,有没有办法让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

    假设您有一个名为 maze 的图像,可能是出口的 x 坐标和出口的相应 y 坐标 . 你也可以检查迷宫解决程序使用的颜色,让我们说这是 Red .

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

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

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

相关问题