给定一个无向连通图,旅行者必须从node A
多次旅行到node B
。每个边都有一个正值,从node A
到node B
有多条路径。路径的值被定义为该路径中所有边的最小值。如果旅行者通过一条特定的路径从node A
到node B
,则路径中所有边缘的值都会根据路径的值(即该路径中所有边缘的最小值)而减小。The goal is to find the set of paths that give the maximum sum of values of all paths traveled.
注该图可能包含周期,但路径只能访问节点
once
。
举个例子,假设有4个节点( A
、B
、C
、D
),旅行者必须从A
到D
。假设所走过的路径是A
->B
->D
,和
edge_A_B =5 edge_B_D =3
则路径的值为
最小(edge_A_B,edge_B_D) =3
走完这条路之后
edge_A_B =5-3=2 edge_B_D =3-3=0
旅行者必须再次使用更新的边缘值从A
到D
旅行,直到从A
到D
的所有路径都有0的值。
发布于 2016-07-05 23:43:03
您的问题非常类似于Max-Flow/Min-Cut-Problem.
因为你可以走每条路的次数是由最小值的边决定的,所以最大值是由图的两个较小的顶点集V和W中的划分(“割集”)所限制的,而起始节点在V中,末端节点在W中,所有边的值都是从V到W的,这是因为为了从开始到结束,旅行者必须遍历连接V和W的边缘,这意味着如果这些边有值0,那么旅行者就没有更多的路径可供旅行者选择。
检查由格言制作的图像
右数字表示边的值,左数表示流(或在您的情况下所走的路径)。这里,切割的最小值是5,这是o与q或q和t之间的垂直切割。因此,最大流(或在您的情况下,所有路径的最大值)也是5。由于传入流的值等于传出流的值(除了开始和结束节点外),所以很容易找到他后来走过的路径。在这种情况下,它是{{s, o, q, t}, {s, o, q, r, t}, {s, p, r, t}}
。
https://stackoverflow.com/questions/38214146
复制相似问题