在受到某些约束的情况下查找树中最大的节点子集?

时间:2015-06-24 21:31:16

标签: tree binary-search-tree graph-algorithm depth-first-search breadth-first-search

给出如下的树:

            X
    /               \
    1               6
/   |   \       /   |   \   
2   5   9       1   5   3
   ...             ...

对于每个节点,都有一个数字(根除外),在示例中,数字是随机的。

如果采用某个节点,则无法获取该节点的下一个子节点。但允许子 - 子节点。因此,采取以下节点是不合适的。

我正在寻找一种算法,该算法构造了具有最大数量的所有节点的子集(所有采集节点的数量之和)。 必须采取根。

我搜索了解决方案,我找到了非常相似但不太有用的红黑树。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:1)

您尝试解决的问题称为maximum independent set problem应用于树。

作为提示,请考虑以下事项:

  • 对于树的每个完整子树,在两种情况下考虑该子树的最佳解决方案 - 在解决方案中包含该节点的情况,以及从解决方案中排除该节点的情况。 / p>

  • 使用动态编程:从树的叶子到树的根部工作。

希望这有帮助!