问题陈述如下:
鉴于地图中有一些障碍。给出一个起点S. 和结束点E,找到从S到E的最短路径。注意你可以 从S中选择任意(4)方向,但在此过程中,您只能选择 除非你遇到障碍,否则从前一个方向直行。
我对此约束感到困惑,但在此过程中,您只能
直接从前一个方向走,除非你遇到障碍。
这是否意味着直接的BFS无法解决这个问题?修改后的BFS或DFS是否能够为此找到解决方案?
声明:我正在寻找解决方案,只是一些提示或想法。
答案 0 :(得分:4)
是的,一个简单的BFS可以在任何一个单元格转动,而在这个问题上,你只能在碰壁时转动。
问题仍然可以通过修改后的图表上的BFS解决。要正确模拟约束,可以创建辅助顶点,只能从一个方向移动。
或者,您可以使用加权边构建另一个新图形,并在其上使用更通用的最短路径算法(Dijkstra或Ford-Bellman)。具体来说,当您站在单元格中并选择方向时,请向单元格绘制边缘,您可以再次更改方向。该边缘的重量就是两个单元之间直线路径的长度。