如何找到有向无环图的最大独立集?

时间:2014-10-19 21:25:10

标签: dynamic-programming graph-algorithm directed-acyclic-graphs independent-set

假设我们有一个类似于链表(或有向无环图)的图表。独立集由不与集合中的任何其他节点共享边的节点组成。如果每个节点都是加权的,我们如何计算独立节点集的最大可能值?我知道我们必须使用动态编程,所以我有一点线索,但我希望有人可以解释他们如何接近它。谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这个问题对于任意有向无环图来说都是NP难的。已知无向图的相应问题是NP难的,并且可以通过以使得结果图为DAG的方式引导所有边来将该问题转换为问题的有向版本。原始图中的任何独立集都将是有向图中的独立集,反之亦然,因此任何解决方案都将解决无向情况。

您的问题涉及在链接列表中解决此问题。如果您只针对链表来解决问题,那么有一个使用动态编程的多项式时间解决方案。作为提示,如果您在链接列表中选择一个节点,则必须跳过下一个节点,然后应最大化剩余的节点。如果您不选择节点,则只需最大化列表其余部分的值即可。更好地利用这两个选项并对自下而上的评估进行评估将为您提供非常快速的DP算法。

希望这有帮助!