11.12.2012 Views

Fast Steiner tree computation in polynomial space - Lita

Fast Steiner tree computation in polynomial space - Lita

Fast Steiner tree computation in polynomial space - Lita

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.

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 ′

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

Saved successfully!

Ooh no, something went wrong!