给定具有正权重的无向图,有两种边:锁定边和未锁定边。确定给定边缘是锁定边缘还是未锁定边缘需要O(1)。
对于给定的两个顶点 s , t 和一个正数 k = O(1),我怎样才能找到 s 和 t 之间的最短路径,其中包含最多 k 锁定边缘?
对于给定的两个顶点 s , t 和一个正数 k = O(1),我怎样才能找到 s 和 t 之间的最短路径,其中包含完全 k 锁定的边缘?
我不确定如何在此图上运行Dijkstra算法以找到给定顶点之间的最短路径,以及如何将无向图转换为定向< / strong>一个。
答案 0 :(得分:5)
您可以通过获取图表的k
副本来解决您的两个问题,例如G_0,...,G_k,并修改每个图形,以便G_i中的锁定边缘vw变为来自u的边缘在G_ {i + 1}中G_i到v,在G_ {i + 1}中从G_i到v到u。然后,您可以在G_0中从根开始执行单源最短路径。通过读取G_k中目标的距离来解决第二个查询,而通过读取任何G_i到目标的最小距离来解决第一个查询。