一个虚构的问题。假设我在T中给出了一个树T和一对节点(x,y)的列表。我被问到我可以使用T中的每个边最多一次同时连接多少对(连接x和y) 。
怎么会这样?
答案 0 :(得分:2)
树木不是NP难的。例如,您可以执行以下操作。
任意植树。
对于每个顶点v,计算局限于v子树的最优解。
此外,对于每个v,对于包含v的父边缘的每个路径p,计算限制在v的子树中的最优解,路径p除外。
(2)和(3)可以使用v子树中较小问题的解决方案来计算。
查看步骤1,2和3可能更容易,并自己弄清楚复发,但只是为了给你一个想法,(2)可以通过采用几个解决方案的最大值来计算: v的孩子的解决方案(即,每个孩子在步骤2中产生的解决方案的总和),以及包括v的每个路径的一个解决方案以及其他孩子的步骤2解决方案(这将基本上包括一个或对于v的孩子,在步骤3中产生了两个解决方案,以及在步骤2中为其他孩子生成的解决方案的总和。)