在正加权有向无环图中,我有一个求最短路径的问题,但有最大N步(路径中的边)的限制。假定路径存在。图的另一个性质是,如果边(i,j)在图中,那么对于i
例如,考虑下图。
问题是最多使用k=3步(边)来寻找最短路径。答案是6(路径1->4->5->6)。
它实际上是O(N+M)
,其中N
是顶点数,M
是边数。您可以在以下网站找到更多信息:http://www.geeksforgeeks.org/storest-path-for-directed-acyclip-graphs/
查找路径(我使用的是geeksforgeeks中的代码):不使用int dist[V]
,而是使用pair
。最初dist[S]={0,-1}
。因此,在此条件下if(dist[i->getv()].first>dist[u].first+i->getweight())
,您需要将parent设置为dist[i->getv()]={dist[u].first+i->getweight(),u}
。
然后使用这个递归代码恢复路径:
void restore(int v) {
if(dist[v].second == -1) return;
else answer.push_back(v);
if(v == START_POINT) return;
restore(dist[v].second);
}
用restore(FINAL_POINT)
调用它
给出了一个边上具有任意权的有向无环图和两个特定结点s和t,其中s的内度和t的外度为0。如何确定成本为正的s到t的最短路径?
给出了一个图G=(V,E),它是正加权的,有向的,无圈的。我设计了一个在O(k(m+n))中运行的算法,用于报告从s到T的k-边最短路径。k-边最短路径定义为从s到t的具有k条边的路径,并且对于从s到t的所有路径,该路径的总权也必须是最小的。 由于BFS不能单独用于寻找最短路径(除非权重相等),我认为运行时间意味着使用BFS寻找具有k条边的路径。让我感到困惑的是k,因为我认为它意味着表演BFS k
我有一个有圈的有向图。所有边都是加权的,权重可以是负值。可能会有负循环。
给出了一个有向无环图G=(V,E),如果需要,可以假定它是拓扑有序的。G中的边有两种类型的成本--名义成本w(e)和尖峰成本p(e)。 目标是找到从节点s到节点t的最短路径,使以下代价最小:sum_e(w(e))+max_e(p(e)),其中和和最大值在路径的所有边上取值。 标准动态规划方法表明,该问题在O(e^2)时间内是可解的。有没有更高效的办法解决?理想情况下,一个O(E*polylog(E
我试图将这个问题概念化,然后为它编写Java代码。我知道这里有一些讨论,但我没有看到很多回答者,所以我想通过写下我的想法来重申这个问题,我希望从你们那里得到一些反馈。谢谢 我的想法:对于每个叶节点,找到从根节点到它的最长路径。对于所有路径,找到最大路径长度 然而,这不就是蛮力吗,对此还有更优雅的解决方案吗? 我听说过使用Djikstra的负权重算法,但在某些地方它说这只适用于特定情况?我也看到了关