1 A Faster Approximation Algorithm For The Steiner Problem In Graphs Kurt Mehlhorn. Information Processing Letters, 27(3):125–128, 高等演算法二 吳明峰
2 Introduction Definition: Steiner Tree A Steiner tree is a tree in a distance graph which spans a given subset of vertices (Steiner Points) with the minimal total distance on its edges INPUT: an undirected distance graph G=(V,E,d) and a set of Steiner points S. OUTPUT: a Steiner tree, T, for G and S. (Minimum-cost tree T within G spanning S.) The problem has been shown to be NP- complete in 1972.
3 Introduction L. Kou, G. Markowsky, and L. Berman. A fast algorithm for Steiner trees. Acta Informatica, 15: , Time complexity: L is the mininmun number of leaves in any Steiner minimal tree for the given graph.
4 Algorithm H: Steiner Tree INPUT: an undirected distance graph G=(V,E,d) and a set of Steiner points. OUTPUT: a Steiner tree, T, for G and S. (Minimum-cost tree T within G spanning S.) L. Kou, G. Markowsky, and L. Berman. A fast algorithm for Steiner trees. Acta Informatica, 15: , 1981.
5 Step 1 Construct the complete distance G 1 =(V 1, E 1, d 1 ), where V 1 =S and, for every (v i, v j ) E 1,d 1 (v i, v j ) is equal to the distance of a shortest path form v i to v j in G. Example: Let S=(V 1, V 2, V 3, V 4 ) G G1G1 Using Fredman and Tarjan’s [1] implementation of Dijkstra’s algorithm. Dijkstra’s algorithm [1] M. L. Fredman and R. E. Tarjan, Fibonacci heaps and their uses in improved network optimization algorithms, (IEEE 1984)
6 Step 2 Find a minimum spanning tree G 2 of G 1. G1G1 G2G2
7 Step 3 Construct a subgraph G 3 of G by replacing each edge in G 2 by its corresponding shortest paths in G (If there are several shortest paths, pick an arbitrary one.) GG2G2 G3G3
8 Step 4 Find a minimum spanning tree G 4 of G 3. G3G3 G4G4
9 Step 5 Construct a Steiner tree G 5 from G 4 by deleting edges in G 4, if necessary, so that no leaves in G 5 are Steiner vertices. G4G4 G5G5
10 Time Complexity
11 For every vertex let N(s) be the set of vertices in V which are closer to s than to any other vertex in S. for
12 We consider the subgraph of G 1 defined by = {(s, t); and there is an edge with }
13
14 Lemma (a) There is a minimum spanning tree G 2 of G 1 which is a subgraph of G 1 ’. Moreover, d 1 and d 1 ’ agree on the edges of this tree.
15 Lemma (b) Every minimum spanning tree of G 1 ’ is a minimum spanning tree of G 1.
16 We may replace step 1 of Algorithm H by constructing the auxiliary graph. The graph has only edges. Step 2. can be carried out in.
17 We can compute the partition by adjoining an auxiliary vertex s 0 and edges (s 0, s),,of length 0 to G and then performing a single source shortest path computation with source s 0. This takes time and yields for every vertex v the vertex with and the distance.
18 Next we go through all the edges (u, v) in E and generate the triples We sort these triples by bucket sort [5] according to the first two components and then select for each edge of the minimum cost. All of this takes time. [5] K. Mehlhorn. Data Structures and Efficient Algorithms. EATCS Monographs. Springer, 1984.
19 Time Complexity Step 1. Step 2. Step 3. Step 4. Step 5. Total Minimum spanning tree
20 Theorem For a connected, undirected distance graph G=( V,E, d ) and a set of vertices, a Steiner tree G s for G and S with total distance at most times that of a Steiner minimal tree for G and S can be computed in time.