【问题标题】:Selecting k sub-posets选择 k 个子位姿
【发布时间】:2011-03-17 09:00:09
【问题描述】:

我在尝试分类算法时遇到了以下算法问题。元素被分类为多层次结构,我理解为具有单个根的poset。我必须解决以下问题,它看起来很像set cover problem

我上传了我的乳胶问题描述here

设计一个满足 1 和 2 的近似算法非常容易,只需从 G 的顶点开始“向上走”或从根开始“向下走”。假设您从根开始,迭代地扩展顶点,然后删除不必要的顶点,直到您至少有 k 个子晶格。近似界限取决于顶点的子节点数,这对我的应用程序来说是可以的。

有谁知道这个问题是否有正确的名称,或者问题的树版本?我很想知道这个问题是否是 NP-hard,也许有人有想法来减少一个好的 NP-hard 问题,或者有一个多项式算法来解决这个问题。如果你有两个收集your million dollar price。 ;)

【问题讨论】:

  • 我不明白。如果你选择 S' = {r} 其中 r 是根,那么 \sigma(r) = V。你的意思是 sigma(s) 是所有小于或等于 r 且大于或等于 s 的元素 (格子偏序在哪里少和大?
  • @deinst 这就是k 存在的原因:让问题更有趣:) S = {r}k = 1 的解决方案。
  • @dareios 您可能想要更正问题陈述中的两个小错误。 1)倒数第二段一般不是真的,取决于G 的选择(除非我遗漏了什么,如果G 包含两个孩子,仅此而已,那么S = Gl = k = 2 的解决方案. 2) 在倒数第三段中,您可能的意思是:“[...] 我们仍然希望保留 2。”
  • 更准确地说,你有二元相遇和/或连接吗?
  • @Bolo 所以属性 3 应该声明没有 S' 使得 k

标签: algorithm graph complexity-theory np-hard poset


【解决方案1】:

DAG 版本很难通过(鼓声)减少设置封面。设置 k = 2 并做显而易见的事情:条件 (2) 阻止我们生根。 (请注意,(3)实际上并不意味着(2),因为下限k。)

树版本是串并行poset版本的特例,可以在多项式时间内精确求解。这是一个递归公式,它给出了一个多项式 p(x),其中 xn 的系数是基数 n 的覆盖数。

要覆盖的单个顶点:p(x) = x。

其他顶点:p(x) = 1 + x。

并行合成,其中 q 和 r 是两个偏序的多项式:q(x) r(x)。

系列合成,其中 q 是顶部偏序集的多项式,r 是底部的多项式:如果顶部偏序集不包含要覆盖的顶点,则 p(x) = (q(x) - 1) + r( X);否则,p(x) = q(x)。

【讨论】:

  • 对 (3) 的良好观察并不意味着 (2),我完全错过了这一点。在问题陈述中更改。剩下的我想我需要先睡一晚,谢谢你的回答!
  • 还原确实很简单,不知道昨天为什么做不到。谢谢!
  • 对于树版本递归公式:如果我有一个要覆盖的顶点,我有你说的 p(x)=x,因为只有一个覆盖。对于没有被覆盖的顶点,我们应该有 p(x)=1(因为覆盖是空的)。我不明白何时应用“其他顶点:p(x)=1+x”多项式。另外,我不明白什么时候适用“顶部poset不包含顶点”(要被覆盖):顶部poset将始终包含其他posets,所以如果它不包含要覆盖的顶点,其他posets不会任何一个。也许 >= k 对最小属性的限制在这里起作用?
  • 它是 1 + x 因为你没有要求封面中的每个顶点实际上覆盖任何东西,所以你可以选择是否包括它。如果必须覆盖(子)树根,那么您必须将其放入并将其所有正确的后代排除在外。
猜你喜欢
  • 1970-01-01
  • 2011-12-03
  • 2014-09-21
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多