Algorithm 图:找到最小数量的节点,这样从a到b的每一条路径都至少穿过其中一条

Algorithm 图:找到最小数量的节点,这样从a到b的每一条路径都至少穿过其中一条,algorithm,graph-algorithm,Algorithm,Graph Algorithm,我有一个无向图,它有起点节点,比如说a和终点节点B。 如何找到最小数量的节点,以便从A到B的每条路径至少穿过其中一条? P.S.节点A和B不计算在内。这个问题的一个解决方案是找到从A到B的每个路径,然后找到每个路径中包含的最小节点集。但这只适用于小图,因为这两个问题都是NP难问题。因此,对于像1000个节点这样的小图,这个解决方案可能在可接受的时间内工作,但对于较大的图,它可能需要太长的时间 要查找从A到B的所有可能路径,您可以检查或 找到所有路径后,您可以将路径处理为S,其中S是一组集合,并尝

我有一个无向图,它有起点节点,比如说a和终点节点B。 如何找到最小数量的节点,以便从A到B的每条路径至少穿过其中一条?
P.S.节点A和B不计算在内。

这个问题的一个解决方案是找到从A到B的每个路径,然后找到每个路径中包含的最小节点集。但这只适用于小图,因为这两个问题都是NP难问题。因此,对于像1000个节点这样的小图,这个解决方案可能在可接受的时间内工作,但对于较大的图,它可能需要太长的时间

要查找从A到B的所有可能路径,您可以检查或


找到所有路径后,您可以将路径处理为S,其中S是一组集合,并尝试找到一个新集合T,该集合T至少包含S中每个集合的一个元素。如本问题中所述,它有一些已知的算法来计算此问题的解,如,但我没有找到算法。

使用最大流可以有效地解决此问题

给定一个图G'=V,E,创建一个新的图G'=V',E',其中V'=V×{in,out}由V中每个顶点的vin和vout以及E'=E组成∞ ∪ E1,其中E∞ = {vout→ 赢| v→ w∈E}在E中的每条边都有一条弧,并且E1={vin→ vout | v∈v}中的每个顶点都有一条弧。E中每个弧的容量∞ 为无穷大,E1中每个弧的容量为1。求出从Aout到Bin的最大流量和相应的最小切割C。对于E1中穿过C的每个弧,应从G中删除相应的顶点