在受某些约束的情况下找到树中最大的节点子集?
Finding the largest subsets of nodes in a tree subject to some constraints?
给定一棵如下所示的树:
X
/ \
1 6
/ | \ / | \
2 5 9 1 5 3
... ...
每个节点都有一个数字(根节点除外),示例中的数字是随机的。
如果取了一个节点,则不能取该节点的下一个子节点。但是child-child-node是允许带的。所以拿下面的节点就不行了
我正在寻找一种算法,该算法构建所有节点的子集,该子集具有最大数量(所有采用节点的数量总和)。
必须要扎根。
我搜索了解决方案,我发现红黑树非常相似但不是很有用。
对此有什么想法吗?
您要解决的问题称为 maximum independent set problem 应用于树。
作为提示,请考虑以下事项:
对于树的每个完整子树,在两种情况下考虑该子树的最佳解决方案 - 在解决方案中包含该节点的情况,以及从中排除该节点的情况解决方案。
使用动态规划:从树的叶子到树的根。
希望对您有所帮助!
给定一棵如下所示的树:
X
/ \
1 6
/ | \ / | \
2 5 9 1 5 3
... ...
每个节点都有一个数字(根节点除外),示例中的数字是随机的。
如果取了一个节点,则不能取该节点的下一个子节点。但是child-child-node是允许带的。所以拿下面的节点就不行了
我正在寻找一种算法,该算法构建所有节点的子集,该子集具有最大数量(所有采用节点的数量总和)。 必须要扎根。
我搜索了解决方案,我发现红黑树非常相似但不是很有用。
对此有什么想法吗?
您要解决的问题称为 maximum independent set problem 应用于树。
作为提示,请考虑以下事项:
对于树的每个完整子树,在两种情况下考虑该子树的最佳解决方案 - 在解决方案中包含该节点的情况,以及从中排除该节点的情况解决方案。
使用动态规划:从树的叶子到树的根。
希望对您有所帮助!