检查图的传递性是否比图的传递闭合要容易(就渐进复杂度而言)?我们是否知道比更好的下界来确定有向图是否可传递?
检查图的传递性是否比图的传递闭合要容易(就渐进复杂度而言)?我们是否知道比更好的下界来确定有向图是否可传递?
Answers:
下面,我将显示以下内容:如果您有O()时间算法来检查图对于任何是否可传递,则您有O()时间算法,用于检测节点图中的三角形,因此(根据FOCS'10的论文),您将具有O()时间算法,用于将两个数相乘布尔矩阵,因此根据70年代Fischer和Meyer的结果,这也暗示了O()时间算法用于传递闭包。
假设您要检测节点的三角形。现在,我们可以创建如下图。是三方与分区上每个节点。在此,每个节点在部分具有副本。对于每个边,添加有向边和。对于每个非边,添加有向边。
首先,如果包含一个三角形,则是不可传递的。这是因为的边在而不在。其次,如果不是可传递的,则必须在存在从某些节点到某些节点定向路径,使得不是的定向边缘。但是,的最长路径具有边,因此任何这样的路径都必须采用和形式,因此在形成三角形。
确定DAG是否可传递与确定普通图是否可传递一样困难(这使我们回到了前面的问题:))。
假设您有一个算法在时间运行,用于确定DAG是否传递。
给定有向图,您可以使用以下随机算法来确定在时间和错误概率是否可传递:
1. for $O(\log{\frac{1}{\delta}})$ iterations:
1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.
1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).
1.3. If $G'$ (which is acyclic) is not transitive return false.
2. return true.
现在很明显,如果是可传递的,则此算法返回true。
现在假设不是可传递的。令使得(必须存在这样的边,因为不传递)。的概率为,因此,在每次迭代中,算法认为不传递的概率为并且在迭代,失败概率最大为。
关于先前的答案,这是定义这种算法的一种简单方法。为每个顶点分配一个索引,该索引初始化为。对于每个,令表示其邻域的索引的多集。我们通过维护未开发顶点的集合(已初始化为整个集合)来模拟拓扑排序。在每一步中,我们执行以下操作:
选择一个顶点其多重集最小(按多重集顺序);
将更新为当前循环计数器,然后从删除。
该算法可以用于您的问题或其他应用程序吗?