Fast Steiner tree computation in polynomial space - Lita
Fast Steiner tree computation in polynomial space - Lita
Fast Steiner tree computation in polynomial space - Lita
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4. (small k) Ifk≤ n/4, we apply our algorithm smallST:<br />
ste<strong>in</strong>er(G, T )=smallST(G, T ).<br />
5. (simple branch) If there is a non-term<strong>in</strong>al s adjacent to at least 3 term<strong>in</strong>als,<br />
we simply branch by either remov<strong>in</strong>g s from the graph, or by add<strong>in</strong>g it to<br />
the term<strong>in</strong>als:<br />
ste<strong>in</strong>er(G, T )=m<strong>in</strong>{ste<strong>in</strong>er(G \{s}, T), ste<strong>in</strong>er(G, T ∪{s})}.<br />
6. (multiple branch) Lettbea term<strong>in</strong>al of m<strong>in</strong>imum load accord<strong>in</strong>g to the<br />
def<strong>in</strong>ition above, and let s1,...,sp be the (not-term<strong>in</strong>al) neighbors of t,<br />
sorted <strong>in</strong> decreas<strong>in</strong>g number of adjacent term<strong>in</strong>als. We branch on the p subproblems<br />
obta<strong>in</strong>ed by remov<strong>in</strong>g s1,...,si−1, and add<strong>in</strong>g si to the term<strong>in</strong>als,<br />
for i ∈{1,...,p}:<br />
ste<strong>in</strong>er(G, T )= m<strong>in</strong><br />
i∈{1,...,p} {ste<strong>in</strong>er(G \{s1,...,si−1},T ∪{si})}.<br />
Observe that Algorithm ste<strong>in</strong>er does not work <strong>in</strong> the weighted case. This is<br />
essentially due to the fact that the Contraction Lemma 1 does not extend to<br />
such case. F<strong>in</strong>d<strong>in</strong>g an improved algorithm for the weighted <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong> problem<br />
is an <strong>in</strong>terest<strong>in</strong>g open problem.<br />
4 Analysis<br />
We next analyze algorithm ste<strong>in</strong>er with the Measure & Conquer technique<br />
described <strong>in</strong> [13,14]. Recall that nN = n − k is the number of non-term<strong>in</strong>als.<br />
Theorem 3. Algorithm ste<strong>in</strong>er solves the <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong> problem <strong>in</strong> O(1.6011 n )<br />
time and <strong>polynomial</strong> <strong>space</strong>.<br />
Proof. The correctness of the algorithm is not hard to check. For k ≤ n/4 the<br />
runn<strong>in</strong>g time of the algorithm is O ∗ (5.96 k )=O ∗ (5.96 n/4 )=O ∗ (1.5625 n ), so<br />
assume that <strong>in</strong>itially k>n/4. We let h := n + nN be the size of the problem,<br />
and denote by T (h) the time required to solve a problem of size h. We will show<br />
by <strong>in</strong>duction that T (h) =O ∗ (1.3086 h ). The claim follows s<strong>in</strong>ce, be<strong>in</strong>g nN ≤ 3n/4<br />
by assumption, O ∗ (1.3086 h )=O ∗ (1.3086 7n/4 )=O ∗ (1.6011 n ).<br />
Let poly(n) be the maximum (<strong>polynomial</strong>) time spent at each step of the<br />
algorithm (exclud<strong>in</strong>g the recursive calls). For h =0,k = 0 and hence T (h) ≤<br />
poly(n) =O∗ (1). Assume now that T (h ′ )=O∗ (1.3086h′ ) for any h ′