Let
![$G=(V,E)$](Abs/img2.gif)
be an undirected simple graph and
![$w:E\mapsto
{\rm I\!R}_+$](Abs/img3.gif)
be a non-negative weighting of the edges of
![$G$](Abs/img4.gif)
. Assume
![$V$](Abs/img5.gif)
is
partitioned as
![$R\cup X$](Abs/img6.gif)
. A
Steiner tree is any tree
![$T$](Abs/img7.gif)
of
![$G$](Abs/img4.gif)
such
that every node in
![$R$](Abs/img8.gif)
is incident with at least one edge of
![$T$](Abs/img7.gif)
. The
metric Steiner tree problem asks for a Steiner tree of minimum weight, given
that
![$w$](Abs/img9.gif)
is a metric. When
![$X$](Abs/img10.gif)
is a stable set of
![$G$](Abs/img4.gif)
, then
![$(G,R,X)$](Abs/img11.gif)
is
called
quasi-bipartite. In a SODA '99 paper, Rajagopalan and Vazirani
introduced the notion of quasi-bipartiteness and gave a
![$(\frac{3}{2}+\epsilon)$](Abs/img12.gif)
approximation algorithm for the metric Steiner tree
problem, when
![$(G,R,X)$](Abs/img11.gif)
is quasi-bipartite. In this paper, we simplify and
strengthen the result of Rajagopalan and Vazirani. We also show how classical
bit scaling techniques can be adapted to the design of approximation
algorithms