用于遍历与某些必需点(JavaScript/Java/C#)接触的2D数组(网格)的最佳寻路算法
我有一个二维数组,我希望通过以下约束从一个点开始遍历到另一个点结束:用于遍历与某些必需点(JavaScript/Java/C#)接触的2D数组(网格)的最佳寻路算法,c#,java,javascript,path-finding,dijkstra,C#,Java,Javascript,Path Finding,Dijkstra,我有一个二维数组,我希望通过以下约束从一个点开始遍历到另一个点结束: 只允许在水平和垂直方向上移动 路径必须接触阵列内的每个强制点 阵列没有障碍物 这是一个图形表示: +---+---+---+---+---+---+ | 0 | 0 | 1 | 0 | 0 | E | +---+---+---+---+---+---+ | 0 | 1 | 1 | 0 | 1 | 0 | +---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 0 | +---+---
- 只允许在水平和垂直方向上移动
- 路径必须接触阵列内的每个强制点
- 阵列没有障碍物
+---+---+---+---+---+---+
| 0 | 0 | 1 | 0 | 0 | E |
+---+---+---+---+---+---+
| 0 | 1 | 1 | 0 | 1 | 0 |
+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+---+
| S | 0 | 1 | 0 | 0 | 0 |
+---+---+---+---+---+---+
从点S开始,算法应该能够找到到达E的最短路径,接触所有被“1”环绕的点,并且仅水平或垂直移动
我必须用Javascript实现它(但即使用C#或Java也应该不错,我想我可以翻译它:)
哪种算法最适合我的需要?
我在谷歌上搜索了很多,但只找到了一些类似但不同的Dijkstra或a star实现(它们不必触及强制点…)
有人经历过这样的问题吗
有人能帮忙吗
提前谢谢你好的,很抱歉回复晚了。我想你可能已经得到了一些实现。如果没有,请考虑一下 让我先做一个简单的版本。让我们假设S和E在各自的列中要么是最上面的,要么是最下面的。所讨论的问题图片符合这一点 算法应:
另外,我记得在什么地方做过这个算法问题。如果我找到什么地方,我会把消息来源发出去 S和E是固定的吗?比如S是左下角,E是右上角?就像S和E总是相对的角?不,它们不是固定的,但它们总是在边界列上,并且彼此相对,我的意思是如果S在最左边的列中,E在最右边,反之亦然。但是,如果你有一个相反的角落的解决方案,可以自由分享:你是否考虑使用回溯算法?谢谢Gamb,我不知道回溯算法,你知道我在哪里可以找到一些例子吗?