具有约束,BFS或DFS的最短路径算法

时间:2014-07-05 20:20:20

标签: algorithm graph depth-first-search breadth-first-search

问题陈述如下:

  

鉴于地图中有一些障碍。给出一个起点S.   和结束点E,找到从S到E的最短路径。注意你可以   从S中选择任意(4)方向,但在此过程中,您只能选择   除非你遇到障碍,否则从前一个方向直行。

我对此约束感到困惑,但在此过程中,您只能

  

直接从前一个方向走,除非你遇到障碍。

这是否意味着直接的BFS无法解决这个问题?修改后的BFS或DFS是否能够为此找到解决方案?

声明:我正在寻找解决方案,只是一些提示或想法。

1 个答案:

答案 0 :(得分:4)

是的,一个简单的BFS可以在任何一个单元格转动,而在这个问题上,你只能在碰壁时转动。

问题仍然可以通过修改后的图表上的BFS解决。要正确模拟约束,可以创建辅助顶点,只能从一个方向移动。

或者,您可以使用加权边构建另一个新图形,并在其上使用更通用的最短路径算法(Dijkstra或Ford-Bellman)。具体来说,当您站在单元格中并选择方向时,请向单元格绘制边缘,您可以再次更改方向。该边缘的重量就是两个单元之间直线路径的长度。