C++ 使用BFS在图形中查找最短路径
我有一个由二维表格表示的矩形图(我不能改变图形表示的形式),如下所示:C++ 使用BFS在图形中查找最短路径,c++,graph,C++,Graph,我有一个由二维表格表示的矩形图(我不能改变图形表示的形式),如下所示: bool graph[n][m]; //where n and m are dimensions of rectangle 一般看来: bool graph[n][m]; //where n and m are dimensions of rectangle 我的问题是:在我的例子中,表示图形顶点之间距离的最佳方式是什么? 和:在这种情况下,我如何使用Dijkstry alghoritm的BFS找到从图[x0][y0]
bool graph[n][m]; //where n and m are dimensions of rectangle
一般看来:
bool graph[n][m]; //where n and m are dimensions of rectangle
我的问题是:在我的例子中,表示图形顶点之间距离的最佳方式是什么?
和:在这种情况下,我如何使用Dijkstry alghoritm的BFS找到从图[x0][y0]
到图[x1][y1]
的最短路径
我试图在互联网上搜索合适的解决方案,但我只看到基于向量、列表和结构的代码
重要编辑: 非常抱歉。我的图表仅在开头是矩形的。然后它会得到一些改变(顶点之间的距离),改变形状,使之不同。请获取相关信息。这个怎么样:
unsigned int horizontalEdges[n][m-1];
unsigned int verticalEdges[n-1][m];
Dijkstra算法的哪一部分被证明是困难的?这个呢:
unsigned int horizontalEdges[n][m-1];
unsigned int verticalEdges[n-1][m];
Dijkstra算法的哪一部分被证明是困难的?这个呢:
unsigned int horizontalEdges[n][m-1];
unsigned int verticalEdges[n-1][m];
Dijkstra算法的哪一部分被证明是困难的?这个呢:
unsigned int horizontalEdges[n][m-1];
unsigned int verticalEdges[n-1][m];
Dijkstra算法的哪一部分被证明是困难的?假设你的“图形”确实是一张地图,当单元格相邻时,你只能停留和移动在true
单元格上,那么一个简单的算法基于泛洪填充思想:
- 创建一个点的“活动列表”,仅在其中放置
(x0,y0)
在每一个“步骤”中,你都要考虑活跃列表中某个点的所有邻居,如果邻居可以继续走,而且还没有被访问,那么你就把它链接到你来自的单元,并把它标记为访问。您链接的所有点也将添加到“新活动列表”集合中
- a步骤结束后,您将使用新的活动列表而不是上一个列表重新开始
- 当其中一个为1时,算法结束。列表为空,2。您可以找到
。在最后一种情况下,有一条路径,可以按照保存的链接重建最短的路径(x1,y1)
true
单元格上移动,那么一个简单的算法基于泛洪填充思想:
- 创建一个点的“活动列表”,仅在其中放置
(x0,y0)
在每一个“步骤”中,你都要考虑活跃列表中某个点的所有邻居,如果邻居可以继续走,而且还没有被访问,那么你就把它链接到你来自的单元,并把它标记为访问。您链接的所有点也将添加到“新活动列表”集合中
- a步骤结束后,您将使用新的活动列表而不是上一个列表重新开始
- 当其中一个为1时,算法结束。列表为空,2。您可以找到
。在最后一种情况下,有一条路径,可以按照保存的链接重建最短的路径(x1,y1)
true
单元格上移动,那么一个简单的算法基于泛洪填充思想:
- 创建一个点的“活动列表”,仅在其中放置
(x0,y0)
在每一个“步骤”中,你都要考虑活跃列表中某个点的所有邻居,如果邻居可以继续走,而且还没有被访问,那么你就把它链接到你来自的单元,并把它标记为访问。您链接的所有点也将添加到“新活动列表”集合中
- a步骤结束后,您将使用新的活动列表而不是上一个列表重新开始
- 当其中一个为1时,算法结束。列表为空,2。您可以找到
。在最后一种情况下,有一条路径,可以按照保存的链接重建最短的路径(x1,y1)
true
单元格上移动,那么一个简单的算法基于泛洪填充思想:
- 创建一个点的“活动列表”,仅在其中放置
(x0,y0)
在每一个“步骤”中,你都要考虑活跃列表中某个点的所有邻居,如果邻居可以继续走,而且还没有被访问,那么你就把它链接到你来自的单元,并把它标记为访问。您链接的所有点也将添加到“新活动列表”集合中
- a步骤结束后,您将使用新的活动列表而不是上一个列表重新开始
- 当其中一个为1时,算法结束。列表为空,2。您可以找到
。在最后一种情况下,有一条路径,可以按照保存的链接重建最短的路径(x1,y1)