Algorithm 具有可变权重的所有对最短路径

Algorithm 具有可变权重的所有对最短路径,algorithm,dijkstra,shortest-path,np-complete,floyd-warshall,Algorithm,Dijkstra,Shortest Path,Np Complete,Floyd Warshall,假设给你一个加权无向完全图,其中n个节点的权重为非负Cij,其中对于i=j,Cii=0,对于i!=j Cij>0。假设您必须找到任意两个节点i和j之间的最大最短路径。在这里,您可以很容易地使用Floyd Warshall,或者使用Dijkstra n次,或者其他任何方法,然后在所有n^2条最短路径中找到最大值 现在假设Cij不是常数,而是可以取两个值,Aij和Bij,其中0 p1->…->pk->j,在最坏的情况下,你会受到影响,在这个意义上,你需要选择那些边来获取Bij的值,这样,如果你在它的

假设给你一个加权无向完全图,其中n个节点的权重为非负Cij,其中对于i=j,Cii=0,对于i!=j Cij>0。假设您必须找到任意两个节点i和j之间的最大最短路径。在这里,您可以很容易地使用Floyd Warshall,或者使用Dijkstra n次,或者其他任何方法,然后在所有n^2条最短路径中找到最大值

现在假设Cij不是常数,而是可以取两个值,Aij和Bij,其中0 p1->…->pk->j,在最坏的情况下,你会受到影响,在这个意义上,你需要选择那些边来获取Bij的值,这样,如果你在它的方向上有固定的节点,那么路径值是最大的

例如,如果路径长度为4 i-k-l-j,则在该路径上的最优解中,只有一个权重更改为Bij,另一个权重值为Aij。让m1=Bik+Akl+Alj,m2=Aik+Bkl+Alj,m3=Aik+Akl+Blj,路径的值是max{m1,m2,m3}。因此,在i和j之间的所有路径中,您必须选择一条使最大值(如本例所述)最小的路径(这是最短路径定义的变体)。你必须对所有的i和j对都这样做

您没有得到每个路径上需要改变的数量的约束,而是m的值,一个在完整图中应该改变的权重数。问题是找到最短路径的最大值,如前所述


另外,我的问题是:这是NP难问题,还是存在多项式解?

路径最多应该包含每个顶点一次,还是允许它访问一个顶点两次或更多次?最多一次。但是,如果您找到一条包含某个顶点的最短路径不止一次,我认为不可能是最短的,因为边是非负的。是否允许m B边随每个选择(起始顶点、结束顶点)而变化?如果是,那么你的问题是否等同于以下内容?求最大化f(u,v)的顶点对{u,v},其中f(u,v)是g(P)在从u到v的所有路径P上的最小值,g(P)是通过将P中的min(m,nEdges(P))边设置为其B-长度而将其余边设置为其A-长度所能达到的最大路径长度。如果m B-边不应该变化,那么它等价于:求顶点对吗{u,v}最大化h(u,v),其中h(u,v)是所有图G'中a(u,v,G')的最大值,这些图G'具有与输入图G相同的边,且其中m条边指定了它们的B-长度,其余边指定了它们的a-长度,而a(u,v,G')是G'中从u到v的最小路径长度?