用于在O(v * e)时间中查找DAG的不可缩短内核的算法,其中E是输出边的数量

cs.stackexchange https://cs.stackexchange.com/questions/119442

  •  28-09-2020
  •  | 
  •  

不可挽回的内核是图表算法章节中理论计算机科学(HTCS),卷“算法和复杂性”手册中使用的术语。给定针对图 $ g=(v,e)$ ,一个不可缩短的内核是一个图 $ g'=(v ,e')$ 其中 $ e'$ $ e $ 的子集,和 $ g $ $ g'$ 具有相同的可达性(即它们的传递关闭是相同的),然后从 $ e'$ 中删除任何边缘不会满足此条件,即 $ e'$ 是最小的(尽管不一定是最小尺寸)。

最小等效图是相似的,除了它还具有所有这些图中最少的边缘。这两种概念都类似于传递还原,但不相同,因为允许传递还原具有不在 $ e $ 的边缘。据说,[1]证明,对于每个DAG,它具有独特的不可缩短的内核,这也是其独特的最小等效图以及其独特的传递减少,因此在差动减少中没有任何益处,以使用未在原始的边缘图表(对于具有循环的一些图形的最小等效图和传递转化差异,但不适用于DAG)。

HTCS说,有一种算法在 $ o(v * e)$ 时间中,在 $ v $ 是顶点的数量, $ e $ 是IRRAFUIBLE内核中的边缘数,即<算法的EM>输出。对此的参考是以下文件,我未能找到一个在线来源(链接或其他来源欢迎 - 我可以很快在研究库中询问,如果没有,如果没有任何东西,我就可以很快在研究库中提出)。

noltemeier,H,“减少指向图形到Irreafucible核”,讨论纸7505,Lehrstuhl F. Mathematische Verfahrensforschung U。 DateNverarbeitung(运营研究和数据处理),Univ。 Göttingen,Gottingen,1975年。

有谁知道这个算法是什么?它让我感到惊讶的是,它包括输出图中的边缘的数量,因为这意味着它应该在<跨度=“数学容器”> $ O(n ^ 2)$ 时间中运行输入图表与 $ o(n ^ 2)$ 表示总订单的边,例如所有节点都是从1到 $ n $ 的整数,并且来自node $ i $ $ j $ 如果 $ i 。这似乎不可能,介意你,只是令人惊讶。

[1] aho,garyy和ullman,“定向图的传递减少”,1972 https://epubs.siam.org/doi/10.1137/0201008

有帮助吗?

解决方案

我不知道他们的算法,但问题很容易在 $ \ mathcal {o}(v \ cdot e)$ 时间。这个想法是只能从每个节点中执行DFS以找到可以到达它的顶点。通常情况下,这需要 $ \ mathcal {o}(e)$ 时间,但我们可以使用IRREucible内核我们已经建立在 $ \ mathcal {o}(e)$ 时间。

首先注意, $ e \ geq n-1 $ 如果连接。如果不是,则单独解决连接的组件。

首先在顶点上进行拓扑排序,首先具有图形零点的顶点。首先循环顶点。当在顶点 $ i $ 时,首先标记所有顶点作为无法访问的。然后从 $ i-1 $ $ 1 $ 。在每个顶点 $ j $ 时,如果 $ j $ 无法访问,并且有一个边缘到 $ i $ 在输入图中,将边缘 $(j,i)$ 添加到Irreafible内核和标记 $ j $ 可访问。然后,如果 $ j $ 可到达,则循环所有边缘 $(t,j)$ 在我们的内核中,并标记 $ t $ 可访问。

拓扑排序需要 $ \ mathcal {o}(v + e)$ 时间,并且dfs需要 $ mathcal {o}(e + v \ cdot e)$ 时间,因此由于 $ e=mathcal {\ omega}(v)$ ,运行时间是 $ \ mathcal {o}(v \ cdot e)$

所产生的DAG具有与原始图形相同的可达性,因为我们使用原始边缘的子集,并且仅跳过添加边缘 $(j,i)$ 如果 $ i $ 可从 $ j $ 即使没有它。

假设一些边缘 $(j,i)可以在保持可达性同时删除$ 。但顺便说一下,我们做了DFS, $ i $ 无法从 $ j $ 没有边缘(请注意,它们之间的任何路径只能在拓扑顺序之间访问它们之间的顶点)。因此,所产生的DAG确实是不可缩短的。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top