在矩阵中寻找最短路径的算法
2013-11-29 18:16:45
收藏:0
阅读:115
评论:1
我试图找到下面问题的算法,但我找不到。
您有一个矩阵,大小为10x6(如果重要)。 (x维度为10,y维度为6)。 算法接收两个点,打开点和目标点。 该数组充满了0和1,并且它应该找到它们之间1的最短路径,并返回这条路径上的第一个点(通向目标的下一个点)。 但是这里有个陷阱:
每个点仅可以获取以下点的值:
1.它上面的点。 2.它下面的点。 3.它左边的点。 4.它右边的点。
并且要使事情变得更加困难:对于每个点,其他点的值可能不同。例如:
1.开放点为0,0。 0,1的值为1; 2.开放点为0,2。 0,1的值为0。
我可以计算出该值,因此对您来说不应该有任何问题... 因此,如果您找到其他方法,则认为递归是解决它的唯一方法,则欢迎您。
解决方案应在LUA,C#或JAVA中提供。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你可以将你的矩阵简单地解释为一个图。每个元素 (i,j) 对应一个节点v(i,j),仅当它们对应的元素相邻且均为1时,这两个节点才相连。
例如下面的矩阵有四个顶点v(0,0), v(0,1), v(1,0) 和 v(1,1),边集为{v(0,0),v(0,1)}和{v(0,1),v(1,1)} (顶点v(1,0)是孤立的)。
由于你的图是无权图,你可以简单地使用广度优先搜索 (BFS) 来找到最短路径。伪代码请参见:http://en.wikipedia.org/wiki/Breadth-first_search#Pseudocode
你对矩阵中的每个元素都只知道它的相邻元素,这并不重要。当谈论图的话,这意味着每个顶点都知道它的邻居,这正是你在BFS中所需要的。使用不同的图搜索不同的起始点也不会使问题变得更加困难。
仅两点针对链接的伪代码:
它仅检查是否存在连接。如果你想要最短路径,你需要进行以下更改。当从它的邻居t中查看时添加新顶点u到队列中时,你必须在u处存储一个指向t的链接。当你最终找到目标时,回溯链接将给出最短路径。
使用set来存储哪些元素已经被访问是低效的。在你的情况下,只需要使用与输入矩阵大小相同的布尔矩阵来标记顶点是否被访问。