任何人都可以帮助我解决该问题,或者给我有关如何解决该问题的提示吗?
我们考虑给定城市的街道网络。证明如果我们可以通过最多创建p个障碍物来消除此网络中的所有周期(阻塞意味着阻塞一条街道的一条路),那么我们可以通过最多翻转p条街道的一种方法来移除城市网络中的所有周期。 (在给定的两种方式中,将街道反向转换是将其转换为单向街道;将反向单向街道意味着将其转换为另一种单向街道。)
答案 0 :(得分:1)
一组边(如果从图上删除)保持非循环,则称为反馈弧集。因此,假设您在图表中选取了最小的反馈弧集S(据我们所知,其最大大小为p)并删除了它,留下了一个无环图。
现在,想象一下将S中的任意一条边添加回剩余的DAG中。这必须要造成一个循环-否则,我们不需要在反馈集S中获得优势,因此S并不是最小的。
然后我们可以问-这个周期究竟是如何产生的?好吧,由于DAG具有拓扑顺序,因此必须通过以下操作来发生该循环:从DAG中的某个节点v开始,将新添加的边沿追回到祖先u(在拓扑顺序中比v出现得早),然后遵循的子序列节点从该拓扑顺序回到v。
现在假设您将此边添加回图形中,但是您可以通过反向添加(从u到v)来添加。您可以辩称,旧DAG的拓扑排序与新DAG完全相同,因为u在排序中已经位于v之前。这意味着您将剩下DAG,不仅如此,而且旧的拓扑顺序仍然是新DAG的有效拓扑顺序!
因此,您可以重复此过程。从S中拾取另一条边,然后将其重新添加。这会导致一个循环,您可以争辩说,类似地可以通过按照拓扑顺序从节点步行到祖先然后向后走来形成此循环。更准确地说,闭合的循环中至少有一个必须来自于通过删除所有S形成的DAG。因此,将该边的反向添加回图形中将不会导致任何循环,因为它保留了拓扑顺序。
这样做的最终结果是,如果您具有最少的边集可以删除以删除所有循环(例如,删除最多p个边),则可以反转所有这些边以删除所有循环(以大多数p边)。
希望这会有所帮助!