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.

<strong>in</strong> the current step. For subproblems of type (ii), the smaller is γ, the better<br />

is the recurrence obta<strong>in</strong>ed <strong>in</strong> the follow<strong>in</strong>g step. Optimiz<strong>in</strong>g γ ∈ (0, 1/15) we<br />

obta<strong>in</strong> the follow<strong>in</strong>g result, whose proof is omitted for lack of <strong>space</strong>.<br />

Theorem 2. For a proper choice of the parameter γ, the algorithm above solves<br />

the <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong> problem <strong>in</strong> time O(5.96knO(log k) ) and <strong>polynomial</strong> <strong>space</strong>.<br />

In the follow<strong>in</strong>g we will denote by smallST the algorithm of Theorem 2. We<br />

remark that smallST is not fixed-parameter-tractable because of the factor<br />

nO(log k) <strong>in</strong> its runn<strong>in</strong>g time. F<strong>in</strong>d<strong>in</strong>g a <strong>polynomial</strong>-<strong>space</strong> fixed-parameter-tractable<br />

algorithm for <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong> is left as a challeng<strong>in</strong>g open problem.<br />

3 Branch<strong>in</strong>g on Small-Load Term<strong>in</strong>als<br />

In this section we describe a simple, recursive algorithm ste<strong>in</strong>er for the <strong>Ste<strong>in</strong>er</strong><br />

<strong>tree</strong> problem, tak<strong>in</strong>g O(1.5949n ) time and <strong>polynomial</strong> <strong>space</strong>. Our algorithm computes<br />

the size stG(T ) of an optimal <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong>, but it can be easily modified <strong>in</strong><br />

order to produce one optimal <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong>.<br />

The ma<strong>in</strong> idea beh<strong>in</strong>d our approach is as follows. If k ≤ cn for a suitable<br />

constant c < 1, it is convenient to use the O(5.96knO(log k) ) algorithm from<br />

Section 2. Otherwise, there must be a term<strong>in</strong>al t which is at distance at most<br />

one from “many” other term<strong>in</strong>als. Thus, if by branch<strong>in</strong>g we add to T one or more<br />

non-term<strong>in</strong>als adjacent to t, we can contract a “large” connected component of<br />

term<strong>in</strong>als afterwards (us<strong>in</strong>g the Contraction Lemma 1). This phenomenon is not<br />

exploited <strong>in</strong> trivial enumeration, and it is at the base of our ref<strong>in</strong>ed branch<strong>in</strong>g<br />

algorithm.<br />

In order to formalize <strong>in</strong> a convenient way the mentioned phenomenon, we<br />

<strong>in</strong>troduce the follow<strong>in</strong>g def<strong>in</strong>ition of load of a term<strong>in</strong>al. Let each non-term<strong>in</strong>al<br />

node s ∈ N := V \ T be <strong>in</strong>itially assigned a load one. Node s evenly distributes<br />

its load among the term<strong>in</strong>als adjacent to it (if any). The f<strong>in</strong>al load w(t) ofeach<br />

term<strong>in</strong>al t is the sum of the loads received by its non-term<strong>in</strong>al neighbors. As it<br />

will be clearer from the analysis, we can branch efficiently on term<strong>in</strong>als of small<br />

load.<br />

We are now ready to describe algorithm ste<strong>in</strong>er:<br />

1. (base) If|T |∈{0, 1}, stG(T )=0:<br />

ste<strong>in</strong>er(G, T )=0.<br />

2. (contraction) If there is a connected component V ′ of at least 2 term<strong>in</strong>als,<br />

we apply Lemma 1. Let G ′ be the graph obta<strong>in</strong>ed from G by contract<strong>in</strong>g V ′<br />

<strong>in</strong> a node v ′ ,andletT ′ = T ∪{v ′ }\V ′ .Then<br />

ste<strong>in</strong>er(G, T )=|V ′ |−1+ste<strong>in</strong>er(G ′ ,T ′ ).<br />

3. (reduction) If there is a term<strong>in</strong>al t adjacent to a unique (non-term<strong>in</strong>al)<br />

node s, weadds to the term<strong>in</strong>als s<strong>in</strong>ce s must belong to any <strong>Ste<strong>in</strong>er</strong> <strong>tree</strong><br />

(be<strong>in</strong>g k ≥ 2):<br />

ste<strong>in</strong>er(G, T )=ste<strong>in</strong>er(G, T ∪{s}).

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

Saved successfully!

Ooh no, something went wrong!