假设我们有一个双向图,该图的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过程感到困惑。
答案 0 :(得分:1)
我建议为每个顶点制作L个副本。顶点(v,i)表示“处于”级别i的顶点v。如果我们不能从(v,i)到(w,j),则将边成本设为无穷大。例如,如果顶点v的级别为3,而顶点w的级别为2,则从(v,3)到(w,2)的成本为无穷大。
然后在生成的网络上求解标准shortest path problem。