18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Steiner Tree<br />

<strong>The</strong> worst case for a minimum spanning tree approximation of the Euclidean distance problem is three<br />

points forming an equilateral triangle. <strong>The</strong> minimum spanning tree will contain two of the sides (for a<br />

length of 2), whereas the minimum Steiner tree will connect the three points using an interior point, for a<br />

total length of . This ratio of is always achieved, and in practice the easily-computed<br />

minimum spanning tree is usually within a few percent of the optimal Steiner tree. For rectilinear Steiner<br />

trees, the ratio with rectilinear minimum spanning trees is always .<br />

Such a minimum spanning tree can be refined by inserting a Steiner point whenever the edges of the<br />

minimum spanning tree incident on a vertex form an angle of less than 120 degrees between them.<br />

Inserting these points and locally readjusting the tree edges can move the solution a few more percent<br />

towards the optimum. Similar optimizations are possible for rectilinear spanning trees.<br />

An alternative heuristic for graphs is based on shortest path. Start with a tree consisting of the shortest<br />

path between two terminals. For each remaining terminal t, find the shortest path to a vertex v in the tree<br />

and add this path to the tree. <strong>The</strong> time complexity and quality of this heuristic depend upon the insertion<br />

order of the terminals and how the shortest-path computations are performed, but something simple and<br />

fairly effective is likely to result.<br />

Implementations: Salowe and Warme [SW95] have developed a program for computing exact<br />

rectilinear Steiner minimal trees. It is available by anonymous ftp from ftp.cs.virginia.edu in the directory<br />

pub/french/salowe/newsteiner.tar.Z. It should be capable of handling up to 30 points routinely. A<br />

heuristic program by Robins and Zhang is available from the algorithm repository<br />

http://www.cs.sunysb.edu/ algorith.<br />

PHYLIP is an extensive and widely used package of programs for inferring phylogenic trees. It contains<br />

over twenty different algorithms for constructing phylogenic trees from data. Although many of them are<br />

designed to work with molecular sequence data, several general methods accept arbitrary distance<br />

matrices as input. With versions written in C and Pascal, it is available on the WWW from<br />

http://evolution.genetics.washington.edu/phylip.html.<br />

Notes: <strong>The</strong> most complete reference on the Steiner tree problem is the monograph by Hwang, Richards,<br />

and Winter [HRW92]. Surveys on the problem include [Kuh75]. Steiner tree problems arising in VLSI<br />

design are discussed in [KPS89, Len90]. Empirical results on Steiner tree heuristics include [SFG82,<br />

Vos92].<br />

<strong>The</strong> Euclidean Steiner problem dates back to Fermat, who asked how to find a point p in the plane<br />

minimizing the sum of the distances to three given points. This was solved by Torricelli before 1640.<br />

Steiner was apparently one of several mathematicians who worked the general problem for n points, and<br />

he was mistakenly credited with the problem. An interesting, more detailed history appears in [HRW92].<br />

file:///E|/BOOK/BOOK4/NODE181.HTM (3 of 4) [19/1/2003 1:31:31]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!