5. Maximum Independent Set on Trees
Acknowledgements
Some of this material is borrowed from Jeff Erickson's chapters on Recursion, Backtracking, and Dynamic Programming. The fun factor at a party formulation can be found in an exercise of Erickson as well as these slides by Dàniel Marx. Thanks to Arya for pointing out a correction.
The Problem
You are planning a corporate party. Every employee has an amount of fun that they will bring to the party if invited. The total fun in the party is the sum of over all invited employees . You want your party to be very fun. In fact, as fun as possible. However, it turns out that if you invite a manager and their direct report together, the party will be absolutely no fun, not for anyone. What's the best you can do?
Concretely, the problem is the following.
-
We are given a graph that is a rooted tree on vertices with a weight function and root .
-
We want to output the weight of a max-weight independent set in .
The Solution
What are the fragments (AKA, what do we want to store)?
For , let denote the weight of a max-weight independent set in , which is the subtree of rooted at .
Are the fragments going to be useful (AKA, where is the final answer)?
Indeed, is what we want!
Do we have a kickstart (AKA, what are the base cases)?
If is a leaf node, then .
How do the fragments come together (AKA, how do we compute the values that we have agreed to store)?
For the sake of analysis, fix a max-weight independent set of . We have to wonder: does contain ?
If the answer is no, then can be viewed as a union of optimal solutions in all the subtrees rooted at the children of .
If the answer is yes, then can be viewed as a union of optimal solutions in all the subtrees rooted at the grandchildren of (since the children are now forbidden), and the vertex itself.
As always, we take the best of both worlds when we pen down our recurrence:
where the notation means " is a child of ".
Can we put the pieces together without getting stuck (AKA, are the dependencies in step #4 acyclic)?
Proceed from the leaves of the tree upwards.