从源到目的地的最短路径,且遍历的顶点顺序受到限制

时间:2019-06-12 20:34:12

标签: graph graph-algorithm shortest-path breadth-first-search

假设我们有一个双向图,该图的V数量的顶点和E数量的边缘,所有边缘的权重均为1。现在,源中的每个顶点都具有自己的水平,并假设我们要达到假设我们从级别1开始。当级别为i时,我们只能通过级别0或级别i的顶点。传递具有等级i的顶点后,我们将等级提高1。

现在,在给定起点和目标水平的情况下,我们如何计算达到目标水平所需的最小步骤(成本)?

我相信可以通过修改后的BFS算法解决此问题。到目前为止,我可以确定是否存在这样的路径,但是我在计算成本方面尚未成功。

任何帮助和建议将不胜感激。

例如,让我们有一个图,其中V = 5,E = 4,L = 3,起点在顶点0。 以下几行是每个顶点的级别:

0无等级

1 0

2 0

3 2

4 1

以下E线代表边缘:

0 1

1 2

2 3

0 4

使用此输入,输出应为:5(0-> 4-> 0-> 1-> 2-> 3)。 但是,我的代码输出为3(0-> 1-> 2-> 3)。

在计算距离时,我仍然对如何包含0-> 4-> 0过程感到困惑。

1 个答案:

答案 0 :(得分:1)

我建议为每个顶点制作L个副本。顶点(v,i)表示“处于”级别i的顶点v。如果我们不能从(v,i)到(w,j),则将边成本设为无穷大。例如,如果顶点v的级别为3,而顶点w的级别为2,则从(v,3)到(w,2)的成本为无穷大。

然后在生成的网络上求解标准shortest path problem