【发布时间】:2014-10-15 22:56:08
【问题描述】:
所以,假设我有一个迷宫,它有一个起点和一个终点,分别用橙色和红色标记,我的目标是找到它们之间的最小距离。阻塞路径用黑色表示,开放路径用白色表示。不过这里做了两处修改。
- 有一些必须访问的单元格,以灰色标记。
- 任何单元格都可以被访问任意次数(包括开始、结束和必须访问的点)
对于前- B=黑色,W=白色,G=灰色,R=红色,O=橙色
BBBBBB BBBBB
BBGBBB BWGGB
MAZE1 => BOWGRB MAZE2 => BOBBB
BBGBBB BWWRB
BBBBBB BBBBB
在这种情况下,ans 将是
MAZE1 => M[2][1] => [2][2] => [1][2] => [2][2] => [3][2] => [2][2] => [2][3] => [2][4] = 7
MAZE2 => M[1][1] => [1][2] => [2][2] => [3][2] => [3][3] => [3][2] => [2][2] = 6
如你所见,节点出现多次
首先我想到了使用递归技术(回溯),但无法找到算法。和
所以我想到了用这种方式。
- 我将跟踪所有必游点、起点和终点的坐标
- 找到每个节点之间的距离(就像在选择排序中我们比较每个术语一样,我们得到每个节点之间的最小距离(使用 BFS))
- 然后应用一些最小距离算法。我想到了 TSP,但它说节点必须只访问一次。这里可以是多次。我发现了中国邮递员的问题,但不知道是否可以在这里应用。 Floyd warshall 算法是存在的,但它并不包括每一点
我应该如何进行,有什么想法吗?
【问题讨论】:
-
这个问题最近好像很有名,我至少看过3个关于这个的问题。请问您是从哪里得到这个问题的?
-
有名吗?我刚刚抄袭了最初的迷宫问题。但是现在,当我想到它时,它在机器人技术中可能非常有用。这些问题以前有回答吗?可以分享一下链接吗:)
-
好的,所以我在正确的轨道上,它实际上是一个 TSP 扯掉
标签: algorithm shortest-path path-finding maze traveling-salesman