问题如下:给定一个 DAG 和一个 number 0 < p ≤ 1
,返回最小基数的顶点集合,它至少断开p
从源(即,没有传入弧)到汇(即,没有传出弧)的路径的一部分)。对于p = 1
,问题等价于最小割。但是,对于 的其他值p
,我不确定答案是什么。
我正在考虑的一种算法是首先计算 DAG 的最小割集,然后尝试对其进行修剪以满足标准。这本身很有趣,看看我们找到的子集是否实际上p
是给定特定的最小割集。该算法的问题在于它是浪费的,因为它计算了许多我们在最终答案中不需要的节点,实际上,它首先解决了“更大”的问题。
任何指向这个问题的解决方案?对于某些最小切算法,我们是否可能将这个额外的约束作为提前停止的标准?
为了检查有多少路径被删除,假设我们已经为每个顶点建立了索引(如果需要,会保持更新),这样我们就知道有多少路径因为它们的删除而断开连接。请不要担心正在更新的索引的复杂性。最后一件事,在大小或任何方面对生成的组件没有任何限制。