Tree Covering
Dynamic Programming:
An optimal solution must contain only optimal solutions to its sub-problems
Set cost of all: internal nodes = -1
while(some v has cost < 0)
select v whose children have all non-neg cost
M = set of all matching pattern trees
cost (v) = min ( cost(m) + sum ( cost (u))
where m is element of M and u is leaf node of m.