Concavity of edge/vertex-disjoint paths on trees
Introduction
Suppose we have a tree with \(n\) vertices, and an integer \(1\le k\le n\). Each edge \(e\) of the tree has weight \(w(e)\in\mathbb R\), and we define the weight of a path as the sum of weight of edges on the path. Now we want to select at most \(k\) edge-disjoint paths on the tree, and maximize the total weight of the selected paths. Another version of the problem asks one to select at most \(k\) vertex-disjoint paths. A simple algorithm is to use dynamic programming: let \(f(x,i,b)\) denote the maximum total weight by choosing \(i\) paths in the subtree of \(x\), where \(b\) denotes whether or not \(x\) itself is contained in one of the paths. However, this dynamic programming runs in time \(O(n^2)\). Another solution is, by observing that the answer is concave with respect to \(k\), one can use alien's trick to optimize the dynamic programming algorithm to \(O(n\log n)\) complexity. The concavity is intuitive: when we are trying to add a new path, our new reward is always getting smaller. However, it's not easy to give a rigorous proof of this claim. As far as I know, this is the first full proof of such claim. (I haven't done much survey, so please email me if you have seen a proof somewhere else!)