Tree 给定一棵树,为每个顶点找到到另一个顶点的最长路径

Tree 给定一棵树,为每个顶点找到到另一个顶点的最长路径,tree,dynamic-programming,Tree,Dynamic Programming,所以我有一个如上所述的问题。 我正在考虑一些dp,但我不是很擅长 例如: 5个顶点, 连接对: (1, 2) (1, 3) (3, 4) (3,5) 回答每个顶点(和路径): 1: 2 (1-3-4) 2: 3 (2-1-3-4) 3: 2 (3-1-2) 4: 3 (4-3-1-2) 5:3(5-3-1-2)我假设是无向树 如果您想让每个顶点v显式地找到从v开始的最长路径,那么最好使用从每个顶点开始的BFS/DFS,因为最长路径的总和可能高达n2(如果您愿意这样称呼它,则为退化树,如直线或分支

所以我有一个如上所述的问题。 我正在考虑一些dp,但我不是很擅长

例如: 5个顶点, 连接对: (1, 2) (1, 3) (3, 4) (3,5)

回答每个顶点(和路径): 1: 2 (1-3-4) 2: 3 (2-1-3-4) 3: 2 (3-1-2) 4: 3 (4-3-1-2)
5:3(5-3-1-2)

我假设是无向树

如果您想让每个顶点v显式地找到从v开始的最长路径,那么最好使用从每个顶点开始的BFS/DFS,因为最长路径的总和可能高达n2(如果您愿意这样称呼它,则为退化树,如直线或分支)。由于内存消耗是每个算法的下限,所以在最坏的情况下,算法的运行时间将为Θ(n2)

如果您只需要最长路径的值,我建议您阅读有关树上动态规划的内容,特别是问题树距离的解决方案,因为它与您所要求的完全相同。甚至还有YouTube和C++中的一个。