The Compact Tree (CT) algorithm for the problem is a
greedy algorithm, which like Prim's algorithm for Minimum
Spanning Tree[#!clr-algorithm!#], builds a spanning tree
incrementally. For each vertex
in the partial spanning tree
constructed so far, let
denote the length of the longest
path from vertex
to any other node in
. For each vertex
that is not yet in the partial tree
constructed so far, we
maintain an edge
to a vertex
in the tree;
is chosen to minimize
. At each
step, we select a vertex
with the smallest value of
and add it and the edge
to the tree. Then, for each
vertex
, not yet in the tree, we update
. This process
is repeated for each vertex. Figure 3.2
illustrates an example and Figure 3.3 gives a detailed
description.
|
The algorithm fails when it finishes with some vertices having
, meaning that we cannot build a spanning tree
with the specified set of degree constraints. There are two cases
where this can happen: one is that a session request may arrive at a
set of MSNs whose total available bandwidth (the sum of the degree
constraints) is less than the minimum required degree,
,
for a session spanning tree. In this case, the session request is
simply rejected; The other case is that during the progression of the
algorithm, a vertex with a degree constraint of one is added to the
tree, when the sum of the spare degrees of the tree vertices is also
one. Such addition leaves the newly formed tree component with zero
spare degree and we cannot add any more nodes to the tree. To remedy
this, we add a count of the spare degrees of the tree component and
defer the addition of a leaf node if it reduces the count to zero.
We have shown that there can be no polynomial algorithm that
approximates the problem to within a constant ratio. The CT
algorithm, on the other hand, gives an
approximation ratio
with bounded edge weights. Let
and
denote
the tree diameter constructed by the greedy CT algorithm and an optimal
solution, respectively. And let
and
.
Without loss of generality, let the smallest
edge weight be 1 and the largest edge weight
. The
optimal solution can do no better than
.
Now, let's assume a naïve algorithm
for constructing a spanning
tree: at each step,
adds a new node with the smallest degree
constraint to an existing node in the tree whose degree constraint has
not been met. By keep adding nodes to an existing node as long as its
degree constraint allows, it results in a tree height of at most
. In the worst case, each selected edge has weight of
, so
. We observe
that
. Because if all intermediate nodes in tree
constructed by the CT algorithm are at their degree constraints, then
cannot be worse than
; If there is an
intermediate node
in
that has not met its degree constraint,
then moving one of the leaf node that resides on the longest path in
to
would increase the diameter of
. Therefore,
, where
.