This whole section is filled with problem descriptions that confuse me. Here’s another one:

**The problem: **Rooted Tree Storage Assignment. This is problem SR5 in the appendix.

**G&J’s definition: **Given a set X, and a collection C= {X_{1}..X_{n}} of n subsets of X, and an integer K. Can we find a collection C’ = {X_{1}‘..X_{n}‘} of n subsets of X, where:

- Each X
_{i}‘ contains all of the elements of it’s corresponding X_{i}, plus possibly some extra elements. - There are at most K new elements added across all X
_{i}‘ - We can treat the elements of X as vertices and add directed edges to form a directed tree where the elements of each X
_{i}form a directed path.

**Example: **Suppose X = {1,2,3,4,5}, and X_{1} = {1,2,3,4} X_{2} = {1,3,4} X_{3}={1,3,5}, X_{4} = {2,5}

Then we can set each X_{i}‘ to be = X_{i}, except X_{3}‘ where we’ll add the element 2. This gives us the arrangement:

The way to think of the X_{1} is as “required elements along a path from the root”, and the X_{i}‘ is as “the *actual *elements along the path from the root”.

But the paper from Gavril that has the reduction gives what I think is the better definition:

**Gavril’s Definition: **(He calls this problem “Augmented directed tree arrangement”) Given a bipartite graph B, whose vertices can be split into two sets X and Y, and an integer K, can we add K or less edges to B to form a new bipartite graph such that:

- The elements in X can be arranged as a directed tree
- For each subset (I think- it’s not entirely clear whether this is a subset or just a single vertex) S of Y, the vertices in X that are adjacent to S can be arranged to form a directed path in the directed tree of X.

I like this better because you can see that the vertices that need to be in order in the tree are “pointed to” by edges from Y. The extra edges that you get in X_{i}‘ are created by adding more edges between X and Y.

**Example: **The example above would be represented by the following bipartite graph:

Notice how the vertices from X are arranged to almost form a directed path with no gaps, but we need to add an edge from X2 to Y3 to fix the arrangement.

**Reduction: ** The Gavril paper uses Rooted Tree Arrangement. So we’re given a graph G=(V,E) and an integer K. Our bipartite graph will have X=V, and Y=E, and each vertex in Y will connect to the 2 vertices in X that correspond to the endpoints of the edge in G. K’ = K-|E|.

If you’re worried- like I was- that this might possibly make K’ negative, keep in mind that the K for the Rooted Tree Arrangement Problem was the sum of the paths between pairs of vertices in G that are connected by an edge. So for K to be meaningful it has to be ≥ E.

If we have a solution for the Rooted Tree Arrangement problem, then we have a path between all pairs of vertices connected by an edge in E. So, for each vertex in Y, look at the path in the solution. If the path goes through additional vertices besides the endpoints of the edge, add an edge to our bipartite graph from the vertex in Y to the vertex passed through in X. In doing so, we will add at most K-|E| edges to the bipartite graph, and can use the arrangement that is a solution to the Storage Assignment problem.

If we have a solution to the Storage Assignment problem, the edges that were added to the bipartite graph mark the vertices traveled along a path that solves the Rooted Tree Arrangement problem, and so tells us how to build a satisfying arrangement.

**Difficulty: **6. This isn’t the hardest reduction to understand, but it does require you to know the Rooted Tree Arrangement problem really well, and to understand just what the job of the bipartite graph is.