在加权无向图中找出固定成本的路径?

时间:2015-12-07 16:33:59

标签: algorithm graph computation-theory breadth-first-search

我有以下问题,我不太确定如何解决它:

给定一个图G = (V;E),其中每个边e都有一个正整数成本c_e和一个起始顶点s\in V。设计O(V + E)算法,使用路径(不一定是简单路径)标记从s可到达的所有顶点,该路径的总成本为5的倍数。

如何跟踪我已经访问过的路径的总费用?我一直在研究无向加权图中的BFS,并尝试在这里使用它,但是大多数BFS参考都集中在找到最短路径(而不是像保持5的倍数

1 个答案:

答案 0 :(得分:1)

您如何看待下一个算法?

让我们考虑基于源图的新有向图。对于源图中的每个顶点v,在新图中创建5个新顶点v[0], v[1], ..., v[4],对应于5除以的模块。然后,如果顶点vu在源图中通过权重w的边连接,请在v[i]u[(i + w) % 5]之间添加边u[j],{{新图表中的1}}和v[(j + w) % 5],其中i = 0..4, j = 0..4。然后从v[0]运行 BFS ,其中v是源图中的起始顶点。

考虑索引0的顶点,如v[0]。它们中的每一个对应于源图中5到顶点v的长度倍数的路径。在 BFS 之后标记的所有这些顶点都可以从起始顶点到达,形成答案。总复杂度是线性的。