graph - 部分有序集中的反链 (DAG)

标签 graph complexity-theory combinatorics directed-acyclic-graphs poset

谁能告诉我是否存在 P 时间算法来在偏序集合中找到大小为 k 的反链? (或 DAG)

我在网上找到的所有资源都涉及寻找最大反链。

最佳答案

我认为问题的表述不够精确,因为有两个参数:

  • k 反链的大小;
  • n 偏序集P的大小;

有一个明确的算法,它是 n 中的多项式和 k 中的指数:

  • 枚举 P 的所有大小为 k 的子集。使用某种格雷码,您可以获得 O(1) 中的每个子集。因此成本显然与 k 子集的数量成正比,这是一个二项式系数 choose(n, k)。因此,复杂度为 O(n^k)

  • 对于每个子集,检查它是否是反链。假设您在 O(1) 中比较偏序集的两个元素。您在 O(k^2) 中执行此操作。

所以这个愚蠢的算法是 O(k^2+n^k) 的复杂度,它是 n 的多项式。

关于graph - 部分有序集中的反链 (DAG),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19248456/

相关文章:

python - 如何让networkx shortest_path() 支持自定义权重函数?

python - 在Python中加载和保存图表

algorithm - 重新排列奇数和偶数

r - 有条件地改变值并寻找组合

sql-server-2008 - 在sql server 2008中是否有在hierarchyid中存储社交网络图的例子

c++ - 任何 GraphAttributes 函数调用上的 OGDF 段错误

algorithm - 计算复杂度超越时间和空间的其他资源

big-o - 用大 O 符号比较 2 个函数

math - 8个皇后中非攻击皇后对的最大数量

c++ - 如何生成任意数量 vector 的元组组合