树中的两个节点不相交路径,使得这些长度的乘法变得最大

时间:2013-01-06 20:36:43

标签: algorithm graph-algorithm

我想在具有n个节点的树中找到两条路径,因此这两条路径不具有任何公共节点,并且这两条路径的长度的乘法变得最大。 任何人都可以帮我解决这个问题?

2 个答案:

答案 0 :(得分:2)

首先,使用递归过程生成每个可能的唯一路径的列表。

你最终会有m条可能的路径。

其次,设置一个m x m个元素的数组。

使用所有其他m-1路径检查m个路径中的每一个,并将相应长度的乘法存储到数组中。这样做检查两条路径是否有共同的节点。如果存储0。

第三步,检查m x m数组中具有最大值的元素。

你还能做什么?这是非常强力的,但如果没有关于树属性的更多信息,这是唯一的方法。

答案 1 :(得分:1)

一些想法。如果有两个值a和b加起来为n,则a * b的最大值是a == b时(为简单起见假设n是偶数)。 如果有一条路径通过所有n个节点,则将其切割成两个几乎相等的部分。对于偶数n的这样的图,答案将是(n ^ 2)/ 4并且对于奇数n,它将是(n-1)/ 2 *(n + 1)/ 2 =(n ^ 2-1)/ 4。 如果没有路径通过所有n个节点,则必须使用其他一些技术。但是上限是如上所述。