Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 图论:树节点的最大子集,使得最小距离为d_Algorithm_Optimization_Tree_Dynamic Programming_Graph Theory - Fatal编程技术网

Algorithm 图论:树节点的最大子集,使得最小距离为d

Algorithm 图论:树节点的最大子集,使得最小距离为d,algorithm,optimization,tree,dynamic-programming,graph-theory,Algorithm,Optimization,Tree,Dynamic Programming,Graph Theory,给定n顶点上的树。选择最大数量的节点,以确保所选节点中没有两个节点的距离小于d。Output是最大节点数。这里的n和d可以达到10^5。如何在线性或拟线性时间内求解 是:) 如果取根,则最优值为1加上较低d级子树的最优值之和 否则,它是根的子项的值之和(不带+1) 因此,您应该采用自下而上的方法(或带记忆的递归方法)计算节点子树的最佳值。如果节点是叶,则值为1。否则,使用上面写的规则 您应该尝试只计算每个节点的值一次,并且每个节点的值仅用于其父节点及其第d个祖父母,因此您的复杂性为O(n)请

给定
n
顶点上的树。选择最大数量的节点,以确保所选节点中没有两个节点的距离小于
d
。Output是最大节点数。这里的
n
d
可以达到
10^5
。如何在线性或拟线性时间内求解

是:)

  • 如果取根,则最优值为1加上较低d级子树的最优值之和
  • 否则,它是根的子项的值之和(不带+1)
因此,您应该采用自下而上的方法(或带记忆的递归方法)计算节点子树的最佳值。如果节点是叶,则值为1。否则,使用上面写的规则


您应该尝试只计算每个节点的值一次,并且每个节点的值仅用于其父节点及其第d个祖父母,因此您的复杂性为
O(n)

请告诉我们答案是否有效,以便下一个用户可以使用它!不。如果我们标记某个节点的所有子节点,那么这些子节点可能在远处